MySQL实战(五)数据库事务
来源:互联网 发布:js隐藏table 编辑:程序博客网 时间:2024/06/05 19:47
1、Mysql数据库获取数据的时候可能出现的现象
脏读:当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个实物访问了这个数据,并且使用了这个数据。
不可重复读:在一个事务内,对一个数据进行了多次的读取;这个事务还没有结束的时候,另一个事务对数据进行了修改,导致第一个事务前后读取到的数据不一致,产生不可重复读。
幻读:第一个事务对表中的数据进行了修改,这种修改涉及到表的全部数据;第二个事务也修改了表中的数据,这种修改主要是向表中插入一条记录,导致操作第一个事务的用户发现表中还有没有修改的数据行,像是幻觉一样。
2、MySQL的隔离级别
针对出现的现象,MySQL标准定义了4类隔离级别,用来限定事务内外的哪些改变是可见的,哪些是不可见的。隔离级别由低到高:Read Uncommitted < Read Committed < Repeatable Read < Serializable。对应隔离级别产生的差异有:
===========================================================================================
隔离级别 脏读(Dirty Read) 不可重复读(NonRepeatable Read) 幻读(Phantom Read)
===========================================================================================
未提交读(Read uncommitted) 可能 可能 可能
已提交读(Read committed) 不可能 可能 可能
可重复读(Repeatable read) 不可能 不可能 可能
可串行化(Serializable ) 不可能 不可能 不可能
===========================================================================================
3、查看MySQL会话级别
可以通过以下查看全局和会话的隔离级别:
SELECT @@global.tx_isolation;SELECT @@session.tx_isolation;SELECT @@tx_isolation;设定数据库的实物隔离级别,可以通过
SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}
4、基于加锁的事务
MySQL锁有两种,shared lock 和exclusive lock,也称为读锁和写锁。
读锁根据锁住的数据不同,分为普通锁和谓词锁。谓词锁是指锁住满足某一查询条件的所有数据项,不仅包含当前数据库中的数据项,也包括即将插入、更新、删除的数据项。多个并发执行的事务是串行的。
- MySQL实战(五)数据库事务
- 数据库事务和锁(五)
- Spring学习笔记(五):数据库事务
- SQLite教程(五):数据库和事务
- MySql数据库常用命令(五)
- mysql数据库(五)用户权限
- MySQL数据库入门(五)
- MySQL(五)数据库操作
- 五分钟熟记数据库事务
- 详解Mysql分布式事务XA(跨数据库事务)
- 详解Mysql分布式事务XA(跨数据库事务)
- Mysql数据库事务详解
- 数据库---mysql 事务
- MySQL数据库事务简介
- MySQL数据库事务略知一二
- Mysql数据库事务详解
- mysql数据库事务
- mysql数据库事务
- 如何设计编写和设计软件测试用例?
- php的正则
- SVM源码
- 啃大部头的个人方法
- android 常用工具类
- MySQL实战(五)数据库事务
- Makefile 使用总结
- xilinx vivado zynq vdma仿真及应用详解(一)
- Maven自动部署Tomcat错误排除
- Python 动态规划 解决0-1背包问题
- centos7安装samba
- 从源码角度深入理解iScroll中的snap选项的含义
- MySQL通过sql语句获取当前日期|时间|时间戳
- RabbitMQ 实战教程(一)