外观
事务的隔离级别
锁机制有效地解决了事务的并发问题,但也影响了事务的并发性能(并发指数据库系统同时为多个用户提供服务的能力)。当一个事务将其操纵的数据资源锁定时,其他欲操作该资源的的事务必须等待锁定解除,才能继续进行,这就降低了数据库同时相应多个用户的速度,因此合理地选择隔离级别关系到一个软件的性能。下面将对MySQL事务的隔离级别进行详细介绍。
事务的隔离级别与并发问题
数据库系统提供了4种可选的事务隔离级别,它们与并发性能之间的关系如下图。

各种隔离级别的作用如下。
- Serializable(串行化)。采用此隔离级别,一个事务在执行过程中首先要将其欲操纵的数据锁定,待事务结束后再释放。若此时另一个事务也要操纵该数据,必须等待前一个事务释放锁定后才能继续进行,两个事务实际上是以串行化方式运行的。
- Repeatable Read(可重复读)。采用此隔离级别,一个事务在执行过程中能够看到其他事务已经提交的新插入记录,看不到其他事务对已有记录的修改。
- Read Committed(读已提交数据)。采用此隔离级别,一个事务在执行过程中能够看到其他事务未提交的新插入记录,也能看到其他事务已经提交的对已有事务的修改。
- Read Uncommitted(读未提交数据)。采用此隔离级别,一个事务在执行过程中能够看到其他事务未提交的新插入数据,也能看到其他事务提交的已插入数据。
综上所述,并非隔离级别越高越好,对于多数应用程序,只需要把隔离级别设置车工Read Committed即可(尽管会出现一些问题)。
设置事务的隔离级别
MySQL中使用SET TRANSACTION ISOLATION LEVEL命令设置事务的隔离级别。新的隔离级别将在下一个事务开始时生效。
设置事务隔离级别的语法格式如下。
SET {GLOBAL|SESSION} TRANSACTION ISOLATION LEVEL 具体级别;触发器就是由事件来触发某个操作,这些事件包括INSERT、UPDATE和DELETE语句。当数据库系统执行这些事件时,就会激活触发器执行对应的操作。 满足触发器的触发条件时,数据库系统就会自动执行触发器定义的程序语句,可以令某些操作之间的一致性得到协调。