标签:font width 通过 提交 tab mysql 数据不一致 逻辑 否则
在php与数据库的交互中,如果并发量大,并且都去进行数据库的修改的话,就有一个问题需要注意.数据的锁问题.就会牵扯数据库的事务跟隔离机制
数据库事务依照不同的事务隔离级别来保证事务的ACID特性,也就是说事务不是一开启就能解决所有并发问题。通常情况下,这里的并发操作可能带来四种问题:
通常数据库有四种不同的事务隔离级别:
隔离级别 | 脏读 | 不可重复读 | 幻读 |
Read uncommitted | √ | √ | √ |
Read committed | × | √ | √ |
Repeatable read | × | × | √ |
Serializable | × | × | × |
***
以mysql为例子:
myisam存储引擎使用表缩
innodb使用行锁(明确指定了主键的情况下,否则也是表锁)与表锁
一般的做法是:
1 开启事务
2 进行数据更改
3 回滚或者提交
在具体的业务逻辑中,由于隔离机制的不同,导致结果的不同.
乐观锁与悲观锁使用的也比较多.
由于悲观锁在开始读取时即开始锁定,因此在并发访问较大的情况下性能会变差。对MySQL Inodb来说,通过指定明确主键方式查找数据会单行锁定,而查询范围操作或者非主键操作将会锁表。
标签:font width 通过 提交 tab mysql 数据不一致 逻辑 否则
原文地址:http://www.cnblogs.com/pomeng/p/7515577.html