暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL幻读

原创 Root__Liu 2023-06-15
264

1、Which two statements are true about the mysql_upgrade command?            AD

A、the sql_upgrade command is run to check and attempt to fix tables for certain incompatibilities with the current version of MYSQL

B、the mysql_upgrade command is a utility that patches mysqld binary from its base version to a new version

C、the mysql_upgrade command executes on a stopped MYSQL server data directory to ensure that it is prepare for upgrade.

D、the mysql_upgrade command also execute the mysqlcheck command in order to provide all of its functionality.


2、MySQL的哪种事务隔离级别可以解决幻读            B

A、Read uncommited

B、Serializable

C、Read commited

D、repeated read


3、MySQL事物的开始和结束命令分别是什么                A

A、start transaction和commit

B、start transaction和rollback

C、start transaction和end

D、start transaction和break



幻读:是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。
例如:
  目前工资为5000的员工有10人,事务A读取所有工资为5000的人数为10人。
  此时,
  事务B插入一条工资也为5000的记录。
  这是,事务A再次读取工资为5000的员工,记录为11人。此时产生了幻读。

提醒:
不可重复读的重点是修改,同样的条件,你读取过的数据,再次读取出来发现值不一样了
幻读的重点在于新增或者删除,同样的条件,第 1 次和第 2 次读出来的记录数不一样


  • 读未提交: 一个事务还没提交时,它做的变更就能被别的事务看到。

  • 读提交: 一个事务提交之后,它做的变更才会被其他事务看到。

  • 可重复读: 一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的。当然在可重复读隔离级别下,未提交的变更对其他事务也是不可见的。

  • 串行化: 顾名思义是对于同一行记录,“写”会加“写锁”,“读”会加“读锁”。当出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行。


SQL 标准中规定,针对不同的隔离级别,并发事务可以发生不同严重程度的问题,具体情况如下:
( √ 表示可以发生;× 表示不可以发生)

隔离级别

脏读

不可重复读

幻读

读未提交(read uncommitted)

读提交(read committed)

×

可重复读(repeatable read)

×

×

串行化(serializable )

×

×

×


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论