幻像专题

脏读 不可重复读 幻像(幻觉读)

脏读 脏读包含未提交数据的读。例如,事务1 更改了某行。事务2 在事务1 提交更改之前读取已更改的行。如果事务1 回滚更改,则事务2 便读取了逻辑上从未存在过的行。 脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是脏数据,依据脏数据所做

mysql 如何解决幻像问题(Phantom Problem)

在默认的事务隔离级别下,即REPEATABLEREAD下,InnoDB存储引擎采用Next-KeyLocking机制来避免PhantomProblem(幻像问题)。 这点可能不同于与其他的数据库,如Oracle数据库,因为其可能需要在SERIALIZABLE的事务隔离级别下才能解决PhantomProblem。 PhantomProblem是指在同一事务下,连续执行两次同样的SQL语句可能导致

认知幻像:在不同数据库之间迁移时,总有些什么改变了?

当我们在不同数据库之间迁移时,总有一些认知幻像,下意识的以为,某些事应该还是那样。 但是事实上,有些事情永远的改变了,我们需要认识到这些变化,并且刷新认知。 最近有朋友在“云和恩墨大讲堂”的微信群提出了一个这样的问题,以下SQL的输出结果是什么? create table enmotest (a int, b int ); insert into enmotest values(1,1); up

认知幻像:如果有这样一道面试题,可以如何作答?

书接上回,虽然我们知道,SQL有着强大的标准体系,但是在实践中,不同数据库却有不同的实现方式。 除此之外,有时候用常规的思维逻辑而不是计算逻辑去推理SQL执行方式,也有可能出现不同于现实的判定。 以下这个问题,也是来自“云和恩墨大讲堂”朋友提出的。 最后这个查询,在 enmotest 表中,根本不存在 name 字段,查询的结果会是怎样呢? 大家想象一下,如果这是一道面试题,你如何判断结果,如何