锁机制

来源:互联网 发布:crossover16破解版mac 编辑:程序博客网 时间:2024/06/07 03:36
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。
乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。

行锁,一般是指排它锁,即被锁定行不可进行修改,删除,只可以被其他会话select。行级锁之前需要先加表结构共享锁。

表锁,一般是指表结构共享锁锁,是不可对该表执行DDL操作,但对DML操作都不限制。
行级锁之前需要先加表结构共享锁。
页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。
共享锁【S锁】
又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
排他锁【X锁】
又称写锁。若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,其他事务不能再对A加任何锁,直到T释放A上的锁。这保证了其他事务在T释放A上的锁之前不能再读取和修改A。
独占锁是一种悲观保守的加锁策略,它避免了读/读冲突,如果某个只读线程获取锁,则其他读线程都只能等待,这种情况下就限制了不必要的并发性,因为读操作并不会影响数据的一致性。
更新锁
更 新 (U) 锁可以防止通常形式的死锁。一般更新模式由一个事务组成,此事务读取记录,获取资源(页或行)的共享 (S) 锁,然后修改行,此操作要求锁转换为排它 (X) 锁。如果两个事务获得了资源上的共享模式锁,然后试图同时更新数据,则一个事务尝试将锁转换为排它 (X) 锁。
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 wwe神秘人雷尔死亡事件 wwe神秘人雷尔 雷尼 雷山 雷山县 雷山小过 雷山小过卦详解 贵州省雷山县属于哪个市 贵州省雷山县 贵州雷山县属于哪个市 雷山县西江千户苗寨 雷峰塔门票 雷峰塔在哪 雷峰塔图片 雷峰塔景区 杭州雷峰塔 西湖雷峰塔 雷峰塔遗址 雷峰塔倒塌 雷峰塔影 雷峰夕照 杭州雷峰塔门票 雷峰塔景区旅游 雷峰塔的传说 雷峰塔发现青白两蛇 999842雷峰论坛 雷峰塔门票多少钱一张 综神话之雷峰塔掉下来 雷峰塔的故事 雷峰塔年薪8万招保安 雷峰塔门票价格 白娘子永镇雷峰塔原文 论雷峰塔的倒掉 雷州 雷州市 雷州歌全集 雷州歌 雷州古城 雷州话 广东雷州 雷州网