Mysql

MySQL死锁

MySQL死锁是指多个事务之间,由于每个事务持有另一个事务所需的锁而无法继续执行的情况。因所有事务都在等待相同的资源变得可用,而没有一个事务释放它所持有的锁。

多个事务以相反的顺序锁定多个表中的行(通过诸如UPDATE或SELECT ... FOR UPDATE之类的语句),就可能发生死锁。

死锁也可能发生在这些语句锁定索引记录和间隙范围时,每个事务获取一些锁但由于时间问题而没有获取其他锁。

...

MySQL显式锁简单介绍

对于MySQL数据库而言, 事务的隔离级别在不同程度上保证了数据一致性。

我们知道,事务的四大特性:原子性、一致性、隔离性、持久性,其中隔离性就是通过锁机制来保证的。

另外3个性质,通过MySQL的redo logundo log来保证。

MySQL对每条SQL语句的执行,都添加了一个隐式事务,言外之意,就是添加了隐式锁。

除了隐式锁之外,MySQL还可以使用显式锁。

这是从锁的可见性(或者使用方式)上来区分锁。本文不讨论MySQL的粒度锁(表锁,行锁,页锁)。

...

事务隔离级别与MVCC

开发过程中,或多或少会碰到需要使用数据库事务的业务场景,而Spring框架提供的能力使得开发者无需过多地关注事务本身,这带来诸多便利,但也带来弊端:开发者只知其貌,而不知其理,一旦Spring框架抛出异常,便往往手足无措。本文简单地介绍了MySQL事务相关的基本概念,使用例证阐述了不同事务隔离级别下MySQL的数据可见性,简单讨论了MySQL如何保证数据一致性。有了这些基本的概念,遇到事务与数据库锁相关的问题时,开发者能够多一点思考。

...

CentOS安装并配置MySQL

文章介绍了在centOS7上安装mysql数据库服务的配置及简单优化过程。在服务器上安装mysql服务网络上能够找到的资源很多了,因此本文没有作详细介绍,本文的重点在于后续的优化配置方面。

...

一个简单的sql优化示例

例如,我在执行以下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字符串处理函数

本文介绍了mysql的几个方便的字符串处理函数,通常用于简单的查询结果处理。适用在mapper.xml的语句标签中对数据库字段数据进行简单的处理。

...