| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> MySQL事务(MVCC、锁机制) -> 正文阅读 |
|
[大数据]MySQL事务(MVCC、锁机制) |
【快速回顾】 MVCC以非阻塞的方式解决多事务读写冲突(实现事务隔离级别RC、RR)的问题, 锁的分类:
读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响。 写锁(排它锁):当前写操作没有完成前,它会阻断其他的写锁和读锁。 MySQL事务,ACID,即原子性、一致性、隔离性、持久性。它们分别对应的实现原理??? 锁机制和MVCC是为了解决多个连接或者多个事务并发访问的情况。其中MVCC以非阻塞的方式解决多事务读写冲突(事务隔离级别RR)的问题,锁机制解决多事务写写冲突和幻读的问题。 事务的隔离性分四种,读未提交,读已提交,可重复读,串行化。其中读未提交相当于没有事务控制,串行化其实就是加表锁,那么重点就是读已提交(RC)和可重复读(RR)。RC隔离级别可解决脏读问题,RR隔离级别解决不可重复读的问题。
读已提交(未加锁): 可重复读(行锁): 串行化(表锁): 多事务读写不加控制会导致数据隔离性的问题情景有:脏读、不可重复读、幻读/虚读
两个概念:当前读VS快照读。
MVCC,多版本并发控制,即一行数据可能存在多个不同的版本数据。在MySQL InnoDB中的实现主要是为了提高数据库并发性能,用更好的方式去处理读-写冲突(通过不加锁的方式实现RR隔离级别),做到即使有读写冲突时,也能做到不加锁,非阻塞并发读。MVCC解决了脏读和不可重复读的问题,实现了读已提交和可重复读的事务隔离级别。
MVCC都实现了RC和RR隔离级别,那么读已提交和可重复读级别下的InnoDB快照读有什么不同?或者说MVCC具体是怎么做来区分这两种隔离级别的?
MyISAM 与 InnoDB在事务上的区别: ????????1、MyISAM是非事务安全的,而InnoDB是事务安全的 ????????2、MyISAM锁的粒度是表级的,而InnoDB支持行级锁???????? ? ? ? ? 3、MyISAM管理非事务表,提供高速存储和检索以及全文搜索能力,如果在应用中执行大量select操作可选择。 ? ? ? ? 4、InnoDB用于事务处理,具有ACID事务支持等特性,如果在应用中执行大量insert和update操作,可选择。 ? ? ? ? 5、MyISAM支持全文类型索引,而InnoDB不支持全文索引 ? ? ? ? 6、MyISAM相对简单,小型应用可以考虑使用MyISAM ? ? ? ? 7、MyISAM表保存成文件形式,跨平台使用更加方便 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/28 7:03:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |