0
TL; DR。我希望鎖定的行不會被後續查詢使用,直到鎖定被釋放。並行訪問行:使鎖定行「不可見」
我正在研究依賴併發訪問數據的應用程序。
我有需要處理的數據以及數千個需要在同一組數據上運行的SQL查詢。在應用程序級別上,我將所有SQL查詢序列化爲一個大隊列,並逐個在事務中執行它們。
但是,我想要刪除我在應用程序級別上所做的人爲「隊列」瓶頸,完全依靠數據庫的內置併發基元混合&基於光標的數據訪問。
爲此,我需要確保兩個併發SQL查詢從未獲取相同的集合行,例如,以前的查詢會鎖定行並且以後的查詢會忽略鎖定的行。
我想讓下面的圖片起作用(例子通過意圖簡化;考慮每個SELECT
使用基於遊標的訪問在事務中運行)。
SELECT * FROM my_table ORDER BY id LIMIT 5; -- returns rows with IDs 1, 2, 3, 4, 5
SELECT * FROM my_table ORDER BY id LIMIT 5; -- returns rows with IDs 6, 7, 8, 9, 10
我的問題是:這甚至有可能嗎?或者我從數據庫中請求過多?
你是我的英雄。 – gmile