设为首页 收藏本站
查看: 874|回复: 0

[经验分享] MySQL锁和隔离机制

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-5-4 11:04:09 | 显示全部楼层 |阅读模式
一:MySQL
二:MySQL事务
三:MySQL隔离级别


1.1为什么要有锁?
    因为数据库要解决并发控制问题。在同一时刻,可能会有多个客户端对某张表的某条数据或某些数据进行操作,比如有的在读取该行数据,其他的尝试去删除它。为了保证数据的一致性,数据库就要对这种并发操作进行控制,因此就有了锁的概念。





1.2锁的分类
    1.2.1按对数据的操作类型
        LOCK TABLES tb_namelock_type{READ|WRITE};
        UNLOCKTABLES ;
        读锁(共享锁):针对同一块数据,多个读操作可以同时进行而不会互相影响。
                        写锁(排它锁):当前写操作没有完成前,它会阻断其他写锁和读锁。

        示例1:读锁
             wKiom1VC9CbSzxVtAAA6ZGUdQtI504.jpg
             wKioL1VC9ZDQKiT7AADDPCge_zM471.jpg
             wKiom1VC9Cejjw61AAA4KgRzG_s633.jpg
             wKioL1VC9ZGjtIayAAA6iT3Ep0I751.jpg





        示例2:写锁
               wKioL1VC7qeCaRh_AAA6KslPDO8516.jpg
               wKiom1VC7T7zcO48AABS8KsLa8U833.jpg
               wKioL1VC7qjQQTZhAABBqh-35tg792.jpg
               wKiom1VC7T_AGMk4AACPWT0b1II094.jpg



    1.2.2锁的粒度:MySQL服务器仅支持表级别的所,行所需要存储引擎完成
        表锁:管理锁的开销最小,同时允许的并发量也最小的锁机制。MyIsam存储引擎使用的锁机制。当要写入数据时,把整个表都锁上,此时其他读、写动作一律等待。在MySql中,除了MyIsam存储引擎使用这种锁策略外,MySql本身也使用表锁来执行某些特定动作,比如alter table.

        行锁:可以支持最大并发的锁策略。InnoDB存储引擎采用这种策略


2.1 ACID
    原子性(Autmic):事务所引起的数据库操作,要么都完成,要么都不执行

    一致性(Consistency):完成之前和完成之后是一样的(两个帐户的钱,转账之前和之后的总和是一样的)

    隔离性(Isolation):一个事务的执行不能影响另一个事务的执行

    持久性(Durability):一旦事务成功完成,系统必须保证任何故障都不能引起事务的不一致性。





2.2事务的状态
    wKioL1VC73HwsrA7AABnbwOC0Nk655.jpg




2.3保存点(SAVEPOINT
    一个很大的事务,这个事务有100个操作,执行到80个的时候发现第75个错了,怎么办?
    撤销??---->80个都撤销了--->不好

    这样就引出保存点了,每10个做一次保存点

    回滚保存点:ROLLBACK TO sid
    wKiom1VC7mnAA8ulAAC7hysEWlQ662.jpg


    示例:
    wKioL1VC7_Lj5ZSXAAGBV-cqaOk745.jpg
    wKiom1VC7onwZ5aTAAEdlwyOyB8628.jpg




3.1事务的隔离级别
    READ-UNCOMMITTED读未提交  别人一操作,立马就能看见(最低的隔离级别)

    READ-COMMITTED读提交  别人提交了,才能看见

    REPEATABLE-READ可重读
        (不管别的事务是否提交,我的事务之内看到的依然是一样的,例如A事务执行了UPDATE操   
            作,B事务执行SELECT操作,在A执行前和后,B执行的结果都一样)

    SERIALIZABLE可串行化

    查看当前数据库的隔离级别:
        SHOW GLOBAL VARIABLES LIKE '%ISO%';
        SELECT @@TX_ISOLATION;
    wKiom1VC71iyUJXCAADDSWomHqI791.jpg
    wKioL1VC8MOj8aOLAACxQZSftrQ310.jpg



3.2事务隔离级别对事务的影响
3.2.1READ-UNCOMMITTED示例
【客户端1
wKioL1VC8TWiPvY0AAD0sUUuyJs807.jpg

【客户端2
wKioL1VC8TbQSlh1AAD0pZ1I9Pg747.jpg

【客户端1
wKiom1VC782j1ilpAABbaZUxh-4108.jpg

【客户端2
wKioL1VC8TeAks-kAAC_aeRDYWk151.jpg

总结:客户端2在一个事务内,两次读取的数据不一样,产生了幻读


3.2.2READ-COMMITTED
【客户端1
wKiom1VC8FGAX6NQAAEHDELqyaI109.jpg

【客户端2
wKioL1VC8byCR9_CAADpXbcpHcQ182.jpg

【客户端1
wKiom1VC8FLQiiVzAABjI-fqTEU899.jpg

【客户端2
wKioL1VC8byyc3tFAAC5K_R6pps625.jpg

总结:客户端1未执行提交之前,客户端2看不到更新后的数据,客户端1执行提交之后,客户端2看到了更新以后的数据,客户端2在一个事务内,执行两次查询仍然看到了不同的结果,依然存在幻读的问题


3.2.3REPEATABLE-READ
【客户端1
wKioL1VC8jrAwMHIAADztu4tHZo856.jpg

【客户端2
wKiom1VC8NHDz1hbAAFVJz4nLCY905.jpg

【客户端1
wKioL1VC8jvxWBNHAABgf3i-FHM378.jpg

【客户端2
wKiom1VC8NKyFguaAADpcFW-jdk190.jpg
wKioL1VC8jyQhLR2AAC8JOvIWKk550.jpg


总结:客户端2在提交前和提交后看到的数据依然不一样,产生了幻读


3.2.4SERIALIZABLE
【客户端1
wKiom1VC8VbRARFdAADyOKN1dpc115.jpg

【客户端2
wKioL1VC8sDDlkdFAABbgzzpGs8240.jpg

【客户端1
wKiom1VC8VbwpyY0AABBT2POcqw740.jpg

【客户端2
wKiom1VC8VeSf3bQAACX2dqcDd0170.jpg

总结:虽然不存在数据幻读的问题,但是执行效率非常低






运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-63497-1-1.html 上篇帖子: MySQL 5.6.24 线上版本配置文件解析 下篇帖子: InnoDB memcached插件部署 隔离
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表