同时执行表SELECT MIN(x) FROM blah;
时,MySQL在执行DELETE
时表现如何?
min()的结果是否会显示已删除的条目?如果不是,那么如何防止从已删除的条目返回值?
这之所以出现,是因为我们有一个大型数据库,其中min()运行了几个小时,但是在这段时间内删除是连续发生的。
答案 0 :(得分:1)
阅读https://dev.mysql.com/doc/refman/8.0/en/innodb-consistent-read.html,了解InnoDB中的一致性读取。保证每个SELECT语句都可以查看一种“快照”数据,而在SELECT语句运行时不会改变。
因此,您是对的,您确实有可能SELECT语句返回package com.Bob.Marley;
public class SuperClass{
protected int x = 0;
}
package com.Bob.Marley;
public class SubClass extends SuperClass{
protected int x = 1;
}
package com.Bob.Marley;
public class TestClass{
public static void main (String[] args){
SubClass s = new SubClass();
//print 1
System.out.println(s.x);
//how do I print the superclass variable?
//I know inside SubClass I can access it with plain old super.x
//but what about outside the subclass with a new object.
}
}
的值,而该值在您的SELECT语句完成后将不再存在,因为它同时已被删除。>
这是我们为自由阅读查询而不会阻止并发更新/删除所付出的代价。
如果要让MIN(x)
快速返回,请创建一个以MIN(x)
作为第一列的索引。