1 MySQL存储引擎
动态表包括变长字段,记录不是固定长度的,优点是占空间相对较小,但是频繁更新删除会产生碎片,需要定期的执行OPTIMIZE语句或者myisamchk-r命令来改善性能,并且在出现故障时恢复较难;
InnoDB存储引擎提供了具有提交,回滚和崩溃恢复能力的事务安全.速度比MyISAM慢.
特点:
(1)自动增长列
自动增长列可以手工插入,但是插入的值是空或者是0时,实际插入的值是自动增长后的值.
(2)外键约束
MySQL支持外间的存储引擎只有InnoDB
(3)存储方式
InnoDB存储表和索引有以下两种方式
使用共享表空间存储
使用多表空间存储
7.2.3 MEMORY
MEMORY存储引擎使用存在于内存中的内容来创建表,每个MEMORY表只实际对应一个磁盘文件,格式是.frm.MEMORY类型的表访问数据非常的快,因为他的数据是存放在内存中的,并且默认使用HASH索引,也可以指定使用BTREE索引.主要用于那些内容变化不频繁的代码表,便于高效的对中间结果进行分析并得到最终的统计结果,对MEMORY表的数据更新要谨慎,因为数据没有写到磁盘中,而是在内存里,所以一定要对重启服务后如何获得这些修改后的数据有所考虑.
7.2.4 MERGE
MERGE存储引擎是一组MyISAM表的组合,这些MyISAM表结果必须完全相同,MERGE表本身并没有数据,对MERGE类型的表进行增改查的时候都是对内部的表的操作,删除操作DROP删除的是MERGE表的定义,对内部表无影响,对于MERGE类型的表的插入操作是INSERT_METHOD字句定义插入的表,有三个值,FIRST,LAST和NO,不写和NO一样,就不能对表进行插入操作.
7.2.5 TokuDB
前面介绍的都是MySQL自带的存储引擎,除此之外还有一些第三方存储引擎,比如列式存储引擎infobright,高写性能的压缩的TokuDB就是其中有代表性的两种
TokuDB是一个高性能,支持事务处理的MySQL和MariaDB的存储引擎,具有高扩展性,高压缩率,高效的写入性能,支持大多数的在线DDL操作.
特性:
(1)使用Fractal数索引保证高效的插入的性能;
(2)优秀的压缩特性,比InnoDB高近10倍;
(3)Hot Schema Changes特性支持在线创建索引和添加,删除属性列等DDL操作.
(4)使用Bulk Loader达到快速加载大量数据;
(5)提供了主从延迟消除技术
(6)支持ACID和MVCC
3 如何选择合适的存储引擎
在选择存储引擎时,应根据应用特点选择合适的存储引擎.对于复杂的应用程序,还可以根据实际情况选择多种存储引擎进行组合.
和大多数数据库不同,MySQL数据库是最重要的存储引擎的概念,针对不同的存储需求可以选择不同的存储引擎.
2.1 MyISAM
MySQL的默认存储引擎,不支持事务,也不支持外键,其优势是访问速度快.
MyISAM支持3种不同的存储格式:静态表,动态表,压缩表.
其中静态表是默认的存储方式.每个字段都是非变长字段,每个记录都是固定长度的.优点是存储非常迅速,容易缓存,出现故障容易修复,缺点是占用空间比动态表大,会对数据自动补空格,但是访问也访问不到,但是若存储的数据尾部是空格的话,再访问该条数据也会丢失空格;动态表包括变长字段,记录不是固定长度的,优点是占空间相对较小,但是频繁更新删除会产生碎片,需要定期的执行OPTIMIZE语句或者myisamchk-r命令来改善性能,并且在出现故障时恢复较难;
压缩表由myisampack创建,占用非常小的磁盘空间.
2.2 InnoDBInnoDB存储引擎提供了具有提交,回滚和崩溃恢复能力的事务安全.速度比MyISAM慢.
特点:
(1)自动增长列
自动增长列可以手工插入,但是插入的值是空或者是0时,实际插入的值是自动增长后的值.
(2)外键约束
MySQL支持外间的存储引擎只有InnoDB
(3)存储方式
InnoDB存储表和索引有以下两种方式
使用共享表空间存储
使用多表空间存储
7.2.3 MEMORY
MEMORY存储引擎使用存在于内存中的内容来创建表,每个MEMORY表只实际对应一个磁盘文件,格式是.frm.MEMORY类型的表访问数据非常的快,因为他的数据是存放在内存中的,并且默认使用HASH索引,也可以指定使用BTREE索引.主要用于那些内容变化不频繁的代码表,便于高效的对中间结果进行分析并得到最终的统计结果,对MEMORY表的数据更新要谨慎,因为数据没有写到磁盘中,而是在内存里,所以一定要对重启服务后如何获得这些修改后的数据有所考虑.
7.2.4 MERGE
MERGE存储引擎是一组MyISAM表的组合,这些MyISAM表结果必须完全相同,MERGE表本身并没有数据,对MERGE类型的表进行增改查的时候都是对内部的表的操作,删除操作DROP删除的是MERGE表的定义,对内部表无影响,对于MERGE类型的表的插入操作是INSERT_METHOD字句定义插入的表,有三个值,FIRST,LAST和NO,不写和NO一样,就不能对表进行插入操作.
7.2.5 TokuDB
前面介绍的都是MySQL自带的存储引擎,除此之外还有一些第三方存储引擎,比如列式存储引擎infobright,高写性能的压缩的TokuDB就是其中有代表性的两种
TokuDB是一个高性能,支持事务处理的MySQL和MariaDB的存储引擎,具有高扩展性,高压缩率,高效的写入性能,支持大多数的在线DDL操作.
特性:
(1)使用Fractal数索引保证高效的插入的性能;
(2)优秀的压缩特性,比InnoDB高近10倍;
(3)Hot Schema Changes特性支持在线创建索引和添加,删除属性列等DDL操作.
(4)使用Bulk Loader达到快速加载大量数据;
(5)提供了主从延迟消除技术
(6)支持ACID和MVCC
3 如何选择合适的存储引擎
在选择存储引擎时,应根据应用特点选择合适的存储引擎.对于复杂的应用程序,还可以根据实际情况选择多种存储引擎进行组合.
本文介绍了MySQL的多种存储引擎,包括默认引擎MyISAM的特点及三种存储格式:静态表、动态表和压缩表;InnoDB引擎支持事务安全和外键约束;MEMORY引擎用于内存表创建,适用于变化不频繁的数据;MERGE引擎作为MyISAM表的组合使用;以及第三方存储引擎TokuDB的特性。文章还讨论了如何根据应用特点选择合适的存储引擎。
990

被折叠的 条评论
为什么被折叠?



