1).支持事务(事务是指逻辑上的一组操做,组成这组操做的各个单元,要么全成功,要么全失败)数据库
2).行级锁定(更新时通常是锁定当前行):经过索引实现,全表扫描仍然会是锁定整个表,注意间隙锁的影响.缓存
3).读写阻塞与事务隔离级别相关.安全
4).具备很是高效的缓存特性,能缓存索引,也能缓存数据.微信
5).整个表和主键以Cluster方式存储,组成一颗平衡树.并发
6).全部Secondary Index 都会保存主键信息.高并发
7).支持分区,表空间.相似于Oracle数据库.spa
8).支持外键约束,不支持全文索引,5.5以前支持,后面再也不支持.日志
9).和MyISAM相比,InnoDB对于硬件资源要求比较高.blog
1).须要支持事务的业务(例如转帐,付款)索引
2).行级锁定对于高并发有很好的适应能力,可是须要保证查询是经过索引完成.
3).数据读写及更新都比较频繁的场景,如:BBS,SNS,微博,微信等.
4).数据一致性要求很高的业务.如:转帐,充值等.
5).硬件设备内存较大,能够很好利用InnoDB较好的缓存能力来提升内存利用率,尽可能减小磁盘IO的开销.
1).主键尽量小,避免给Secondary index带来过大的空间负担.
2).避免全表扫描,由于会使用表锁.
3).尽量缓存全部的索引和数据,提升响应速度,减小磁盘IO消耗.
4).在大批量小插入的时候,尽可能本身控制事务而不要使用autocommit自动提交,有开关参数能够控制提交.
5).合理设置Innodb_flush_log_at_trx_commit 参数值,不要过分追求安全性.
若是Innodb_flush_log_at_trx_commit的值为0,log buffer每秒就会被刷写日志文件进入磁盘,提交事务的时候不作任何操做.
6).避免主键更新,由于这会带来大量的数据移动.