我必須每隔一小時更新我的MySQL數據庫,我想知道使用cronjob VS MySQL事件的優點/缺點?例如,哪個更快?哪個更安全?謝謝!Cronjob或MySQL事件?
回答
我總是會去一個cron作業,這是因爲:
- 這就是系統管理員會想到它是(這點沒有被低估)
- crobtab是防彈,經過時間考驗的,非常廣泛的使用和理解
- 你可以自由地直接/分析你想要的錯誤/成功消息
- 某些數據庫任務需要/偏好mysql離線(例如完全備份),所以你必須使用cron對於那些 - 用cron完成一些任務並且完成一些任務是個不好的主意用mysql;你會在何處查找
- 你可以鏈,如果你已經有了一個shell腳本
最後應遵循其他事件,只是因爲你可以做一些事情,並不意味着是個好主意。 Mysql擅長數據。不要將它用於「外殼」的東西。
MySQL事件調度程序 - 一個很好的替代cron。
我們都知道cron,這是一種調度某些進程的簡單方法,例如每週在您的MySQL數據庫中截斷日誌表。
在MySQL 5.1中,MySQL的傢伙們推出了一個新的酷炫功能:MySQL事件調度程序!
使用事件調度程序,您可以計劃要在數據庫上執行的任務。 這對於無法在其Web空間上創建cron作業的Web開發人員非常適合,因爲他們的主機不會讓他們! 它確實是cron的一個很好的替代品!
舉幾個例子:你想每週截斷應用程序日誌表
,這是你的活動日程應該怎麼樣子:
CREATE EVENT PurgeLogTable
ON SCHEDULE EVERY 1 WEEK
DO
BEGIN
DELETE FROM `logs` WHERE `LogTime` <= DATE_SUB(CURRENT_TIMESTAMP,INTERVAL 1 WEEK);
INSERT INTO `audit` (`AuditDate`, `Message`) VALUES(NOW(), "Log table purged succesfully!");
END
Mysql的介紹事件調度,我們可以使用替代的cronjob。與cronjob相比,它有很多優點:
1)它直接寫在Mysql服務器上。
2)這是平臺無關的。您的應用程序可能以任何不重要的語言編寫。你只需要知道mysql。 3)我們可以使用它們,只要有一個數據庫更新或清理需要在正常時間間隔。
4)每次不需要編譯查詢,因此性能提高。
5)錯誤可以登錄日誌文件。 語法:
DELIMITER //
CREATE EVENT eventName
ON SCHEDULE EVERY 1 WEEK
STARTS 'Some Date to start'
ENDS 'End date If any'
DO
BEGIN
// Your query will be here
END//
DELIMITER ;
欲瞭解更多信息,您可以訪問官方網站:http://dev.mysql.com/doc/refman/5.1/en/create-event.html
細節博客:http://goo.gl/6Hzjvg
MySQL事件調度是對優勢共享主機環境。就時間而言,它也可以安排到第二個時間。不像cron,它是一分鐘 - 但你可以解決這個限制。
我與MySQL事件會程序器
,因爲我們不必代碼是一個額外的文件,我們的目的可以通過只寫一個查詢來實現。
如果只需要數據庫相關的操作,那麼mysql事件調度就是不錯的選擇。
請檢查下面的代碼:
if ($product_info) {
if ($product_info['image']) {
$image = $this->model_tool_image->resize($product_info['image'], $this->config->get($this->config->get('config_theme') . '_image_wishlist_width'), $this->config->get($this->config->get('config_theme') . '_image_wishlist_height'));
}
else {
$image = false;
}
}
我現在處理事件自己和思考同樣的:)
除了上述答案:
使用事件如果任務純粹是以數據爲中心的,或者補充已經構建到數據庫中的功能。您可能已經擁有清理數據,記錄某些事件,彙總某些數據等的觸發器。如果要執行的計劃任務是現有設計的一部分,則從EVENT觸發任務更具有內聚性。畢竟事件是時間觸發器。
如果您從shell運行腳本,則需要存儲在shell腳本或默認文件中的用戶名/密碼。爲了執行EVENT,EVENT創建完成後,您不需要用戶名/密碼。
IMCO您應該在存儲過程中編寫邏輯;然後從EVENT或shell腳本調用該過程,無論最適合您。你甚至可以在你的用戶界面中建立一些讓用戶手動調用該程序的地方。
格式化你的內容,如果看起來不錯,會更好。 – Billa 2018-02-21 09:41:41
- 1. Mysql觸發器/事件與Cronjob
- 2. cpanel cronjob中的Mysql計劃事件
- 3. 多線程或cronjob
- 4. MySQL的備份與的cronjob
- 5. MySQL查詢沒有的cronjob中運行
- 6. 的cronjob mysql的備份問題
- 7. PHP- MySQL的cronjob發送郵件循環重複
- 8. 運行cronjob覆蓋文件
- 9. 多個cronjob電子郵件
- 10. MySQL或條件
- 11. Mysql或條件
- 12. MySQL事件調度
- 13. iOS和Mysql事件
- 14. MYSQL創建事件
- 15. 的cronjob
- 16. Onreadystatechange - 事件或事件處理程序?
- 17. MouseDown或MouseUp事件?
- 18. 服務或事件?
- 19. MySQL的「或」條件
- 20. 事件捕獲或事件泡沫時觸發的Jquery.bind事件
- 21. MySQL觸發事務插入或更新
- 22. 使用php或codeigniter函數打開/關閉MySQL事件
- 23. 如何在mysql中創建作業或事件
- 24. MySQL查詢顯示,如果事件調度爲ON或OFF
- 25. Cassandra/HBase或只是MySQL:做下一件事的潛在問題
- 26. 從Node.js(或其他)將附加事件添加到MySQL
- 27. 當給出2件事時Mysql排序或排序混淆
- 28. 如何在程序或觸發器中創建mysql事件?
- 29. PHP cronjob變量
- 30. PHP Cronjob與CPanel
[Mysql的觸發/事件VS的cronjob]的可能重複(http://stackoverflow.com/questions/1734073/mysql-trigger-events-vs-cronjob) – bipen 2013-04-18 17:44:04