大数跨境

测试开发成长课堂——第十二期

测试开发成长课堂——第十二期 慧测
2019-09-11
1
导读:持续关注慧测,每天进步一点!讲师:房老师



持续关注慧测,每天进步一点!


讲师:房老师

本期语音讲解



各位测试界小伙伴们


大家好,我是慧测的房老师,


欢迎大家参加慧测的2019年系列微课程活动


本套课程主要分为两部分内容:


《每期一道名企面试题分析》


《每期5分钟测试开发小课堂》


目的是让大家利用好碎片化时间,每天积累一点技术。


在这门系列课程的每一期,我都会带领大家分析一道近期一线互联网公司测试开发笔、面试题。


让大家了解企业对技术的考察点,也帮助大家每期积累一个知识点。


本期要分析的是一道 数据库 相关的面试题。


有请题目登场:


简述你知道的mysql数据库死锁的产生原因



数据库和操作系统一样,是一个多用户使用的共享资源。


当多个用户并发地存取数据时,在数据库中会产生多个事务同时操作同一数据的情况。


若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库数据的一致性。


加锁是实现数据库并发控制的一个非常重要的技术。


在实际应用中经常会遇到的与锁相关的异常情况,当两个事务需要一组有冲突的锁,而不能将事务继续下去的话,就会出现死锁,影响应用的正常执行。


第一种:


     用户A访问表A(锁住了表A),然后又访问表B;另一个用户 访问表B(锁住了表B),然后企图访问表A;这时用户A由于用户B已经锁住表B,它必须等待用户B释放表B才能继续,同样用户B要等用户A释放表A才能继续,这就死锁就产生了。


第二种:


     用户A查询一条纪录,然后修改该条纪录;这时用户B修改该条记录,用户A的事务里锁的性质由查询的共享锁企图上升到独占锁,而用户B里的独占锁由于A 有共享锁存在所以必须等A释放掉共享锁,而A由于B的独占锁而无法上升的独占锁也就不可能释放共享锁,于是出现了死锁。

这种死锁比较隐蔽,但在稍大点的项目中经常发生。


第三种:


     如果在事务中执行了一条不满足条件的update语句,则执行全表扫描,把行级锁上升为表级锁,多个这样的事务执行后,就很容易产生死锁和阻塞。类似的情 况还有当表中的数据量非常庞大而索引建的过少或不合适的时候,使得经常发生全表扫描,最终应用系统会越来越慢,最终发生阻塞或死锁。



以上就是今天面试题分享的全部内容,我们下期再见。




提前祝大家中秋节快乐


关注慧测,每天进步一点。




- END -








上期回顾:




测试开发成长课堂——第十一期

测试开发成长课堂——第十期

测试开发成长课堂——第九期

测试开发成长课堂——第八期

测试开发成长课堂——第七期

测试开发成长课堂——第六期

测试开发成长课堂——第五期

测试开发成长课堂——第四期

测试开发成长课堂——第三期

测试开发成长课堂——第二期

测试开发成长课堂——第一期





慧测8月开班信息:

(别等啦,错过可能就是明年学习啦)

8月18日——自动化17期

8月18日——测试开发6期

8月18日——性能29期

8月18日——Python共享2期





欢迎加入我们:

慧测官网:www.huicewang.com

慧测Python群:324015481

公开课服务群:623636110

咨询QQ:2657535456

咨询微信号:huice666


慧测腾讯课堂 课程地址












【声明】内容源于网络
0
0
慧测
专注人工智能前沿技术落地企业实战应用
内容 404
粉丝 0
慧测 专注人工智能前沿技术落地企业实战应用
总阅读104
粉丝0
内容404