数据库引擎---MYISAM 和 InnoDB
2016-06-21 16:57:58 小德 MySQL 访问次数 1079



数据库引擎理解为用于存储、处理和保护数据的核心服务。

Mysql 常见的引擎  MYISAM 和 InnoDB。


MYISAM :
    1、不支持事务;
    2、MyISAM还使用一种表格锁定的机制,来优化多个并发的读写操作,其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。
    3、提供修复数据库文件的MyISAMCHK扩展工具修复浪费的空间
    4、快速读取,大多数虚拟主机提供商和INTERNET平台提供商只允许使用MYISAM格式
    5、缺陷不能在表损坏后恢复数据

索引:MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。

        同样也是一颗B+Tree,data域保存数据记录的地址。因此,MyISAM中索引检索的算法为首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,则取出其data域的值,然后以data域的值为地址,读取相应数据记录。(主键跟innoDB一样)


InnoDB :
    1、支持事务
    2、InnoDB是为处理巨大数据量时的最大性能设计,它的CPU效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的。

索引:

InnoDB的数据文件本身就是索引文件    表数据文件本身就是按B+Tree组织的一个索引结构,这棵树的叶节点data域保存了完整的数据记录。这个索引的key是数据表的主键,因此InnoDB表数据文件本身就是主索引。


适用情况:

    MYISAM (1)做很多count 的计算;(2)插入不频繁,查询非常频繁;(3)没有事务。

    InnoDB适合:(1)可靠性要求比较高,或者要求事务;(2)表更新和查询都相当的频繁,并且表锁定的机会比较大的情况。