博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
谈一谈对MySQL InnoDB的认识及数据库事物处理的隔离级别
阅读量:5346 次
发布时间:2019-06-15

本文共 908 字,大约阅读时间需要 3 分钟。

介绍:

  InnoDB引擎是MySQL数据库的一个重要的存储引擎,和其他存储引擎相比,InnoDB引擎的优点是支持兼容ACID的事务(类似于PostgreSQL),以及参数完整性(有外键)等。现在Innobase实行双认证授权.MySQL5.5.5以后默认的存储引擎都是InnoDB引擎。

特点是:

1、具有较好的事务支持:支持4个事务隔离级别,支持多版本读

2、行级锁定:通过索引实现,全表扫描仍然会是表锁,注意间隙锁的影响

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

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

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

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

适用场景:

1、需要事务支持(具有较好的事务特性)

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

3、数据更新较为频繁的场景

4、数据一致性要求较高

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

 

 

谈一谈数据库事务的隔离级别?

1、Read uncommitted(读未提交)就是一个事务可以读取另一个未提交事务的数据。

2、Read committed(读提交)就是一个事务要等另一个事务提交后才能读取数据。

3、Repeatable read(重复读)就是在开始读取数据(事务开启)时,不再允许修改操作。

4、Serializable(序列化)在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。是最高的事务隔离级别,但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用。

 

事务的作用就是保证数据的一致性、完整性。事务隔离级别越高,在并发下会产生的问题就越少,但同时付出的性能消耗也将越大,因此很多时候必须在并发性和性能之间做一个权衡。所以设立了几种事务隔离级别,以便让不同的项目可以根据自己项目的并发情况选择合适的事务隔离级别,对于在事务隔离级别之外会产生的并发问题,在代码中做补偿。

 

转载于:https://www.cnblogs.com/cocoxu1992/p/10671006.html

你可能感兴趣的文章
内表数据量过大时,拆分内表,分批次处理。
查看>>
android studio 断点调试和高级调试
查看>>
建造者模式
查看>>
WinForm中预览Office文件
查看>>
oracle 用户创建、修改、删除
查看>>
spring ApplicationContext中Bean的生命周期
查看>>
几句话总结一个算法之Q-Learning与Sarsa
查看>>
MFC获得当前应用程序目录的GetCurrentDirectory()和GetModuleFileName()函数
查看>>
Android学习路线01
查看>>
浅析Hibernate映射(二)——关系映射(5)
查看>>
git报错
查看>>
LeetCode-Valid Parentheses
查看>>
LeetCode-Palindrome Partitioning
查看>>
jqgrid学习
查看>>
Android反编译
查看>>
Solr5.5.1 IK中文分词配置与使用
查看>>
【2011 Greater New York Regional 】Problem B The Rascal Triangle
查看>>
ServletConfig
查看>>
Spring RestTemplate get post 请求 携带 headers
查看>>
【原创】linux php环境安装,与wordpress安装
查看>>