MySQL事务及隔离级别详解
MySQL事务及隔离级别详解
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
1 MySQL锁:可以手动使用,可以使用显示锁 2 存储引擎锁:自动进行的(隐式锁), 3 a>.显示锁: 4 lock tables:施加锁 5 LOCK TABLES:解锁 6 tbl_name lock_type 7 [, tbl_name lock_type] ... 8 READ | WRITE 锁的类型 9 unlock tables:解锁 10 b>.InnoDB存储引擎也支持另外一种显示锁(锁定挑选出的部分行,行级锁) 11 select .... lock in share mode 12 select .... for update
1 mysql> select database(); 2 +-------------+ 3 | database() | 4 +-------------+ 5 | yinzhengjie | 6 +-------------+ 7 1 row in set (0.00 sec) 8 9 mysql> 10 mysql> show tables; 11 +-----------------------+ 12 | Tables_in_yinzhengjie | 13 +-----------------------+ 14 | Classes | 15 | score | 16 | students | 17 | tearchers | 18 +-----------------------+ 19 4 rows in set (0.00 sec) 20 21 mysql> 22 mysql> 23 mysql> 24 mysql> desc Classes; 25 +-------------+-------------+------+-----+---------+-------+ 26 | Field | Type | Null | Key | Default | Extra | 27 +-------------+-------------+------+-----+---------+-------+ 28 | ClassID | tinyint(4) | NO | | NULL | | 29 | Class | varchar(50) | NO | | NULL | | 30 | ClassMember | tinyint(4) | NO | | NULL | | 31 +-------------+-------------+------+-----+---------+-------+ 32 3 rows in set (0.00 sec) 33 34 mysql> 35 mysql> lock tables Classes read; #将Classes 设置读锁 36 Query OK, 0 rows affected (0.00 sec) 37 38 mysql> select * from Classes; #发现即使配置给Classes表配置了读锁,当是我们可以进行读取操作。 39 +---------+--------------------------+-------------+ 40 | ClassID | Class | ClassMember | 41 +---------+--------------------------+-------------+ 42 | 7 | 木叶忍者村第七班 | 4 | 43 | 10 | 木叶忍者村第十班 | 3 | 44 | 8 | 木叶忍者村第八班 | 3 | 45 | 3 | 木叶忍者村第三班 | 3 | 46 +---------+--------------------------+-------------+ 47 4 rows in set (0.01 sec) 48 49 mysql> 50 mysql> insert into Classes value (1,'木叶忍者村第一班',5); #事假读锁之后发现无法向Classes表中插入数据 51 ERROR 1099 (HY000): Table 'Classes' was locked with a READ lock and can't be updated 52 mysql> 53 mysql> unlock tables; #现在我们进行一下解锁 54 Query OK, 0 rows affected (0.00 sec) 55 56 mysql> insert into Classes value (1,'木叶忍者村第一班',5); #解锁成功后,我们就可以可以插入数据啦。 57 Query OK, 1 row affected (0.03 sec) 58 59 mysql>
读锁案例展示
1 mysql> select database(); 2 +-------------+ 3 | database() | 4 +-------------+ 5 | yinzhengjie | 6 +-------------+ 7 1 row in set (0.00 sec) 8 9 mysql> . 10 mysql> lock tables Classes write; #对Classes 添加写锁 11 Query OK, 0 rows affected (0.00 sec) 12 13 mysql> 14 mysql> select * from Classes; #我们打开另外的一个中断,进程查询操作,发现一只没有数据返回,被阻塞了,需要等待Classes 这个表解除写锁(unlock tables;)才会返回数据哟
写锁案例展示
1 mysql> show table status like 'Classes'\G 2 *************************** 1. row *************************** 3 Name: Classes 4 Engine: InnoDB #注意,设置行所的话该表的存储引擎必须是InnoDB哟!如果你的存储引擎是MyISAM的话,生产环境中不建议你用alter命令修改存储属性,因为生产环境中的表特别大,修改的时间可能会等待很差时间的! 5 Version: 10 6 Row_format: Compact 7 Rows: 5 8 Avg_row_length: 3276 9 Data_length: 16384 10 Max_data_length: 0 11 Index_length: 0 12 Data_free: 4194304 13 Auto_increment: NULL 14 Create_time: 2017-11-20 02:30:11 15 Update_time: NULL 16 Check_time: NULL 17 Collation: utf8_general_ci 18 Checksum: NULL 19 Create_options: 20 Comment: 21 1 row in set (0.01 sec) 22 23 mysql> select * from Classes where ClassMember = 3 lock in share mode; #设置读锁 24 +---------+--------------------------+-------------+ 25 | ClassID | Class | ClassMember | 26 +---------+--------------------------+-------------+ 27 | 10 | 木叶忍者村第十班 | 3 | 28 | 8 | 木叶忍者村第八班 | 3 | 29 | 3 | 木叶忍者村第三班 | 3 | 30 +---------+--------------------------+-------------+ 31 3 rows in set (0.00 sec) 32 33 mysql> select * from Classes where ClassMember = 3 for update; #设置写锁 34 +---------+--------------------------+-------------+ 35 | ClassID | Class | ClassMember | 36 +---------+--------------------------+-------------+ 37 | 10 | 木叶忍者村第十班 | 3 | 38 | 8 | 木叶忍者村第八班 | 3 | 39 | 3 | 木叶忍者村第三班 | 3 | 40 +---------+--------------------------+-------------+ 41 3 rows in set (0.01 sec) 42 43 mysql> 44 mysql> select * from Classes ; #我们发现可以查询到Classes ,那是因为Classes 这张表数据两太小,而设计行所则是当select语句执行完毕的时候默认就会释放掉行锁哟,因此对于比较大的文件你会看到效果。 45 +---------+--------------------------+-------------+ 46 | ClassID | Class | ClassMember | 47 +---------+--------------------------+-------------+ 48 | 7 | 木叶忍者村第七班 | 4 | 49 | 10 | 木叶忍者村第十班 | 3 | 50 | 8 | 木叶忍者村第八班 | 3 | 51 | 3 | 木叶忍者村第三班 | 3 | 52 | 1 | 木叶忍者村第一班 | 5 | 53 +---------+--------------------------+-------------+ 54 5 rows in set (0.00 sec) 55 56 mysql>
设置行所案例展示
1 事物是支持ACID测试的,也就是说能够满足ACID测试就表示其支持事务,或兼容事务。其中ACID满足以下四点: 2 A:Atomicity,原子性,都执行或者都不执行 3 C:Consistency,一致性,从一个一致性状态转到另外一个一致性状态 4 I:Isolaction,隔离性。一个事务的所有修改操作在提交前对其他事务时不可见的 5 D: Durability, 持久性,一旦事务得到提交,其所做的修改会永久有效
1 a>. READ UNCOMMITTED(读未提交) 2 可以读取到别人没有提交的事物,又名“脏读”,因此这种方式数据安全性最差,但好处就是并发性最强。不能重复读(两次读取同一张表的内容可能不一致,也就是说,当不同的用户读取同一张表时,当某DBA对这张进行的删除表中的数据时,其他用户也能读取到删除的行即使别人还没有提交事物呢,而DBA回滚操作是,其他用户任然也可以看到回滚的内容,因此两次读取的内容是不一致的。),甚至会产生幻读(我们读取到的数据和真实数据不一致),因此这种模式用的相对较少。 3 b>.READ COMMITTED(读提交) 4 读提交指的是一个事物开始的时候只能看见已经提交事物的修改,其他未修改的事物这里通通都看不到,我们也可以说提交之后才能读,市面上常见的大多数关系型数据库隔离级别都是读提交,不过MySQL并不是。该模式存在幻读现象。对事物要求不特别严格的场景下,可以使用读提交。 5 c>.REPEATABLE READ (可重读) 6 可重读解决了脏读的问题,在最近的一个事物提交之前, 所有读到的事物都是一样的。因此,在同一事物中多次读同一数据的内容是一样的。但是仍然没有解决幻读的问题。mysql默认就是用的这种模式。该模式存在幻读现象。 7 d>.SERIALIZABLE(可串行化) 8 事物和事物之间严格进行隔离,只要涉及到同一个数据彼此之间是不能做任何交叠的,必须要等到其他人提交了或是把数据修改完成之后我们才能读取,通过强制事务的串行执行避免了幻读,但是性能极低。它的隔离界别极高,只有确保数据非常明确的情况下才能用到SERIALIZABLE。 9 e>,跟事物相关的常用命令 10 start transaction #启动事务 11 commit #事务提交 12 rollback #事务回顾 13 savepoint #控制回滚的位置 14 SAVEPOINT identifier 15 ROLLBACK [WORK] TO [SAVEPOINT] identifier 16 f>.自动提交事物 17 如果没有显式启动事务,每个语句都会当作一个默认的事务,其执行完成会被自动提交。如果我们关闭了自动提交,那么我们就必须手动启动事物,然后手动进行提交。如果没有提交就会导致数据丢失哟! 18 g>.MVCC:多版本并发控制 19 每个事务启动时,InnoDB会为每个启动的事务提供一个当下时刻的快照。为实现此功能,InnoDB会为每个表提供两隐藏的字段,一个用于保存行的创建时间,一个用于保存行的失效时间(里面存储的系统版本号[system version number]) 20 MVCC只在两个隔离级别下有效,即:read committed(读提交)和repeatable read(可重读)
1 mysql> show table status where Name='students'\G 2 *************************** 1. row *************************** 3 Name: students 4 Engine: InnoDB 5 Version: 10 6 Row_format: Compact 7 Rows: 12 8 Avg_row_length: 1365 9 Data_length: 16384 10 Max_data_length: 0 11 Index_length: 16384 12 Data_free: 4194304 13 Auto_increment: 13 14 Create_time: 2017-11-20 03:57:26 15 Update_time: NULL 16 Check_time: NULL 17 Collation: utf8_general_ci 18 Checksum: NULL 19 Create_options: 20 Comment: 21 1 row in set (0.00 sec) 22 23 mysql> select * from students; 24 +-----------+--------------+-----+--------+---------+-----------+ 25 | StudentID | Name | Age | Gender | ClassID | TeacherID | 26 +-----------+--------------+-----+--------+---------+-----------+ 27 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 28 | 2 | 佐助 | 23 | boy | 7 | 1 | 29 | 3 | 春野樱 | 21 | girl | 7 | 3 | 30 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 31 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 32 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 33 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 34 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 35 | 9 | 山中井野 | 22 | boy | 10 | 4 | 36 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 37 | 11 | 李洛克 | 25 | boy | 3 | 6 | 38 | 12 | 天天 | 26 | boy | 3 | 6 | 39 +-----------+--------------+-----+--------+---------+-----------+ 40 12 rows in set (0.00 sec) 41 42 mysql> start transaction; 43 Query OK, 0 rows affected (0.00 sec) 44 45 mysql> delete from students where StudentID=9; 46 Query OK, 1 row affected (0.00 sec) 47 48 mysql> select * from students; 49 +-----------+--------------+-----+--------+---------+-----------+ 50 | StudentID | Name | Age | Gender | ClassID | TeacherID | 51 +-----------+--------------+-----+--------+---------+-----------+ 52 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 53 | 2 | 佐助 | 23 | boy | 7 | 1 | 54 | 3 | 春野樱 | 21 | girl | 7 | 3 | 55 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 56 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 57 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 58 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 59 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 60 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 61 | 11 | 李洛克 | 25 | boy | 3 | 6 | 62 | 12 | 天天 | 26 | boy | 3 | 6 | 63 +-----------+--------------+-----+--------+---------+-----------+ 64 11 rows in set (0.00 sec) 65 66 mysql> rollback; #在没有提交事物之前,是可以回滚你的所有操作哟。 67 Query OK, 0 rows affected (0.00 sec) 68 69 mysql> select * from students; 70 +-----------+--------------+-----+--------+---------+-----------+ 71 | StudentID | Name | Age | Gender | ClassID | TeacherID | 72 +-----------+--------------+-----+--------+---------+-----------+ 73 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 74 | 2 | 佐助 | 23 | boy | 7 | 1 | 75 | 3 | 春野樱 | 21 | girl | 7 | 3 | 76 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 77 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 78 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 79 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 80 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 81 | 9 | 山中井野 | 22 | boy | 10 | 4 | 82 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 83 | 11 | 李洛克 | 25 | boy | 3 | 6 | 84 | 12 | 天天 | 26 | boy | 3 | 6 | 85 +-----------+--------------+-----+--------+---------+-----------+ 86 12 rows in set (0.00 sec) 87 88 mysql>
事物回滚案例展示
1 mysql> select * from students; 2 +-----------+--------------+-----+--------+---------+-----------+ 3 | StudentID | Name | Age | Gender | ClassID | TeacherID | 4 +-----------+--------------+-----+--------+---------+-----------+ 5 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 6 | 2 | 佐助 | 23 | boy | 7 | 1 | 7 | 3 | 春野樱 | 21 | girl | 7 | 3 | 8 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 9 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 10 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 11 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 12 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 13 | 9 | 山中井野 | 22 | boy | 10 | 4 | 14 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 15 | 11 | 李洛克 | 25 | boy | 3 | 6 | 16 | 12 | 天天 | 26 | boy | 3 | 6 | 17 +-----------+--------------+-----+--------+---------+-----------+ 18 12 rows in set (0.00 sec) 19 20 mysql> start transaction; 21 Query OK, 0 rows affected (0.00 sec) 22 23 mysql> delete from students where StudentID=9; 24 Query OK, 1 row affected (0.00 sec) 25 26 mysql> commit; #注意,这里是提交了之后,这个事物就结束了。回滚也无法回滚啦! 27 Query OK, 0 rows affected (0.16 sec) 28 29 mysql> select * from students; 30 +-----------+--------------+-----+--------+---------+-----------+ 31 | StudentID | Name | Age | Gender | ClassID | TeacherID | 32 +-----------+--------------+-----+--------+---------+-----------+ 33 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 34 | 2 | 佐助 | 23 | boy | 7 | 1 | 35 | 3 | 春野樱 | 21 | girl | 7 | 3 | 36 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 37 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 38 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 39 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 40 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 41 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 42 | 11 | 李洛克 | 25 | boy | 3 | 6 | 43 | 12 | 天天 | 26 | boy | 3 | 6 | 44 +-----------+--------------+-----+--------+---------+-----------+ 45 11 rows in set (0.00 sec) 46 47 mysql> 48 mysql> rollback; #你会很明显的发现提交事物之后回滚也不生效啦,因为你没有启动新的事物啊。 49 Query OK, 0 rows affected (0.00 sec) 50 51 mysql> select * from students; 52 +-----------+--------------+-----+--------+---------+-----------+ 53 | StudentID | Name | Age | Gender | ClassID | TeacherID | 54 +-----------+--------------+-----+--------+---------+-----------+ 55 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 56 | 2 | 佐助 | 23 | boy | 7 | 1 | 57 | 3 | 春野樱 | 21 | girl | 7 | 3 | 58 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 59 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 60 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 61 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 62 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 63 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 64 | 11 | 李洛克 | 25 | boy | 3 | 6 | 65 | 12 | 天天 | 26 | boy | 3 | 6 | 66 +-----------+--------------+-----+--------+---------+-----------+ 67 11 rows in set (0.00 sec) 68 69 mysql>
提交事物案例展示
1 mysql> select * from students; 2 +-----------+--------------+-----+--------+---------+-----------+ 3 | StudentID | Name | Age | Gender | ClassID | TeacherID | 4 +-----------+--------------+-----+--------+---------+-----------+ 5 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 6 | 2 | 佐助 | 23 | boy | 7 | 1 | 7 | 3 | 春野樱 | 21 | girl | 7 | 3 | 8 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 9 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 10 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 11 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 12 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 13 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 14 | 11 | 李洛克 | 25 | boy | 3 | 6 | 15 | 12 | 天天 | 26 | boy | 3 | 6 | 16 +-----------+--------------+-----+--------+---------+-----------+ 17 11 rows in set (0.00 sec) 18 19 mysql> start transaction; #启动一个事物 20 Query OK, 0 rows affected (0.00 sec) 21 22 mysql> delete from students where StudentID=2; 23 Query OK, 1 row affected (0.00 sec) 24 25 mysql> savepoint a; #当我们删除了一行数据之后,我们对其操作进行一个记录。 26 Query OK, 0 rows affected (0.00 sec) 27 28 mysql> delete from students where StudentID=3; 29 Query OK, 1 row affected (0.00 sec) 30 31 mysql> 32 mysql> savepoint b; 33 Query OK, 0 rows affected (0.00 sec) 34 35 mysql> delete from students where StudentID=4; 36 Query OK, 1 row affected (0.00 sec) 37 38 mysql> select * from students; 39 +-----------+--------------+-----+--------+---------+-----------+ 40 | StudentID | Name | Age | Gender | ClassID | TeacherID | 41 +-----------+--------------+-----+--------+---------+-----------+ 42 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 43 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 44 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 45 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 46 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 47 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 48 | 11 | 李洛克 | 25 | boy | 3 | 6 | 49 | 12 | 天天 | 26 | boy | 3 | 6 | 50 +-----------+--------------+-----+--------+---------+-----------+ 51 8 rows in set (0.00 sec) 52 53 mysql> rollback to b; #表示回滚到b的节点中去,也就是说b以后的操作都会恢复回来。 54 Query OK, 0 rows affected (0.00 sec) 55 56 mysql> select * from students; 57 +-----------+--------------+-----+--------+---------+-----------+ 58 | StudentID | Name | Age | Gender | ClassID | TeacherID | 59 +-----------+--------------+-----+--------+---------+-----------+ 60 | 1 | 旋涡鸣人 | 25 | boy | 7 | 2 | 61 | 4 | 奈良鹿丸 | 26 | boy | 10 | 4 | 62 | 5 | 日向雏田 | 23 | girl | 8 | 5 | 63 | 6 | 犬冢牙 | 24 | boy | 8 | 5 | 64 | 7 | 油女志乃 | 23 | boy | 8 | 5 | 65 | 8 | 秋道丁次 | 23 | boy | 10 | 4 | 66 | 10 | 日向宁次 | 26 | boy | 3 | 6 | 67 | 11 | 李洛克 | 25 | boy | 3 | 6 | 68 | 12 | 天天 | 26 | boy | 3 | 6 | 69 +-----------+--------------+-----+--------+---------+-----------+ 70 9 rows in set (0.00 sec) 71 72 mysql>
指定回滚位置案例展示
1 mysql> show global variables like 'autocommit'; #我们可以进行查看,发现它是开启的状态。 2 +---------------+-------+ 3 | Variable_name | Value | 4 +---------------+-------+ 5 | autocommit | ON | 6 +---------------+-------+ 7 1 row in set (0.00 sec) 8 9 mysql> select @@session.autocommit; 10 +----------------------+ 11 | @@session.autocommit | 12 +----------------------+ 13 | 1 | 14 +----------------------+ 15 1 row in set (0.00 sec) 16 17 mysql> set session autocommit = 0; #我们关闭自动提交的功能。 18 Query OK, 0 rows affected (0.00 sec) 19 20 mysql> select @@session.autocommit; 21 +----------------------+ 22 | @@session.autocommit | 23 +----------------------+ 24 | 0 | 25 +----------------------+ 26 1 row in set (0.00 sec) 27 28 mysql> show global variables like 'autocommit'; #再次查看,发现它是被关闭了。 29 +---------------+-------+ 30 | Variable_name | Value | 31 +---------------+-------+ 32 | autocommit | OFF | 33 +---------------+-------+ 34 1 row in set (0.00 sec) 35 36 mysql>
关闭自动提交事物案例展示
1 mysql> show global variables like 'tx_isolation'; 2 +---------------+-----------------+ 3 | Variable_name | Value | 4 +---------------+-----------------+ 5 | tx_isolation | REPEATABLE-READ | 6 +---------------+-----------------+ 7 1 row in set (0.00 sec) 8 9 mysql> select @@global.tx_isolation; 10 +-----------------------+ 11 | @@global.tx_isolation | 12 +-----------------------+ 13 | REPEATABLE-READ | 14 +-----------------------+ 15 1 row in set (0.00 sec) 16 17 mysql>
查看MySQL的事物隔离级别
转载于:https://www.cnblogs.com/yinzhengjie/p/7868782.html
MySQL事务及隔离级别详解相关推荐
- 数据库事务的四大特性以及事务的隔离级别详解
作者 : fjdingsd 来源 : 博客园 本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ ...
- 数据库并发机制和事务的隔离级别详解
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/64444896冷血之心的博客) 本文将从以下4个方面来展开: (1) ...
- SQL Server-聚焦事务、隔离级别详解(二十九)
前言 事务一直以来是我最薄弱的环节,也是我打算重新学习SQL Server的出发点,关于SQL Server中事务将分为几节来进行阐述,Always to review the basics. 事务简 ...
- 同一个事务里面对同一条数据做2次修改_[玩转MySQL之九]MySQL事务ACID[2-1]ACID详解...
一. 引言 做数据库相关工作的同学都知道事务,就是一个操作序列 ,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位, ACID又是事务的四大特性. 那么就会有如下疑问: ACID具体代表什 ...
- SQL Server事务隔离级别详解
SQL Server事务隔离级别详解 标签: SQL SEERVER/MSSQL SERVER/SQL/事务隔离级别选项/设置数据库事务级别 SQL 事务隔离级别 概述 隔离级别用于决定如果控制并发用 ...
- MySQL 四种事务隔离级别详解及对比--转
http://www.jb51.net/article/100183.htm 接的隔离级别.它的语法如下: ? 1 SET [SESSION | GLOBAL] TRANSACTION ISOLATI ...
- 5、MySQL事务隔离级别详解
事务的隔离性就是指当多个事务同时运行时,各事务之间相互隔离,不可互相干扰.如果事务没有隔离性,就容易出现脏读.不可重复读和幻读等情况. 为了保证并发时操作数据的正确性,数据库都会有事务隔离级别的概念. ...
- MySQL 中事务、事务隔离级别详解
一.事务的概念 1.事务的概念 2.在mysql中哪些存储引擎(表类型)支持事务哪些不支持 3.事务的四个属性 4.mysql事务的创建与存在周期 5.mysql行为 6.事务的隔离性和性能 7.my ...
- mysql事务隔离级别详解_高性能MySQL-详解事务与隔离级别
本文主要包括一下内容: (1) 事务的概念与ACID (2)事务的隔离级别 (3)MySQL中的事务 1. 事务与ACID 理解事务是其它高级概念的基础.事务:事务就是一组原子性的SQL查询,或则说是 ...
最新文章
- 4道经典指针笔试题讲解 ~
- 进程和程序:编写shell——《Unix/Linux编程实践教程》读书笔记(第8章)
- 多线程下的HashMap竟然绕环了
- guava-collections
- QT MSVC 中文报错
- Validation(2)
- 轻松使用make menuconfig达到内核的升级!
- STM32H743+CubeMX-梳理MPU的设置
- checkbox 点击搜索失去焦点_早些年植入三焦点晶体矫正老花的人,现在怎么样了?...
- python 将字符串转换为字典
- 使 VC2013 编写的程序运行在其它电脑上
- 神经网络做多元线性回归,神经网络是线性模型吗
- 计算机重启很慢,电脑重启慢的原因
- 互联网日报 | 字节跳动发布独立教育品牌“大力教育”;哈啰出行试水网约车;京东“好房京选”线下品牌落地...
- 双系统笔记本 android,安卓不止平板有 教你使用笔记本装安卓,和WINDOWS一起双系统亦可以的哦!(图解)...
- 软件系统产品线特征及构建过程
- N-Tiers开发方式(为何使用COM+组件的撰写商业逻辑层)
- 失眠怎么办?试试汤臣倍健褪黑素和以下方法!
- 【仙女踩坑实录】Macbook修改文件创建时间
- c语言复合赋值表达式题目,C语言中复合赋值运算,表达式等知识.doc
热门文章
- 德媒:外景代替了现实 中国人拍婚纱照跑到很远地方
- VB:设定 MsgBox 在若干时间之后若无回应则自动关闭
- 股市常胜将军都懂得适时休息
- 百度Q1营收241亿,李彦宏挥刀改革:“尽力了”没用,要确保在必须赢的战场上胜利...
- 81个关键点,帮你紧密追踪女神的脸,比Dlib还多了13点 | 有代码
- 别人家只会编段子,谷歌带大家找乐子 | 愚人节の真 · 大型线下踏春游戏
- 静态代码块和单例混合
- 日本第四次产业革命瞄准物联网
- django 接收ajax请求
- adobe reader运行时出现“Invalid plugin detected”错误的解决办法