数据库
Mysql数据库学习!
yum安装mysql数据库
数据库基础知识
数据库条件约束
数据库用户及权限操作-DCL
数据库基础查询操作-DQL
数据库以及表结构操作-DDL
数据库表记录操作-DML
Mysql数据库常用安全加固设置
Redis数据库学习!
Redis数据库安装
SQL server数据库学习
SQL server2019基础安装
Mysql_windows安装
mysql数据库基本概念简介
数据库DQL操作
DDL数据库操作
数据库DML语句
DCL数据控制语句
多表查询
函数
事务
mysql存储引擎
mysql索引
mysql约束
mysql语句优化
本文档使用 MrDoc 发布
-
+
首页
事务
# 事务 一组操作的集合,把所有操作作为一个整体进行提交或者撤销,要么同时成功或者同时失败。 ## 事务操作 第一种方式修改当前回话的自动提交事务方式。 ```sql # 查看事务提交方式1为自动,0为手动 SELECT @@autocommit; # 设置事务提交方式 SET @@autocommit = 0; # 提交事务 COMMIT; # 事务执行失败回滚事务 ROLLBACK; ``` 第二种方式通过关键字开启事务。 ```sql # 开启事务 START TRANSACTION/BEGIN # 提交事务 COMMIT # 回滚事务 ROLLBACK; ``` ## 事务的特性(ACID) 1.原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。 2.一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。 3.隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。 4.持久性(Durability):事务一旦提交或回滚,它对数据库的数据改变就是永久的。 ## 并发事务问题 |问题|现象| |--|--| |脏读|一个事务读到另外一个事务还没有提交的事务| |不可重复读|一个事务先后读取同一条记录,但两次读取的数据不同,称为不可重复读。| |幻读|一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现数据已经存在。| ## 事务隔离级别 为了解决事务并发问题 1.Read uncommitted(读未提交),可能出现脏读、不可重复读、幻读的问题,性能最高,数据安全性最差 2.Read commited(读已提交),可能出现不可重复读以及幻读问题 3.Repeatable Read(可重复读,默认隔离级别),可能出现幻读问题 4.Serializable(串行化),解决3个并发事务问题,性能最低,数据安全性最高 ```sql # 查看事务隔离级别 SELECT @@TRANSACTION_ISOLATION; # 或者 SELECT @@tx_isolation; # 设置事务隔离级别 SET [SESSION|GLOBAL] TRANSACTION ISOLATION LEVEL {Read uncommitted|Read commited|Repeatable Read|Serializable} ```
Chuck
2023年6月21日 09:53
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码