mysql锁和事务

孤街浪徒 提交于 2020-03-10 14:55:07

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行锁

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!