mysql提高(事务二十三)
来源:互联网 发布:网络购物商城 编辑:程序博客网 时间:2024/04/30 23:11
1: 事务的4个特性(ACID)
A:原子性:事务是最小的工作单元,不可再分割
C:一致性:事务要求所有的DML语句操作时,要么都成功,要么都失败
I:隔离性:事务A和事务B之间是隔离的,互不影响
D:持久性:是事物的保证,一旦发生永久性保存
2:关于事务的一些术语:
--1:开启事务: start transaction
--2:事务结束:end transacion
--3:提交事务: commit transaction
--4:回滚事务: rollback transaction
3:和事务有关的两条重要的SQL语句(TCL)
commit; 提交
rollback; 回滚
4:事务开启的标志是什么?事务结束的标志是什么?
开启的标志:
任何一条DML语句,insert,update,delete语句
结束的标志:
提交或者回滚
提交:成功的结束
回滚:失败的结束
5:重点:
在事务进行过程中,未结束之前,DML语句是不会更改底层数据库文件中的数据,只是将历史操作记录一下,在内存中完成记录,只有在事务结束的时候,而且是成功结束的时候才会修改底层硬盘文件中的数据
6:在mysql数据库中事务的提交与回滚演示:
mysql数据库默认情况下事务会自动提交,这种方式是可以手动关闭的,
当手动开启时,start transaction,则需要手动提交 commit transaction
insert into t_user(name) values('zhangsan');
Query OK, 1 row affected (0.07 sec)
Query OK, 1 row affected (0.07 sec)
mysql> insert into t_user(name) values('lisi');
Query OK, 1 row affected (0.06 sec)
Query OK, 1 row affected (0.06 sec)
mysql> select * from t_user;
+----+----------+
| id | name |
+----+----------+
| 1 | zhangsan |
| 2 | lisi |
+----+----------+
2 rows in set (0.01 sec)
+----+----------+
| id | name |
+----+----------+
| 1 | zhangsan |
| 2 | lisi |
+----+----------+
2 rows in set (0.01 sec)
mysql> start transaction
-> ;
Query OK, 0 rows affected (0.00 sec)
-> ;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into t_user(name) values('wangwu');
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
mysql> select * from t_user;
+----+----------+
| id | name |
+----+----------+
| 1 | zhangsan |
| 2 | lisi |
| 3 | wangwu |
+----+----------+
3 rows in set (0.00 sec)
+----+----------+
| id | name |
+----+----------+
| 1 | zhangsan |
| 2 | lisi |
| 3 | wangwu |
+----+----------+
3 rows in set (0.00 sec)
mysql> commit transaction;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'transaction' at line 1
mysql> commit;
Query OK, 0 rows affected (0.07 sec)
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'transaction' at line 1
mysql> commit;
Query OK, 0 rows affected (0.07 sec)
mysql> start transaction
-> ;
Query OK, 0 rows affected (0.00 sec)
-> ;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into t_user(name) values('maliu');
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
mysql> rollback;
Query OK, 0 rows affected (0.18 sec)
Query OK, 0 rows affected (0.18 sec)
mysql> select * from t_user;
+----+----------+
| id | name |
+----+----------+
| 1 | zhangsan |
| 2 | lisi |
| 3 | wangwu |
+----+----------+
3 rows in set (0.00 sec)
+----+----------+
| id | name |
+----+----------+
| 1 | zhangsan |
| 2 | lisi |
| 3 | wangwu |
+----+----------+
3 rows in set (0.00 sec)
7:事务的隔离级别(第二个级别最常用,mysql默认的是第三个级别)
第一个级别:读未提交 (最低级别)事务A未提交的数据,事务B可以读取到,这种数据成为“脏数据”,也叫"脏读") 一般是理论存在,数据库中默认的最低是第二级别
第二个级别:读已提交 (事务A提交后,事务B才可以读取到,可以避免“脏数据"),可能会发生,会导致”不可重复读取"
第三个级别:可重复读 (事务A提交后,事务B读取不到,可以避免“不可重复读取",会把数据放在缓存中,每次读取的是缓存中读取,结果一样,会导致"幻想读"
第四个级别:串行化 (最高级别):事务A在操作时,事务B只能在排队,可重复读,很少使用
8:设置事务隔离级别
1)通过修改配置文件的方式(my.ini)
阅读全文
0 0
- mysql提高(事务二十三)
- mysql进阶(二十三)数据库事务四大特性
- Mysql学习笔记二十三——事务
- 葵花宝典 二十三 事务与连接池
- javaWeb提高并发数之二十三条
- javaWeb提高并发数之二十三条
- javaWeb提高并发数之二十三条
- javaWeb提高并发数之二十三条
- MySQL安全的二十三条军规
- mysql 学习记录(十三)--事务与表锁
- mysql学习(二)事务
- mysql提高(索引二十四)
- MySQL系列(二)---MySQL事务
- Spring3.1.0实现原理分析(二十三).Dao事务分析之Hibernate事务管理器
- 二十三
- 二十三
- django使用事务提高插入mysql数据库速度
- MySQL之事务编程(二)事务控制语句
- lintcode(627)最长回文串
- 计算一个字段同时含有中英文的字数
- 基础搭建Hadoop大数据处理-编程
- Android 知识点梳理,较完整
- js获取当前系统时间
- mysql提高(事务二十三)
- 总结html上有什么会影响搜索引擎seo(更新1.1)
- RSA加密
- ubuntu笔记3
- 信息安全工程师 学习笔记(三十一)
- 百度地图获取的经纬度为4.9e-324,4.9e-324
- 建立二叉排序树
- java中多种写文件方式的效率对比实验
- CentOS 6.5 下安装 Redis 2.8.7