微信小程序做链接网站,大学网站建设与管理职责,公司网站被抄袭,深圳福田公司转自 高性能mysql
【1.3】事务
1#xff09;事务定义#xff1a;事务就是一组原子性的sql查询#xff0c;或者说一个独立的工作单元。
即事务内的sql语句#xff0c;要么全部执行成功#xff0c;要么全部执行失败#xff1b;
2#xff09;事务的ACID概念#xff1a…转自 高性能mysql
【1.3】事务
1事务定义事务就是一组原子性的sql查询或者说一个独立的工作单元。
即事务内的sql语句要么全部执行成功要么全部执行失败
2事务的ACID概念原子性automicity一致性consistency隔离性isolation持久性durability
原子性一个事务必须被视为一个不可分割的最小工作单元整个事务中的所有操作要么全部提交成功要么全部失败回滚一致性数据库总是从一个一致性状态转移到另一个一致性状态隔离性通常来说一个事务所做的修改在最终提交前对其他事务都是不可见的持久性一旦事务提交则其所做的修改就会永久保存到数据库中此时即使数据库崩溃数据也不会丢失【1.3.1】4种隔离级别
级别1READ UNCOMMITED 未提交读事务的修改即使没有提交对其他事务也是可见的
级别2READ COMMITTED 提交读一个事务从开始直到提交之前所做的任何修改对其他事务不可见的
也叫不可重复读因为两次执行相同的查询可能得到不同的查询结果 级别3REPEATABLE READ 可重复读RR 解决了脏读问题。该级别保证在同一事务中多次读取同样记录的结果是一致的 mysql的默认事务隔离级别
但 RR 无法解决幻读问题幻读指的是当某个事物在读取某个范围内的记录时另外一个事务又在该范围内插入了一条新的记录当之前的事务再次读取到该范围的记录时会产生幻行
不过 mysql中的 innodb 和 XtraDB 存储引擎通过多版本并发控制 MVVCmultiversion concurrency control 解决了幻读问题 级别4SERIALIZABLE 可串行化最高隔离级别。通过强制事务串行执行避免了前面说的幻读问题。
简单说SERIALIZABLE 会在读取的每一行数据上都加锁所以可能导致大量的超时和锁征用的问题实际应用中很少考虑这种隔离级别