1,事务具有acid特性
2,事务的隔离级别
事务的隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。MySQL事务包含4个隔离级别(从低到高)
1)read uncommitted(dirty read)也称读未提交。事务可以看到其他事务更改了但没有提交的数据,即存在脏读的情况。
2)read committed 也称读提交。事务可以看到在它执行的时候,其他事务已经提交的数据,已经被大部分数据库采用。允许不可重复读,但不允许脏读。
3)repeatable read 也称可重复读。同一个事务同一个查询请求多次执行,获得记录相同,但不能出现幻读。
4)serializable也称序列化,最高级别,解决了幻读。它将锁加在所有访问的数据上。
该锁把普通的select语句默认改成select 。。。lock in share mode。 即查询语句涉及到的数据加上共享锁,阻塞其他事务修改真实的数据。
如下命令查询当前事务的隔离级别 show variables like ‘%tx%’;
不建议更改innodb的事务隔离级别。一些传统的数据库,如oracle使用了read-commited的隔离级别。但是大部分场景下,MySQL的用户都是由默认的repeatable read,此隔离级别下使用的验证比其他的隔离级别完善的多,官方也不会对非默认级别充分验证。
innodb行锁
来源:https://www.cnblogs.com/xiaofeng0510/p/9220732.html