数据库中的死锁问题

根本:数据库中的死锁问题,其实是由于间隙锁和插入意向锁不兼容

如何导致的死锁:

两个事务,事务A先获取相同区间的间隙锁,然后事务B也获取相同区间的间隙锁,这是两个事务都持有相同的间隙锁,间隙锁是不冲突的(间隙锁的意义只在于阻止区间被插入,因此是可以共存的。一个事务获取的间隙锁不会阻止另一个事务获取同一个间隙范围的间隙锁),但是两个事务不能同时获取一段位置的间隙锁和插入意向锁。

此时,事务A插入数据或者别的操作,检测到当前位置有间隙锁,会生成插入意向锁,锁的状态设置为等待状态,等待B的间隙锁释放;事务B插入数据,也检测到当前位置有间隙锁,也会生成插入意向锁,等待A的间隙锁释放,此时就发生了死锁。

解决办法:

死锁的四个必要条件:互斥、占有且等待、不可强占用、循环等待。只要系统发生死锁,这些条件必然成立,但是只要破坏任意一个条件就死锁就不会成立。

在数据库层面,有两种策略通过「打破循环等待条件」来解除死锁状态:

  • 设置事务等待锁的超时时间。当一个事务的等待时间超过该值后,就对这个事务进行回滚,于是锁就释放了,另一个事务就可以继续执行了。在 InnoDB 中,参数 innodb_lock_wait_timeout 是用来设置超时时间的,默认值时 50 秒。
  • 开启主动死锁检测。主动死锁检测在发现死锁后,主动回滚死锁链条中的某一个事务,让其他事务得以继续执行。将参数 innodb_deadlock_detect 设置为 on,表示开启这个逻辑,默认就开启。
Python基本语法面试考点包括以下内容: 1. Python的数据结构:了解Python中常用的数据结构,如列表、元组、字典和集合等。\[3\] 2. 列表和元组的区别:了解列表和元组的区别,包括可变性和使用场景等。元组是不可变的,而列表是可变的。\[3\] 3. 生成器和迭代器:了解生成器和迭代器的概念及其区别。生成器是一种特殊的迭代器,可以通过yield语句来生成值。\[3\] 4. 闭包和装饰器:了解闭包和装饰器的概念和作用。闭包是指一个函数内部定义的函数,可以访问外部函数的变量。装饰器是一种用于修改函数行为的函数。\[3\] 5. 匿名函数:了解匿名函数的概念和好处。匿名函数是一种没有函数名的函数,可以简化代码并提高可读性。\[3\] 6. 提高Python运行效率:了解如何提高Python的运行效率,包括使用适当的数据结构、避免不必要的循环和优化算法等。\[3\] 7. 类和继承:了解类和继承的概念,以及如何使用继承创建子类。可以通过编写一个继承的例子来展示对类和继承的理解。\[3\] 8. 深拷贝和浅拷贝:了解深拷贝和浅拷贝的概念和区别。深拷贝会创建一个完全独立的对象,而浅拷贝只是创建一个对象的引用。\[3\] 9. 常用模块:列举常用的Python模块,如os、sys、math和random等。\[3\] 10. Python的垃圾回收机制:了解Python的垃圾回收机制,即自动回收不再使用的内存空间。\[3\] 以上是Python基本语法面试考点的一些内容,掌握这些知识可以帮助你在面试中更好地回答相关问题。 #### 引用[.reference_title] - *1* *2* [【Python零基础到入门】Python基础语法篇——数字(Number) 学习 【文末送书】](https://blog.youkuaiyun.com/zhangay1998/article/details/121610567)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Python常考基础面试题](https://blog.youkuaiyun.com/yuan2019035055/article/details/122310494)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值