mysql 事务
来源:互联网 发布:html表白网页源码内容 编辑:程序博客网 时间:2024/05/16 12:11
事务的作用主要是保证:
1.数据的原子性
2.一致性
3.隔离性–事务之间不能相互影响.
4.持久性–一旦成功执行,则不能再改变
锁的主要作用是保证并发操作.
事务的隔离可以实现事务的并发,即多个事务同时执行.其实事务的隔离是通过锁机制实现的.
隔离级别
1.read uncommit 所有问题都不能解决
2.read commit 解决 问题1
只要别的事务提交了,其他事务立即可以查看到改变.
3.repeatable read (可重复读) 解决 问题 1,2
即每个事务session 中两条相同的语句查询结果是一致的;即使其他事务已经提交了更新数据.直到事务提交了才可以查看其他事务做出的改变.这样就保证了可重复读.
4.serializable (串行) 所有,但是可能导致大量锁等待.
不同的级别可以解决不同的并发问题.
问题有:
1.脏读 – 一个事务可以读取另一个事务未提交的数据.
2.不可重复读 –同一个事务内,两条相同的查询语句的结果不一致
3.幻读 – 别的事务已提交数据,但是在这个事务内看不见,但是也可以对这个看不见的数据进行删除更新等.
补充
用select @@session.tx_isolation; 可以查看当前回话的隔离级别.
select @@global.tx_isolation; 查看服务器全局的隔离级别.
repeatable read 虽然不能解决幻读的现象,例如 别的事务添加提交了一个id 为100 的数据,这个事务不能查看到这条数据,但是如果在这个事务中同样插入一条id 为100 的数据,会提示主键重复的错误.
解决:
在repeatable read 的级别下,新插入的语句添加一个read 锁.那么别的事务添加同一id 的记录时会阻塞.这样就可以避免幻读.
- mysql事务是事务
- mysql 事务
- mysql 事务
- mysql事务
- Mysql 事务
- mysql事务
- mysql事务
- mysql 事务
- mysql事务
- mysql 事务
- mysql事务
- MySQL事务
- mysql---事务
- MySQL事务
- Mysql事务
- mysql事务
- mysql-事务
- Mysql事务
- 基础总结篇之一:Activity生命周期
- 关于使用UIAlertView之后pop或者push时键盘闪退问题解决方法
- 基础总结篇之二:Activity的四种launchMode
- 对 Xcode 菜单选项的详细探索(干货)
- Android ThreadLocal工作原理
- mysql 事务
- Java 50线程面试题
- 双色Hanoi塔问题
- vim中文乱码以及gvim菜单乱码解决方法
- Jsp中<%page errorPage%>的使用
- RC4加密算法 解析及代码
- Python/requests&cookielib
- 中缀表达式求值
- Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist