1. InnoDB

InnoDB引擎特点:
    1.支持事务:支持4个事务隔离界别,支持多版本读。
    2.行级锁定(更新时一般是锁定当前行):通过索引实现,全表扫描仍然会是表锁,注意间隙锁的影响。
    3.读写阻塞与事务隔离级别相关(有多个级别,这就不介绍啦~)。
    4.具体非常高效的缓存特性:能缓存索引,也能缓存数据。
    5.整个表和主键与Cluster方式存储,组成一颗平衡树。(了解)
    6.所有SecondaryIndex都会保存主键信息。(了解)
    7.支持分区,表空间,类似oracle数据库。
    8.支持外键约束,不支持全文索引(5.5之前),以后的都支持了。
    9.和MyISAM引擎比较,InnoDB对硬件资源要求还是比较高的。

InnoDB引擎适用的生产业务场景
    1.需要事务支持(具有较好的事务特性,例银行业务)
    2.行级锁定对高并发有很好的适应能力,但需要确保查询是通过索引完成。
    3.数据更新较为频繁的场景,如:BBS(论坛)、SNS(社交平台)、微博等
    4.数据一致性要求较高的业务,例如:充值转账,银行卡转账。
    5.硬件设备内存较大,可以利用InnoDB较好的缓存能力来提高内存利用率,尽可能减少磁盘IO,可以通过一些参数来设置,这个就不细讲啦~~~
    6.相比MyISAM引擎,Innodb引擎更消耗资源,速度没有MyISAM引擎快

2. MyISAM

MyISAM引擎特点:
    1.不支持事务
        事务是指逻辑上的一组操作,组成这组操作的各个单元,要么全成功要么全失败。
    2.表级锁定
        数据更新时锁定整个表:其锁定机制是表级锁定,也就是对表中的一个数据进行操作都会将这个表锁定,其他人不能操作这个表,这虽然可以让锁定的实现成本很小但是也同时大大降低了其并发性能。
    3.读写互相阻塞
        不仅会在写入的时候阻塞读取,MyISAM还会再读取的时候阻塞写入,但读本身并不会阻塞另外的读。
    4.只会缓存索引
        MyISAM可以通过key_buffer_size的值来提高缓存索引,以大大提高访问性能减少磁盘IO,但是这个缓存区只会缓存索引,而不会缓存数据。
    5.读取速度较快
        占用资源相对较少
    6.不支持外键约束,但只是全文索引
    7.MyISAM引擎是MySQL5.5版本之前的默认引擎,是对最初的ISAM引擎优化的产物。


MyISAM引擎适用的生产业务场景
    1.不需要事务支持的业务(例如转账就不行,充值也不行)
    2.一般为读数据比较多的应用,读写都频繁场景不适合,读多或者写多的都适合。
    3.读写并发访问都相对较低的业务(纯读纯写高并发也可以)(锁定机制问题)
    4.数据修改相对较少的业务(阻塞问题)
    5.以读为主的业务,例如:www.blog,图片信息数据库,用户数据库,商品库等业务
    6.对数据一致性要求不是很高的业务。
    7.中小型的网站部分业务会用。

    小结:单一对数据库的操作都可以示用MyISAM,所谓单一就是尽量纯读,或纯写(insert,update,delete)等。
12-22 05:36