1.什么是InnoDB引擎?
      InnoDB引擎是MySQL数据库的另一个重要的存储引擎,正成为目前MySQL AB所发行的新版的标准,被包含在所有二进制安装包里,和其他存储引擎相比,InnoDB引擎的优点是支持兼容ACID的事务(类似于PostgreSQL),以及参数完整性(有外键)等.现在Innobase实行双认证授权.MySQL5.5.5以后默认的存储引擎都是InnoDB引擎.

2.InnoDB的引擎特点.

1).支持事务(事务是指逻辑上的一组操作,组成这组操作的各个单元,要么全成功,要么全失败)

2).行级锁定(更新时一般是锁定当前行):通过索引实现,全表扫描仍然会是锁定整个表,注意间隙锁的影响.

3).读写阻塞与事务隔离级别相关.

4).具有非常高效的缓存特性,能缓存索引,也能缓存数据.

5).整个表和主键以Cluster方式存储,组成一颗平衡树.

6).所有Secondary Index 都会保存主键信息.

7).支持分区,表空间.类似于Oracle数据库.

8).支持外键约束,不支持全文索引,5.5之前支持,后面不再支持.

9).和MyISAM相比,InnoDB对于硬件资源要求比较高.

3.InnoDB引擎的适用的生产场景

1).需要支持事务的业务(例如转账,付款)

2).行级锁定对于高并发有很好的适应能力,但是需要保证查询是通过索引完成.

3).数据读写及更新都比较频繁的场景,如:BBS,SNS,微博,微信等.

4).数据一致性要求很高的业务.如:转账,充值等.

5).硬件设备内存较大,可以很好利用InnoDB较好的缓存能力来提高内存利用率,尽可能减少磁盘IO的开销.

4.InnoDB引擎调优精要:

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).避免主键更新,因为这会带来大量的数据移动.

最新文章

  1. 库AFNetworking的使用
  2. JAVA面向对象-多态的理解
  3. 例子:Database - Linq to sql
  4. Mir2源码详解之服务端-选择(角色)网关(SelGate)
  5. 【转】java 访问.net webservice返回的数据集
  6. C#网络资源列表
  7. Liferay 6.1开发学习
  8. Setup SSH and SVN on Windows Server
  9. 使用Hamcrest增强JUnit的测试能力
  10. CSS3学习之——【特殊属性】
  11. JavaScript—Date对象详情
  12. vue 环境报错 chromedriver@2.44.1 install: `node install.js`
  13. 调用微信的扫一扫功能详解说明---(java 排坑版)
  14. 干掉hao123劫持浏览器主页
  15. 使用MSF打造各种ShellCode
  16. ES Route
  17. Dynamics 365Online Server-Side OAuth身份认证
  18. Spring之Method Injection
  19. Unity3d-通过简单示例来理解Time.deltaTime
  20. python---django中form组件(数据添加前使用自定义方法<django预留扩展点3个>进行验证,以及源码分析)

热门文章

  1. select + range + insertNode+offset
  2. ==、equals与hashCode
  3. 20145210姚思羽《网络对抗》MSF基础应用实验
  4. Qt如何重写虚函数
  5. Android修改init.rc和init.xx.rc文件【转】
  6. Go Log模块生成日志文件
  7. 通过代码或者配置文件 对log4net进行配置
  8. QT QFtp使用实例 从FTP下载一个文件
  9. UOJ180 【UR #12】实验室外的攻防战
  10. C++(十四) — 常用快捷键总结