本文更新于2019-06-23,使用Mysql 5.7,操作系统为Deepin 15.4。 目录InnoDBMyISAMMERGEMEMORYNDB常用存储引擎对比 和大多数数据库不同,插件式存储引擎是mysql最重要的特性之一。
本文更新于2019-06-23,使用Mysql 5.7,操作系统为Deepin 15.4。
目录
和大多数数据库不同,插件式存储引擎是mysql最重要的特性之一。
InnoDB表支持外键。创建外键时,要求父表必须有对应的索引,子表在创建外键时也会自动创建对应的索引。如父表被子表创建了外键索引,则父表的索引禁止被删除。在导入多个表的数据时,或在执行LOAD DATA
或ALTER TABLE
操作的时候,可以使用SET foreign_key_checks=0
关闭外键检查。执行完后,使用SET foreign_key_checks=1
重新打开。
InnoDB表自动增长列必需是索引,或组合索引的第一列。
InnoDB存储表和索引有以下两种方式:
innodb_data_home_dir
和innodb_data_file_path
定义的表空间中,可以是多个文件。使用参数innodb_file_per_table
可指定是否使用多表空间存储,并在重启服务器后,只且只对新建的表生效。使用多表空间存储的表,不能直接复制.frm和.ibd文件进行恢复,因为没有共享表空间的数据字典信息。但如恢复表到原来的数据库,可使用ALTER TABLE tablename DISCARD TABLESPACE
和ALTER TABLE tablename IMPORT TABLESPACE
。
InnoDB表没有表元数据的缓存(如行数,因而执行COUNT(*)
较慢)。
MyISAM表不支持事务,也不支持外键。
MyISAM表自动增长列可为组合索引的非第一列。
每个MyISAM在磁盘上存储成3个文件,数据文件和索引文件可以放置在不同的目录(需在创建表时通过DATA DIRECTORY
和INDEX DIRECTORY
指定)。其文件名和表名相同,扩展名分别是:
MyISAM表支持3种不同的存储格式:
MyISAM表有表元数据的缓存(如行数,因而执行COUNT(*)
较快)。
MERGE表是一组MyISAM表的组合,这些MyISAM表必须结构完全相同。MERGE表本身并没有数据,对其的任何操作实际上是对内部MyISAM表进行的。可以对MERGE表进行DROP
操作,其只是删除表定义,对内部的表没有影响。
MERGE表在磁盘中保存两个文件,文件名以表名开始,.frm存储表定义,.MRG包含组合表的信息,包括MERGE表由哪些表组成、插入新数据时的依据。可以通过修改.MRG文件来修改MERGE表,但修改后需使用FLUSH TABLES
刷新。
MEMORY表的数据放在内存中,每个MEMORY表只对应一个.frm磁盘文件。
在启动Mysql服务时使用--init-file
选项,把INSERT INTO ... SELECT
或LOAD DATA INFILE
写入文件中,就可在服务启动时从持久稳固的数据源装载表。定义MEMORY表的时候可通过MAX_ROWS
指定表的最大行数。
NDB存储引擎在MySQL Cluster中使用。
特点 | InnoDB | MyISAM | MERGE | MEMORY | NDB |
---|---|---|---|---|---|
存储限制 | 64TB | 有 | 没有 | 有 | 有 |
事务安全 | 支持 | ||||
锁机制 | 行锁 | 表锁 | 表锁 | 表锁 | 行锁 |
B树索引 | 支持 | 支持 | 支持 | 支持 | 支持 |
哈希索引 | 支持 | 支持 | |||
全文索引 | 支持 | ||||
集群索引 | 支持 | ||||
数据缓存 | 支持 | 支持 | 支持 | ||
索引缓存 | 支持 | 支持 | 支持 | 支持 | 支持 |
数据可压缩 | 支持 | ||||
空间使用 | 高 | 低 | 低 | N/A | 低 |
内存使用 | 高 | 低 | 低 | 中等 | 高 |
批量插入速度 | 低 | 高 | 高 | 高 | 高 |
支持外键 | 支持 |
--结束END--
本文标题: MySQL学习笔记(7):存储引擎
本文链接: https://lsjlt.com/news/6915.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0