[討論] 資料需要鎖定並應付多個請求的作法
請問各位
今天interview的時候有跟主管聊到以前的一個問題
就是某個流水號需要一次只能被一個請求讀取
並且使用完要把最新的流水號更新回去
所以必須要用交易鎖定
但主管有提到如果是大量的請求要讀取要怎麼做比較好呢?
這問題之前有跟朋友討論過
結論是用queue
反正就排隊一個一個來
但主管說叫我回去想想是否還有更好的作法
因為我也沒遇過比較極端的情況
所以像這種需要頻繁鎖定資料表避免讀取的話要怎麼做才能效能太差的問題呢?
或是有哪些關鍵字可以尋找呢?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 119.14.85.193
※ 文章網址: https://www.ptt.cc/bbs/Database/M.1475165893.A.F08.html
→
09/30 15:28, , 1F
09/30 15:28, 1F
推
09/30 16:58, , 2F
09/30 16:58, 2F
我用的是MS SQL
例如說某個table某列的資料欄位著一個流水號1
當有人去取得它時必須避免有人又讀取這個1
流水號增加到150的時候要update回原來欄位
最後交易結束下一個process才能繼續讀取
也確保他讀到的一定是最新
我使用的作法是用transaction鎖定資料表避免被讀取
當然這種作法在大量process要讀取的時候必定會因為lock而會要等待
process的量越多必定對效能影響也越大
所以不曉得像這種情況在超多process的情況下通常都怎麼解決呢?
謝謝
※ 編輯: aoksc (119.14.85.193), 09/30/2016 21:26:38
→
10/01 01:42, , 3F
10/01 01:42, 3F
→
10/01 01:43, , 4F
10/01 01:43, 4F
→
10/01 01:45, , 5F
10/01 01:45, 5F
→
10/01 01:56, , 6F
10/01 01:56, 6F
→
10/06 01:44, , 7F
10/06 01:44, 7F
→
10/06 01:45, , 8F
10/06 01:45, 8F
→
10/07 21:23, , 9F
10/07 21:23, 9F
→
10/07 21:23, , 10F
10/07 21:23, 10F
→
10/07 21:23, , 11F
10/07 21:23, 11F
→
10/07 21:23, , 12F
10/07 21:23, 12F
→
10/07 21:23, , 13F
10/07 21:23, 13F
→
10/08 12:49, , 14F
10/08 12:49, 14F
→
10/08 12:51, , 15F
10/08 12:51, 15F
→
10/08 12:52, , 16F
10/08 12:52, 16F
→
10/08 12:57, , 17F
10/08 12:57, 17F
→
10/08 12:57, , 18F
10/08 12:57, 18F
Database 近期熱門文章
PTT數位生活區 即時熱門文章