一尘不染

如何产生幻像读物?

mysql

使用“可重复读取”应该可以产生幻像读取,但是如何?我需要它作为教CS学生的例子。

我认为我必须在没有索引上限888的非索引字段x上进行“ SELECT … WHERE x <=
888”,然后在另一个连接上插入一个新行,其值刚好在888以下。

除非它不起作用。我需要一张大桌子吗?或者是其他东西?


阅读 248

收藏
2020-05-17

共1个答案

一尘不染

埃里克

我来自大量行的测试。

您将永远不会在InnoDB mysql上找到具有已提交读或更高限制的隔离级别的幻像。在文档中对此进行了解释:

可重复读取:对于一致读取,与READ COMMITTED隔离级别有一个重要区别:同一事务内的所有一致读取均读取 由第一次读取建立的快照
。此约定意味着,如果您在同一事务中发出多个普通(非锁定)SELECT语句,则这些SELECT语句彼此之间也是一致的。请参见第13.6.8.2节“一致的非锁定读取”。

但是您也无法在读提交的隔离级别中找到幻像:这是必需的,因为必须阻止“幻像行”才能使MySQL复制和恢复正常工作。

更详细的信息:http :
//dev.mysql.com/doc/refman/5.1/en/set-
transaction.html

我认为您将需要转到另一个数据库品牌向学生展示幻影。我同时使用MSSQLSERVEROracle

好吧…很遗憾您的第一个问题。

2020-05-17