推 atpx: 開個註記欄位紀錄已給出去,用什麼db都沒差吧 11/12 21:14
→ atpx: 有錢就買oracle 11/12 21:14
推 atpx: 沒看清楚,原來有開欄位了,你卡住的地方是? 11/12 21:40
→ amnesia: 如果同時有人query還沒mark起來不就會一起出去了? 11/12 21:40
推 fgh81113: 你可以設Synchronization的方法 11/12 21:48
→ jimmy689: transation <== 11/12 21:49
→ jimmy689: 設exclusive lock、semaphore之類的 11/12 21:52
→ jimmy689: rails的話record好像有現成的能用 11/12 21:53
fgh大,謝謝啦,Synchronization 對啦,我本來是要講這個
不過jimmy大也提了很多方法,像transaction跟semaphore我還有聽過
但是我忽然發現不知道怎麼把這些方法套到我的情況耶
是要把db connection這類的東西用Synchronization嗎?
不是很懂要怎麼實際應用到我的case,不知道有沒有參考範例 ^^;
※ 編輯: amnesia (220.132.75.65), 11/12/2015 21:59:23
→ Masakiad: 聽起來像抽獎 11/12 22:03
→ amnesia: 有點類似 11/12 22:04
推 atpx: 只是取號就查詢的時候拉高 isolation level 11/12 22:14
推 abccbaandy: 聽起來跟之前把票重複賣的情況好像XD 11/12 22:19
→ sanfann: select for update? 11/12 23:04
→ amnesia: 對耶,我沒想到跟賣票的應用很像耶 11/12 23:07
→ amnesia: select for update會把整個table lock? 11/12 23:16
→ amnesia: 有沒有方法是不要把整個table lock的? 11/12 23:17
→ amnesia: 不然我覺得要切farm做hash,免得單一table鎖太久 11/12 23:18
→ amnesia: select for update應該是最簡便的解法嗎? 11/12 23:34
→ amnesia: 大概loading到什麼情況會讓人有感到慢? 11/12 23:35
推 locklose: select for update 屬於row-lock,效能不會太差. 11/13 00:22
→ locklose: 但這東西建議寫好stored procedure 減少db組譯時間 11/13 00:23
推 hahahank: 程式中控制也可以吧 11/13 13:28
推 arenda: 用Queue處理? 11/13 23:06
→ Masakiad: 我也覺得queue應該有機會 11/13 23:17
→ amnesia: 用queue會只能處理一個request嗎?能在多說明一下嗎 11/15 18:24
推 Masakiad: 把所有request enqueue,然後worker批次把request deque 11/15 21:15
→ Masakiad: ue並進行db read write,之後才response。你可以用數個q 11/15 21:15
→ Masakiad: ueue來進行以上操作 11/15 21:15