写作QUERY。
首先更新100行,然后拉出相同的100条记录。
我有多个进程正在工作所有正在查找相同的数据库我不想复制因为非常快和&繁重的横断面,有时候由于多个进程拉出相同的记录而导致重复,试图防止重复问题。
首先,我想将100行的列 - (状态)从0更新为1,以便其他进程看不到这些记录,然后我想提取相同的更新记录。
CREATE DEFINER=`devdba`@`%` PROCEDURE `getQueueRows`()
BEGIN
SET autocommit = 0;
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
START TRANSACTION;
UPDATE Queue
SET status = 1
WHERE status = 0
ORDER BY id ASC
LIMIT 100;
SELECT * FROM Queue
where
status = 1 AND
UPDATED < now();
COMMIT;
END
请告知。