本文实例讲述了Mysql 知识点之事务、索引、锁原理与用法。分享给大家供大家参考,具体如下: 事务 事务概念 事务就是一组原子性的sql查询,或者说一个独立的工作单元。如果数据库引擎执行一组操作语句
本文实例讲述了Mysql 知识点之事务、索引、锁原理与用法。分享给大家供大家参考,具体如下:
事务就是一组原子性的sql查询,或者说一个独立的工作单元。如果数据库引擎执行一组操作语句,那么久执行所有的操作,如果其中有任何一条崩溃或其他原因无法执行,所有语句将不会执行。也就是说事务内的语句,要么全部执行成功,要么全部执行失败。
一个事务被视为最小工作单元,不可拆分,整个事务所有的操作要么全部提交成功,要么全部失败回滚,不可只执行部分。
数据库从一个一致性的状态转换到另外一个一致性的状态。数据库某个状态下符合所有的完整性约束的状态。
通常来说,一个事务所做的修改在最终提交前,对其他事务是不可见的。此时应该保证各个事务要进行隔离,事务之间不可相互干扰。
一旦事务提交,所有的修改会永久保存到数据库中。此时即使系统崩溃,修改的数据也不会丢失。
事务中的修改,即使没有提交,对其他事务也是可见的,事务可以读取未提交的数据,造成脏读,也会造成不可重复。
大多数数据库的默认级别是READ COMMITTED(mysql默认REPEATABLE READ),该级别事务解决了脏读,但是会出现不可重复读,因为两次执行同样的查询,查询结果不一样。
该级别解决了脏读,保证可重复读,但是理论上,可重复读隔离级别还是无法解决幻读,所谓幻读,指的是党某个事物在读取某个范围内的记录时,另外一个事务又在该范围内插入了新的记录。InnoDB和XtraDB存储引擎通过多版本并发控制MVVC解决了幻读的问题。
可串行化是隔离最高级,它强制了事务串行执行,完全避免了幻读,简单来说SERIALIZABLE会在读取的每一行加锁,所以会导致大量的等待超时和锁争用的问题,实际开发中很少使用。
索引是存储引擎用户快速找到记录的一种数据结构,举例
SELECT userName FROM user WHERE userId = 1;
--结束END--
本文标题: MySql 知识点之事务、索引、锁原理与用法解析
本文链接: https://www.lsjlt.com/news/51258.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-03
2024-05-03
2024-05-03
2024-05-03
2024-05-03
2024-05-03
2024-05-03
2024-05-03
2024-05-03
2024-05-03
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0