Mysql
插入觸發器後會導致延遲嗎?
MySQL 5.7 innoDB
我的計劃:在一個表上創建一個插入後觸發器,將一些插入的數據複製到另一個表。在第二個表上創建一個插入前觸發器,其中包括一些評估(從另一個表中收集數據),然後再在第二個表中進行插入或依賴於評估根本不會在第二個表上執行插入。
計劃的觸發器會導致它們創建的表/記錄上的任何鎖定嗎?特別是第二張表上的插入前觸發器是否有可能導致第一張表上的鎖定或插入延遲?
一些背景:我有一個負載很重的表,其中實際上有 120GB 數據(正在增長)。大約 15-40 次插入/秒。
在某些情況下,客戶端連接會爆發性增長並導致應用程序停止。
不是 100% 確定,但我看到的是:在某些情況下,對該巨大表的某些查詢會鎖定並延遲插入。這會導致客戶端連接增加。
上面的計劃將把客戶實際所做的一些工作放入數據庫本身。我的計劃有沒有可能消除這個問題。
為了進行測試,我需要在沙盒環境中複製那個巨大的表並模擬插入。呃。所以我之前問過,我的計劃是否有可能在所有數據負載佔據網路之前有效。
問題不一樣,但我的回答是: https ://dba.stackexchange.com/a/159012/1876
不要使用觸發器;而是批量處理數據並批量處理。它比一次做所有事情要高效得多,尤其是在出現尖峰時。
另一個問題……如果你讓“太多”連接開始,是的,整個系統可能會停止。這有時是因為 MySQL(和作業系統)小心地將資源(CPU、I/O 等)分配給更多的客戶端,而不是資源(核心等)可以處理的。吞吐量可能很好,但延遲非常糟糕。