mysql 事务
2015-12-04 19:19
399 查看
事务的作用主要是保证:
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 join
- 5.mysql 连接字符串为空时的处理
- mysql 安装 同步备份
- mysql分表和表分区详解
- mysql -e与awk联合导出csv文件
- 当Navicat for Mysql出现 1045 -Access denied for user'root'@'ipAddress'(using password :yes)
- mysql5.7安装之后的初始化
- 解决mysql大小写敏感的问题
- Win下Mysql数据每日查询导出发送方案
- mysql常用指令
- 使用JDBC在MySQL数据库中快速批量插入数据
- mysql root用户没有超级权限或忘记密码
- 由于外键的存在引发的一个mysql问题 Cannot change column 'id': used in a foreign key constraint
- MySQL----mysql_secure_installation 安全配置向导
- MySQL内存使用 – 全局共享
- MySQL学习笔记
- MySQL 分区表详解
- mysql配置
- mysql做报表必知
- mysql limit后的注入