[学习笔记] MySQL数据库基础之事务
多仔ヾ 发布于 2021-11-08 •
817 阅读
首页
·
随笔
·
生活
·
学习
·
搜索
·
·
时光大概如你所说,活在当下,看见远方。 - @多仔ヾ
##### 事务操作 1、事务:是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系 统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 2、事务控制: (1)查看/设置事务提交方式: ```sql SELECT @@autocommit; SET @@autocommit = 0; ``` (2)提交事务: ```sql COMMIT; ``` (3)回滚事务: ```sql ROLLBACK; ``` (4)开启事务: ```sql START TRANSACTION; # 或 BEGIN; ``` 2、事务操作: (1)数据准备: ```sql CREATE TABLE account( id INT PRIMARY KEY AUTO_INCREMENT COMMENT 'ID', name VARCHAR(10) COMMENT '姓名', money DOUBLE(10,2) COMMENT '余额' ) COMMENT '账户表'; INSERT INTO account(name, money) VALUES ('张三',2000), ('李四',2000); ``` (2)正常测试: ```sql # 查询张三余额 SELECT * FROM account WHERE name = '张三'; # 张三的余额减少1000 UPDATE account SET money = money - 1000 WHERE name = '张三'; # 李四的余额增加1000 UPDATE account SET money = money + 1000 WHERE name = '李四'; ``` (3)异常测试: ```sql # 开启事务 START TRANSACTION; # 查询张三余额 SELECT * FROM account WHERE name = '张三'; # 张三的余额减少1000 UPDATE account SET money = money - 1000 WHERE name = '张三'; # 李四的余额增加1000 UPDATE account SET money = money + 1000 WHERE name = '李四'; # 如果正常执行完毕, 则提交事务 COMMIT; # 如果执行过程中报错, 则回滚事务 # ROLLBACK; ``` ----- ##### 事务特性(ACID) 1、原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。 2、一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。 3、隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。 4、持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。 ----- ##### 并发事务问题 1、 赃读:一个事务读到另外一个事务还没有提交的数据。 2、不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同。 3、幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在。 ----- ##### 事务隔离级别 1、事务隔离级别:事务隔离级别越高,数据越安全,但性能越低。 | 隔离级别 | 脏读 | 不可重复读 | 幻读 | | ----------------------- | ---- | ---------- | ---- | | Read uncommitted | √ | √ | √ | | Read committed | × | √ | √ | | Repeatable Read(默认) | × | × | √ | | Serializable | × | × | × | 2、事务隔离级别操作: (1)查看事务隔离级别: ```sql SELECT @@TRANSACTION_ISOLATION; ``` (2)设置事务隔离级别: ```sql SET [ SESSION | GLOBAL ] TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE } ```
如无特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:时光话 - https://www.l5v.cn/archives/348/
上一篇
[学习笔记] MySQL数据库基础之多表查询(二)
下一篇
[学习笔记] JVM之JVM简介
关于
·
归档
·
邻居
·
搜索
·
网站地图
© 时光话 /
闽ICP备17011403号