-
什么是事务?要做一个评论业务逻辑,在mysql里面要执行多条操作。数据库中要添加评论,要更新评论数,被评论的人要收到信息。这一系类的操作都要执行,这就涉及到了mysql的事务。
-
mysql默认为innodb引擎是支持事务的
-
在SQL语句中事务是要被打包在一起的
begin; insert into zhulin(name,age),values ("xxx",20); insert into pinglun(num,time),values (18,2019-7-24 14:11:30); commit;
-
如果有问题就会回滚(rollback)
-
总结:事务就是将多条sql语句变成一组
-
全局事务开启
set autocommit=0;
-
代表该数据库的所有操作不会自动进行提交,必须自己进行commit
-
如果不进行commit 不会写入硬盘 ,只是在内存中写
-
在高并发的情况下多个事务会操作同一张表为了事务之间相互不受影响,会将事务与事务之间设置隔离级别(设置一道墙)
-
查询事务隔离级别
select @@tx_isolation;
-
修改隔离级别
set session transaction isolation level serializable;
- 脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据
- 不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果不一致。
- 幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。
- 一般用第三个级别,第四个级别会出现锁表的现象
- 未完待续(锁的讲解)