MySQL死锁
MySQL死锁是指多个事务之间,由于每个事务持有另一个事务所需的锁而无法继续执行的情况。因所有事务都在等待相同的资源变得可用,而没有一个事务释放它所持有的锁。
多个事务以相反的顺序锁定多个表中的行(通过诸如UPDATE或SELECT ... FOR UPDATE之类的语句),就可能发生死锁。
死锁也可能发生在这些语句锁定索引记录和间隙范围时,每个事务获取一些锁但由于时间问题而没有获取其他锁。
...MySQL死锁是指多个事务之间,由于每个事务持有另一个事务所需的锁而无法继续执行的情况。因所有事务都在等待相同的资源变得可用,而没有一个事务释放它所持有的锁。
多个事务以相反的顺序锁定多个表中的行(通过诸如UPDATE或SELECT ... FOR UPDATE之类的语句),就可能发生死锁。
死锁也可能发生在这些语句锁定索引记录和间隙范围时,每个事务获取一些锁但由于时间问题而没有获取其他锁。
...对于MySQL数据库而言, 事务的隔离级别在不同程度上保证了数据一致性。
我们知道,事务的四大特性:原子性、一致性、隔离性、持久性,其中隔离性就是通过锁机制来保证的。
另外3个性质,通过MySQL的
redo log
和undo log
来保证。
MySQL对每条SQL语句的执行,都添加了一个隐式事务,言外之意,就是添加了隐式锁。
除了隐式锁之外,MySQL还可以使用显式锁。
这是从锁的可见性(或者使用方式)上来区分锁。本文不讨论MySQL的粒度锁(表锁,行锁,页锁)。
...开发过程中,或多或少会碰到需要使用数据库事务的业务场景,而Spring框架提供的能力使得开发者无需过多地关注事务本身,这带来诸多便利,但也带来弊端:开发者只知其貌,而不知其理,一旦Spring框架抛出异常,便往往手足无措。本文简单地介绍了MySQL事务相关的基本概念,使用例证阐述了不同事务隔离级别下MySQL的数据可见性,简单讨论了MySQL如何保证数据一致性。有了这些基本的概念,遇到事务与数据库锁相关的问题时,开发者能够多一点思考。
...文章介绍了在centOS7上安装mysql数据库服务的配置及简单优化过程。在服务器上安装mysql服务网络上能够找到的资源很多了,因此本文没有作详细介绍,本文的重点在于后续的优化配置方面。
...例如,我在执行以下sql语句的时候
1SELECT projectId FROM lywl_equip_package WHERE salesId in (
2 SELECT
3 t1.id
4 FROM
5 cmp_datapackage_user t1
6 LEFT JOIN cmp_datapackage t2 ON t1.datapackage_id = t2.id
7 WHERE
8 t1.sales_cycle > 1
9 AND t1.is_valid = 1
10 AND t1.is_share = 0
11 AND t1.sales_price <> 9999
12 AND t1.sales_name REGEXP '移动.*/(季度|半年|年)'
13 AND t2.operator =1
14 AND t2.is_share = 1
15 AND t2.datapackage_cycle = 1
16 )
本文介绍了mysql的几个方便的字符串处理函数,通常用于简单的查询结果处理。适用在mapper.xml的语句标签中对数据库字段数据进行简单的处理。
...