-
图灵机:一个参数,经过一个算法,返回一个数据的过程
查看全部 -
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)
持久性(扩展:持久性保证策略)
查看全部 -
时间戳分为: 逻辑时间戳和 物理时间戳, 逻辑时间戳只用来表示先后关系查看全部
-
Good查看全部
-
单机事务异常应对 回滚 系统down机:进入recovery模式,将提交后的事务单元继续完成,未提交完成的回滚重新提交 调优原则 减少锁的覆盖范围 增加锁上可并行的线程数 选择正确锁类型:悲观锁,使线程到blocking状态,通知信息ok的状态切换回等待状态,缺点是需要数据换入换出,适合并发争抢严重的场景;乐观锁,适合并发争抢不太严重的场景查看全部
-
1、多个事务的先后:SCN(oracle),TRX_id(Innodb),通过一个版本号的前后来区分操作的前后,是逻辑时间戳。 2、故障恢复:既是A原子性,事务回滚。当前事务的反向操作。系统崩溃时,在做数据回滚时,数据恢复时,不能让外部看见你的信息。 3、死锁与死锁检测:产生原因,当三个同时发生时,1、两个线程2,、不同方向3、相同资源。 4、死锁的解决方法;1、尽可能不死锁2、碰撞检测(通常用这个)(记录事务锁的状态)3、等锁超时(如果锁时间超过某个时间,直接抛错)查看全部
-
1、事务的核心就是锁和并发,优势是容易理解,劣势是性能比较低。 性能好,则锁的颗粒度比较低,增加了编程的难度。需要找到一个平衡。查看全部
-
持久性 事务完成后,该事务对数据库所做的更改便持久保存在数据库中 如何保证数据不丢 1.数据丢失原因:物理磁盘损坏,数据从内存写入磁盘的过程易丢失 2.解决:数据写入不同的磁盘;提交请求到内存后返回,将内存数据打包到磁盘查看全部
-
快照隔离性:将老版本生成快照,使得读老版本和写新版本并行 可针对读多写少的优化,能保证一致性的同时实现读未提交 快照读可映射到读未提交和读已提交 完全无锁 概念的含混源于定义落后于事物的发展,不是真正意义上对,只是标准 标准不一定是对的查看全部
-
一致性:保证能看到系统内的所有更改 在事务单元运行时将其上锁,将系统顺序化,保证一致性 隔离性:以性能为理由,对一致性的破坏,隔离是为了保证局部一致的前提下提高效率 排它锁(序列化读)-读写锁(可重复读,读锁不能被写锁升级,只能读读并行;读已提交,读锁可以被写锁升级;可读读,读写并行;读未提交,只加写锁,可读读,读写,写读并行,但问题是可能读到写过程中得数据) 快照隔离级别-多版本并发控制(MVCC)查看全部
举报