MySQL并发控制
来源:互联网 发布:linux netcat 安装包 编辑:程序博客网 时间:2024/06/15 11:14
并发控制手段有:
1.锁
2.时间戳
3.多版本(MVCC)和快照隔离
MVCC:每一个线程给一个时间副本,每一个线程对此数据操作,最后根据时间点来判断,合并数据。
锁可以分为:
读锁:读的时候其他线程可以读
写锁:独占锁,排他锁,加锁后其他线程不能读不能写,必须等待解锁。
根据锁粒度为:
表锁:整张表加锁。
页锁:部分数据加锁。
行锁:对其中某一行加锁。
对表加锁:LOCK TABLES tb_name {WRITE|READ}。
解锁试用:UNLOCK TABLES。
事务:多步操作要么同时成功,要么同时失败。
A:原子性,同时成功,同时失败(要么同时成功、要么同时失败,不会部分成功或失败)。
C:一致性,两条数据操作前和操作后结果一致(A-5 = B+5)。
I:隔离性,一个线程的执行不能影响其他线程的执行。
D:持久性,永久性,完成或者失败永久有效。
通过事务日志来保证事务的ACID:
同步写日志的速度是非常快的,不影响性能
重做日志:redo log可以无限次重新执行。
撤销日志:undo log保留执行前状态,可以还原回去。
表示每次先写日志,再做数据操作、如果事务提交前服务器挂机,服务启动时可以根据redo log重做日志重新执行
如果回滚,通过undo log 记录的操作前数据状态还原即可。
事务的隔离级别:
从低到高依次为:
读未提交:READ UNCOMMITED,只要操作马上对其他事务可见,隔离级别最低。
读提交:READ COMMITED,提交了对其他事务可见。
可重读:REPEATABLE READ,不管提交不提交,其他事务从开始到结束看到数据一致。
可串行:SERIALIABLE,只有本事务提交了,其他事务才可以执行,隔离几倍最高,效率最差。
MySQL 的innodb引擎默认为可重读级别。
先修改内存,过一段时间才同步到硬盘
如果在在写磁盘过程中出现异常,服务器崩溃,会在服务器启动时重新执行写磁盘操作,称做服务器修复。
事务的状态:
活动的
部分提交的
失败的
中止的
提交的
- Mysql并发控制
- Mysql并发控制
- Mysql并发控制
- MySQL并发控制
- 【MySQL】并发控制
- Mysql(1)并发控制
- 【MySQL】并发控制
- MySQL并发控制
- 并发控制 mysql InnoDB表锁
- 并发控制 mysql MyISAM表锁
- 并发控制 mysql MyISAM表锁
- 并发控制 mysql InnoDB表锁
- mysql多版本并发控制
- MySQL读书笔记-并发控制
- 并发控制 mysql MyISAM表锁
- MySQL读书笔记-并发控制
- 【MySQL】多版本并发控制
- MySQL 引擎 和 InnoDB并发控制 简介
- zebra获得接口的方法
- 树链剖分 - hdu5221 Occupation
- 关于View的dispatchEvent onTouch onTouchEvent
- GIT常用命令
- IOC/AOP随笔目录
- MySQL并发控制
- 此次文章,讲述的是导航控制器全屏滑动返回效果(抽屉式导航),而且代码量非常少,10行内搞定。
- 继续畅通工程
- servlet流方式上传与下载
- [自学AndroidStudio系列]新的开始:安装和导入原Eclipse项目
- java中static{}语句块详解 Class.forName()方法
- 【机器学习算法实现】主成分分析(PCA)——基于python+numpy
- 面试中经常出现的算法2(整理)
- ORA-12519 TNS no appropriate service handler found