start transaction;
select * from table where c=0 limit 10 for update;
我需要每次从table中提取 c=0的前 10条数据,c不是主键。当两个线程执行这个语句时。第一个线程执行时。会锁定这些记录。第二线程不能获取下个10条数据。也就是这样的操作必须是顺序执行。sql server中可以这样。select top 10 * from table with(updlock,readpast) where c=0; -- readpast 跳过锁定的行。
这样两个线程可以同时获得10条数据。分别为 1-10,11-20;这样效率就高了。在 mysql 中如何时实现呢?谢谢
select * from table where c=0 limit 10 for update;
我需要每次从table中提取 c=0的前 10条数据,c不是主键。当两个线程执行这个语句时。第一个线程执行时。会锁定这些记录。第二线程不能获取下个10条数据。也就是这样的操作必须是顺序执行。sql server中可以这样。select top 10 * from table with(updlock,readpast) where c=0; -- readpast 跳过锁定的行。
这样两个线程可以同时获得10条数据。分别为 1-10,11-20;这样效率就高了。在 mysql 中如何时实现呢?谢谢
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货