我们在DB中没有并行更新操作,一个独占和共享数量的锁。 这是表格:
create table a (
key1 int,
key2 long,
key3 tinyint,
val text,
primary key(key1, key2, key3)
);
create table b (
key1 int,
key2 long,
anotherval text,
primary key(key1, key2)
);
表中的key1和key2在名称和值上是相同的, 并且有关于1bln记录的smth,表中有4000个唯一的key1。 key3是古老的,根本不需要,因为对key1 + key2本身是唯一的。但我们不能简单地删除它 - 记录太多了。
现在意识到我们并行执行操作:
select a.val, b.anotherval
from a left join b using (key1, key2)
where key1 = 123 and key2 >=100000 and key2 <900000;
和
delete from a where key1=123 and key2 >300000;
这样可以生成这样的锁吗?