2016-06-15 71 views
2

我有一個用於在MySQL數據庫上創建臨時用戶,然後在24小時後刪除它們的用例。我將做足夠的工作,以便使流程自動化並將其與用戶創建腳本打包在一起,以便我不必跟蹤流程。MySQL事件調度的性能影響

我環顧了互聯網上的文檔,問題,有關MySQL事件調度的性能影響的八卦,但我沒有發現任何令人沮喪的事情。我看到了另一個有關「成本」的MySQL預定事件的問題,但討論主要涉及使用cron與使用MySQL事件調度進行數據庫任務調度之間的比較。

我在Amazon RDS上運行,因此cron不適用於我。 MySQL事件調度看起來像是正確的解決方案。我正在安排一個非常輕量級的事件 - 在創建後24小時內一次性刪除一個用戶,但我必須讓MySQL的事件調度程序24/7全天候啓用。這是否有任何性能成本?如果沒有,爲什麼默認情況下不啓用事件調度器?

+0

臨時用戶MySQL數據庫級用戶或應用程序級用戶是否存儲在MySQL中? – Shadow

+0

默認情況下,事件調度程序未啓用以降低表面積,從而降低性能。每12小時運行一次的事件不會搖擺船(至少從睡眠線的角度來看)。要按名稱打開或關閉調度程序或給定事件,請參閱我的答案[此處](http://stackoverflow.com/a/37824952)。 – Drew

回答

0

與調度程序運行的SQL的成本相比,調度程序的成本無關緊要。書High Performance MySQL討論了這一點:

事件由一個單獨的事件調度程序線程啓動,因爲它們與連接無關。它們不接受任何輸入並且不返回任何值 - 它們無法獲得輸入或將值返回到... 與適用於存儲過程的考慮類似的考慮事項適用於事件。首先,您要爲服務器提供額外的工作。事件開銷本身很小,但它調用的SQL可能會對性能產生嚴重影響。

我懷疑事件是不是默認啓用的,因爲他們有一個impact on statement-based replication,這高性能的MySQL還討論:

[E]孔將導致同一類型的有陳述書的問題其他存儲代碼可能導致的基於複製的複製

最終,像任何數據庫的問題,你要實現你的架構解決方案和測量的影響因爲沒有兩個實例都是一樣的,沒有解決方案是通用的。