mysql锁和事务

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

 

posted @ 2018-06-24 15:50  jianxiaofeng  阅读(118)  评论(0)    收藏  举报