-
图灵机:一个参数,经过一个算法,返回一个数据的过程
查看全部 -
2PL,2阶段锁。2 phrase lock
2PC,2阶段提交事务,2 phrase commit
查看全部 -
MVCC:乐观锁
让版本低的并发更新回滚,优势是并发低时,性能好。代价是,并发高时,失败率高,需要不断重试
查看全部 -
死锁扩展:U锁
MVCC拾遗
Two Phase Lock (2PL)
查看全部 -
深度单击事务-小结:
ACID,原子性,一致性,
隔离性:读已提交
读未提交
可重复读
序列化读
扩展(快照隔离级别:MVCC / SNAPSHOT ISOLATION)用新方式实现传统意义上读未提交场景,同事保证可序列化的隔离级别。当写大于读时,会增加系统成本,MVCC适合读比写多的情况
持久性:1直接写入内存:优点是IOPS高,缺点是可能丢失数据
2 Group Commit ,将多次数据拼成一个包,优点是保证系统持久性和吞吐量,缺点是请求延迟提升。
查看全部 -
事务调优原则:
减少锁的覆盖范围:
Mysiam 表锁 -> Innodb 行锁
原位锁 -> MVCC多版本
增加锁上可并行的线程数:
读锁写锁分离,允许并行读取数据
多线程并行读取
允许多人读取
选择正确锁类型
悲观锁 使线程到blocking 状态,CPU不会调度他,当通知给它信息为ok状态时,切换回等待状态,CPU可以对它进行调度。最大的特点就是,换入换出增加系统开销。比较适合,并发争抢比较严重的场景
乐观锁 ,适合并发争抢不太严重的场景
查看全部 -
MVCC:可保证读写并行,写读并行
快照(snapshot isolation):针对度多写少场景优化;并行度能达到或超过读未提交,而隔离级别很高
读未提交:写加锁,但是读的话不加锁,会导致读到正在写的数据;
快照:保证读到一致性的同时,实现读未提交
事务:将多种不同的命令,组装到一起的过程
持久性:事务完成以后,该事务对数据库所做的更改,便持久的保存在数据库之中:
1 提交请求到内存后返回
2 将内存的数据打包到磁盘
隔离性(扩展:mvcc ,snapshot isolation)
持久性(扩展:持久性保证策略)
查看全部 -
事务:其本质是 锁和并发查看全部
-
读未提交查看全部
-
死锁产生原因:两个线程;分别拥有了对方想要获得资源,并且两个线程想要去拿对方锁定的资源;
解决方法:尽可能不死锁;碰撞检测(主流);等锁超时
查看全部 -
一个事务单元
查看全部 -
原子性
要么全部成功 要么全部失败
一致性
序列化读写(使用锁)
隔离性
读写锁 :-可重复读(repeatable read) 读读可以并行 读写不可以
-读已提交 (read committed) 读读并行 读写并行 (写读不行)
会出现不可重复读的问题,第一次读和第二次读的数据的版本号会不一致
-读未提交 (read uncommitted) 写加锁 读不加锁 , 读读 读写 写读并行 写写串行
会读到写中间数据
查看全部 -
4种隔离性查看全部
举报