所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。 数据库服务器、数据库和表的关系如下:
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品,只是存储引擎不同!
mysql -h 127.0.0.1 -P 3306 -u root -p
-h
选项默认是127.0.0.1 -P
默认是3306 后面有没有空格都是可以的
很多时候我们要使用本地Mysql服务的话,直接简写为:
mysql -uroot -p
使用services.msc
命令可以打开服务管理,来启动和关闭Mysql服务
《MySql服务器的启动和关闭》这篇文章就讲述了如何通过命令其启动和关闭Mysql
DDL数据定义语言,用来维护存储数据的结构
代表指令: create
、 drop
、alter
DML数据操纵语言,用来对数据进行行操作
代表指令: insert
、delete
、update
DML中又单独分了一个DQL,数据查询语言,代表指令: select
DCL数据控制语言,主要负责权限管理理和事务
代表指令: grant
、revoke
、commit
MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、Mac 和 Solaris。各种系统在底层实现⽅方⾯面各有不不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性:
说说这张图:
info
表中的字段是年龄(很显然这个额字段值是大于0的),如果你在查询的时候的SQL语句是select * form info where age=-10
,那么这条语句经过优化器之后不会再被执行,这就好像优化器知道不可能存在年龄小于0的条目InnoDB
,后面谈论存储引擎存储引擎是:数据库管理理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
MySQL的核心就是插件式存储引擎,支持多种存储引擎,所以你可以看到在Mysql的架构图上存储引擎的小插头,存储引擎是插拔式的,默认是InnoDB(从MySQL5.5.8开始,之前是MyISAM),当然也可以选择其他的存储引擎
使用show engines;
命令可以查看支持的存储引擎:
接下来说说他们的区别:
接下来说说他们的区别:
MyISAM是MySQL官方提供默认的存储引擎,其特点是不支持事务、表锁和全文索引,对于一些OLAP系统(OLAP 系统强调数据分析,强调SQL执行市场,强调磁盘I/O,强调分区等),操作速度快。关于《OLAP、OLTP的介绍和比较》
每个MyISAM在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别是.frm(存储表定义)、.MYD (MYData,存储数据)、.MYI (MYIndex,存储索引)。这里特别要注意的是MyISAM不缓存数据文件,只缓存索引文件。
InnoDB存储引擎支持事务,主要面向OLTP方面的应用,其特点是行锁设置、支持外键,并支持类似于Oracle的非锁定读,即默认情况下读不产生锁。InnoDB将数据放在一个逻辑表空间中。InnoDB通过多版本并发控制来获得高并发性,实现了ANSI标准的4种隔离级别,默认为Repeatable,使用一种被称为next-key locking的策略避免幻读。
对于表中数据的存储,InnoDB采用类似Oracle索引组织表Clustered的方式进行存储。
InnoDB 存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比Myisam的存储引擎,InnoDB 写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引
NDB存储引擎是一个集群存储引擎,类似于Oracle的RAC,但它是Share Nothing的架构,因此能提供更高级别的高可用性和可扩展性。NDB的特点是数据全部放在内存中,因此通过主键查找非常快。
关于NDB,有一个问题需要注意,它的连接(join)操作是在MySQL数据库层完成,不是在存储引擎层完成,这意味着,复杂的join操作需要巨大的网络开销,查询速度会很慢。
Memory存储引擎(之前称为Heap)将表中数据存放在内存中,如果数据库重启或崩溃,数据丢失,因此它非常适合存储临时数据。
正如其名称所示,Archive非常适合存储归档数据,如日志信息。它只支持INSERT和SELECT操作,其设计的主要目的是提供高速的插入和压缩功能。
Federated存储引擎不存放数据,它至少指向一台远程MySQL数据库服务器上的表,非常类似于Oracle的透明网关。
参考:《InnoDB与MyISAM两者的区别》 MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的SELECT查询,那么MyISAM是更好的选择。
InnoDB用于事务处理应用程序,具有众多特性,包括ACID事务支持。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能
查看Mysql已提供存储引擎
sqlshow engines;
查看Mysql默认存储引擎:
sqlshow variables like 'storage_engine';
查看某个表的存储引擎:
sqlshow create table 表名;
修改表的存储引擎:
sqlalter table 表名 engine=引擎
本文作者:Tim
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!