0
假設我有一個擁有數百萬行的SQL Server表,並且每分鐘接收超過2000次的插入。一個單獨的進程需要對這個表進行批量更新,比如用where子句來更新1000行。但它不關心性能,可以使用主鍵選擇運行1000個單行更新。在高流量表上進行批量更新的權衡
如果批量更新運行時間過長,它會阻止傳入的插入,對吧?而單獨更新行將允許插入吱吱穿過裂縫,而不是阻止?所以從優化插入性能的角度來看,我最好每次更新一行嗎?
假設我有一個擁有數百萬行的SQL Server表,並且每分鐘接收超過2000次的插入。一個單獨的進程需要對這個表進行批量更新,比如用where子句來更新1000行。但它不關心性能,可以使用主鍵選擇運行1000個單行更新。在高流量表上進行批量更新的權衡
如果批量更新運行時間過長,它會阻止傳入的插入,對吧?而單獨更新行將允許插入吱吱穿過裂縫,而不是阻止?所以從優化插入性能的角度來看,我最好每次更新一行嗎?
更新不會阻止插入,但如果where條件的where條件未應用於新插入的行,則可能會發生意外的行爲。因此,最好查看應用程序的邏輯以確保新插入的行在更新中不需要。 但是總的來說,批量更新比單個更新要好得多。
插入不會阻止更新(除非您請求表鎖)..如果您的更新沒有阻止整個表(單個事務需要超過5000個鎖),我沒有看到任何問題。我建議提出關於DBA的問題SE的示例架構和索引以及示例更新查詢 – TheGameiswar