Mysql数据库优化之存储引擎介绍

  1. MyISAM存储引擎
  2. InnoDB存储引擎
  3. MEMORY存储引擎
  4. MERGE存储引擎
  5. 指定存储引擎的脚本:在创建表的脚本的结束前加engine=innodb

MyISAM存储引擎不支持事务,也不支持外键。但是它的优势是访问速度快,对事务完整性没有要求或者以select 、insert为主的应用基本上可以用这个引擎来创建表。支持三种不同的存储结构:静态表、动态表、压缩表。
静态表:表中的字段都是非变长的字段,这样每个记录都是固定长度,优点是存储非常迅速,容易缓存,出现故障容易恢复;缺点是占用的空间通常比动态表多(因为存储时会按照列的宽度定义补足空格),另外在取数据的时候,默认把字段后面的空格去掉,如果不注意会把数据本身带的空格也忽略。
动态表:优点是记录不是固定长度,这样存储占用的空间相对比较少;缺点是频繁的更新、删除数据容易产生碎片,需要定期执行OPTIMIZE TABLE 或者myisamchk -r命令来改善性能。
压缩表:因为每个记录是被单独压缩的,所以只用非常小访问开支。

InnoDB存储引擎提供了提交、回滚、崩溃恢复能力的事务安全。但是对比MyISAM引擎,写的处理效率会差一些,并且会占用更多的磁盘空间以保留数据和索引。 支持自动增长列,和外键约束。

MEMORY存储引擎使用存在于内存中的内容来创建表。每个memory只实际对应一个磁盘文件,格式是.frm。memory类型的表访问非常快,因为它的数据放在内存中,并且默认使用hash索引,但是一旦服务关闭,表中的数据就会丢失掉。
memory存储引擎的表可以选择使用BTree和hash索引,两种不同的索引使用范围不同。
hash索引:
优点:hash索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree索引需要从跟节点到枝节点,最后才能访问到叶节点,这样多次的IO访问,所以hash索引的执行效率要远高于B-Tree索引。
缺点:hash索引是使用hash算法,hash算法只支持等值计算,对于非精确查询的情况,比如like等范围查找hash索引失效,不支持。
memory类型的存储引擎主要用于对于不频繁变化内容的表,或者作为统计操作的中间结果表,便于高效地对中间结果进行分析并得到最终的统计结果。对存储引擎memory的表进行更新操作要谨慎,因为数据并没有实际写入到磁盘中,所以一定要对下次重新启动服务后如何获得修改后的数据有所考虑。

MERGE存储引擎是一组MyISAM表的组合,这些MyISAM表的结构必须完全相同,merge表本身并没有数据,对merge类型的表操作进行查询、更新、删除操作,这些操作实际上是对内部的MyISAM表进行的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值