数据库事务隔离级别
来源:互联网 发布:python 矩阵 查看 编辑:程序博客网 时间:2024/05/22 14:02
数据库事务:数据库事务是指作为单个逻辑单元执行的一系列操作,这些操作是一组不可分割的工作单位;
事务具有原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持久性(Durability);
原子性:事务所包含的操作要么全部成功,要么出错回滚;
一致性:事务必须使数据库从一个一致性状态变到另一个一致性状态,例如约束了a+b=10,一个事务改变了a,那么b的值随之变化;
隔离性:多个用户并发的访问数据库时,系统为一个用户开启的事务,不能被其他用户的事务所干扰;
持久性:提交的事务将永久的改变数据库;
在多个用户并发访问数据库时,系统就需要对各个事务进行隔离操作,否则容易出现数据不一致的情况,如:
更新丢失:1. 更新丢失:两个事务同时更新,第二个事务的回滚覆盖了第一个事务更新的数据;2. 第二类更新问题:两个数据都读取到数据,并同时更新,第一个事物的更新被第二个事务覆盖;
脏读:事务A读取到事务B还未提交的数据,然后事务B回滚操作,事务A就读到了脏数据;
不可重复读:事务A第一次读取数据之后,事务B修改了数据,事务A再次读取数据,读到的值与第一次不一致;
幻读:事务A读取范围数据时,事务B又添加或删除行,导致事务A读取到幻影行;
数据库提供了4种隔离级别,分别是:
读未提交(Read Uncommitted):只限制同一数据写事务禁止其他写事务,会引发脏读;
读提交(Read Committed):只限制同一数据写事务禁止其他读写事务,解决脏读、更新丢失,未解决不可重复读;
可重复读(Repeatable Read):限制同一数据写事务禁止其他读写事务,读事务禁止其它写事务(允许读)。解决不可重复读、更新丢失和脏读,未解决幻读,解决幻读需要增加范围锁或表锁;
序列化( Serializable):最严格的事务隔离,限制事务一个接一个的执行,没有并发;
数据库中除了MySQL默认为可重复读,大部分均为读提交;
参考博客:http://www.2cto.com/database/201603/495078.html
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- spark算子cogroup讲解
- Linux信号详解
- 404. Sum of Left Leaves
- 测试要求和指标
- TensorFlow入门-MNIST & softmax regression
- 数据库事务隔离级别
- Datatables v1.10服务端模式启动js-java版本
- 完美解决频繁跳槽者的两大求职难题
- 机器学习和统计里面的auc怎么理解?
- 用户登录网站
- ios UITextField 添加内边距 或者修改文字位置
- makefile 学习总结
- DVWA取消登录
- Android 4.1-4.2 默认窗体旋转180 度代码