MYSQL 基本操作 (3)
创始人
2024-04-12 20:16:40
0

事务

事务是用来保证执行过程中遇到问题的时候,会自动把前面SQL执行的效果进行还原,恢复如初。

开启事务:

start transaction;
开启事务(在执行多条SQL语句之后)rollback/commit;
回滚或者提交。

事务的四特性

原子性

事务的根本所在(事务存在的意义)。能够把多个SQL打包成一个整体,要么全部执行完,要么一个都不执行(执行过程中遇到错误自动回滚)。

一致性

事务在执行的前后,数据可以对得上,是一致的状态。

持久性

事务进行的改动都是写到硬盘里的,不会随着程序重启或者主机重启而丢失。

隔离性

多个事务在并发执行的时候,事务之间可以保持距离间隔,互不干扰。

日常公司中经常会遇到的问题:

脏读问题:读脏数据,脏数据可以理解为一个临时的数据,不代表最终结果。

例如同学B读到了同学A提交的不同的数据。

解决方案:

进行写操作加锁。

在写操作前,和同学的读操作是完全并发的,此时并发性最高,隔离性最低。

在写操作后,此时并发性最低,隔离性最高,因此提升了准确性。

不可重复读问题:在一个事务中多次读取一个数据发现不一样,数据被人修改了。是同一个数据下。

解决方案:

读加锁。

引入读加锁后并发程度进一步降低,隔离性又提高了。

幻读问题:没有影响当前正在读的数据,但是更改了其他的数据,例如同学A读到了同学B的代码的时候,同学B此时修改了另外代码的内容。

解决方案:

串行化,此时并发程度最低,效率降最低,隔离性提高,数据的准确性提高。 

对此,mysql提供了四个隔离级别的档位,来根据需求选择不同的档位:
 

read uncommitted只允许读未提交的数据,并发程度提高,隔离性降低,可能存在脏读,幻读,不可重复读等问题。read committed只能读提交之后的数据,相当于写加锁,并发程度降低,隔离性提高,解决了脏读问题但没解决其他问题repeatable read相当于读和写都加锁了,并发程度进一步降低,隔离性再提高。解决了除幻读以外的问题。serializable严格执行串行化,并发程度降低,隔离性最高。解决了幻读,不可重复读,脏读等问题。

相关内容

热门资讯

英雄联盟之传奇归来大结局谁赢了 英雄联盟之传奇归来大结局谁赢了英雄联盟之宴冲传奇归来大结局中,蓝队最终获得了胜利。赢得胜利需要团队间...
老农民电视剧一共多少集? 老农民电视剧一共多少集?60年变迁,60集苦难。由陈宝国主演的《老农民》一共有60集。
求道士下山,声音最后能听见的 求道士下山,声音最后能听见的只有枪版要么不知道能不能听到
项目管理作业word,项目管理...   # XI。项目冲突的原因。      1.多个上级领导;      2.高压环境;      3...
第一个字是天的成语和最后一个字... 第一个字是天的成语和最后一个字是天的成语有哪些,地Fox is behind him and wan...
互联网创业大赛计划书,互联网创...   36Kr得知SD-      而广域网运维解决方案服务商“云起网”也于近日完成了A轮融资。本轮融...
正安安场海龙驾校报名处,正安创...   昨晚(10号)      遵义遭遇了一场      大雨、闪电、强风      生活在君的朋友圈...
学校餐饮创业项目加盟,重庆大学...   还在为找工作发愁吗?      还在担心创业难吗?      六月城里的大学生      就业活...
挣钱创业商机,农民工返乡创业现...       qvj2l q49k 0/7500 c 0222 e 044 ee 4 BD ...
自学比较容易考的证书,女生适合...   合肥怎么报房产证考多少钱?申请流程包括申请专业家居督察证书需要多少费用。任何一个从事任何行业的人...