首页 / MYSQL / mysql进阶知识点之事务
mysql进阶知识点之事务
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql进阶知识点之事务,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2847字,纯文字阅读大概需要5分钟。
内容图文
- MySQL 事务主要用于处理操作量大,复杂度高的数据。
- 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
- 事务用来管理 insert,update,delete 语句。
- 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
1、查看事务状态select @@autocommit ;查看事务是否开启自动,默认是自动开启的
2、set autocommit=0;关闭自动事务,每次sql语句后可以跟随rollback 回滚,不执行前一次sql
3、执行sql之前,写一个begain;sql语句1;sql语句2; 手动开启事务,可以rollback
4、start transaction;sql语句1;sql语句2; 手动开启事务,可以rollback。可以连续多次回滚。
5、在sql语句后写一个commit;就确认了,不能rollback,表示当前事务结束;
6、事务的特征ACID:
- 1)A 原子性Atomicity :事务是最小的单位,不可以再分割,事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做
- 2)C 一致性Consistency :事务要求同一事务的sql语句必须同时成功或同时失败;
- 3)I 隔离性Isolation :事务1和事务2之间是有隔离性的,不同事务之间不受影响;
- 4)D 持久性Durability :事务一旦结束,就不可返回。
7、事务开启:
1)修改默认提交:set autocommit=0;
begin;
start transaction;
2)事务手动提交:
commit;
3)事务手动回滚:
rollback;
8、事务的隔离性:
SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。
- 1)read uncommitted; 读未提交的。在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比 其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。
- 2)read committed; 读已提交的。这是大多数数据库系统的默认隔离级别(但 不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别 也支持所谓的不可重复读(Nonrepeatable Read), 因为同一事务的其他实例在该实例处理其间可能会有新的commit,所以同一select可能返回不同结果。
- 3)repeatable read; 可以重读。这是MySQL的默认事务隔离级别,它确保同一 事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题:幻读 (Phantom Read)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行。InnoDB和Falcon存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control)机制解决了该问题。
- 4)serialiable;可串行化。这是最高的隔离级别,它通过强制事务排序,使之不可 能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。
9、操作隔离级别:
1)查看隔离级别:
mysql8.0 系统级别 select @@global.transaction_isolation
会话级别 select @@transaction_isolation
msyql5.0 系统级别 select @@global.tx_isolation
会话级别 select @@tx_isolation
2)修改系统隔离级别:
set global transaction isolation level read committed;
set global transaction isolation level read uncommitted;
3)修改会话隔离级别:
set session transaction isolation level read committed;
内容总结
以上是互联网集市为您收集整理的mysql进阶知识点之事务全部内容,希望文章能够帮你解决mysql进阶知识点之事务所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。