[MySQL] 理解InnoDB并发高的原因
2023-02-18 15:37:14 时间
当对同一个资源进行并发操作时 , 非常需要保证并发安全 , 常见的并发控制手段演进如下
锁 : 操作数据前锁定 , 操作后释放 , 但是这样就相当于串行化了 , 并发度不高
读写锁 : 读数据的时候加读锁 , 不妨碍其他读 , 只有修改的时候加写锁 , 这时会妨碍其他的读和写操作
数据多版本 : 操作数据的时候拷贝一份 , 操作新的数据 , 其他并发读旧版本数据 , 这样就不会阻塞别的读了
InnoDB就是采用了数据多版本 , 也就是MVCC
当事务开始修改数据的时候 , 会把数据放到undo日志里 , 事务回滚的时候利用undo日志恢复数据
当事务修改完数据 , 提交后会记录到redo日志里 , 再定期从redo日志刷到磁盘上
提高并发的演进思路:
(1)普通锁,本质是串行执行;
(2)读写锁,可以实现读读并发;
(3)数据多版本,可以实现读写并发;
InnoDB并发高的原因是啥
普通的select读 , 是快照读 , 读取的旧版本的数据 , 这样的读是不需要进行加锁操作的 , 当然就特别快了
相关文章
- 记一次 .NET 某自动化采集软件 崩溃分析
- [C# 中的序列化与反序列化](.NET 源码学习)
- .NET 向量类型的运算结果范例——用于学习Vector类所提供百多个向量方法
- 树莓派(香橙派)通过.NET IoT 操作SPI编写屏幕驱动 顺手做个四足机器人(一)
- WPF自定义控件之消息提示
- .NET跨平台框架选择之一 - Avalonia UI
- 篇(16)-Asp.Net Core入门实战-权限管理之用户创建与关联角色(ViewModel再用与模型验证二)
- 学习ASP.NET Core Blazor编程系列十——路由(下)
- 代码生成器(CodeBuilder) 2.9.4 稳定版
- 篇(15)-入门实战-权限管理之用户创建与关联角色(ViewModel再用与模型验证一)
- 篇(14)-Asp.Net Core入门实战-权限管理之角色编辑和赋权(ViewModel-DTO初探)
- 算法-2 选择排序、冒泡排序、插入排序
- 篇(13)-Asp.Net Core入门实战-将功能代码增加异步功能Async和配置简单防范CSRF攻击
- NET 6 实现滑动验证码(一)、创建工程
- 算法-1 算法复杂度
- 在WPF中使用Prism弹出自定义窗体样式的对话框
- 使用Fody时,CS-SCRIPT动态代码无法找到程序集
- C# 使用SIMD向量类型加速浮点数组求和运算(3):循环展开
- aspnetcore两种上传图片(文件)的方式
- WPF输入验证提示