MySQL データベースを 1 時間ごとに更新する必要がありますが、cronjob と MySQL イベントを使用する利点/欠点は何ですか? たとえば、どちらが速いですか?どちらがより安全ですか? ありがとう!
8 に答える
私は常に cron ジョブを使用します。理由は次のとおりです。
- それがシステム管理者が期待する場所です(この点を過小評価してはいけません)
- crontab は防弾で、実績があり、非常に広く使用され、理解されています
- エラー/成功メッセージを好きな場所に自由に誘導/分析できます
- 一部のデータベース タスクでは、mysql をオフラインにする必要があります (たとえば、フル バックアップ)。そのため、これらのタスクには cron を使用する必要があります。いくつかのタスクを cron で実行し、いくつかのタスクを mysql で実行することはお勧めできません。あなたはどこを見ればよいかわからないでしょう
- シェル スクリプトがある場合は、他のイベントを連鎖させることができます。
最後に、何かを実行できるからといって、それが良いアイデアであるとは限りません。Mysql はデータ処理が得意です。「シェル」のものには使用しないでください。
MySQLイベントスケジューラ–cronの優れた代替品。
MySQLデータベースのログテーブルを毎週切り捨てるなど、特定のプロセスをスケジュールする簡単な方法であるcronについては誰もが知っています。
MySQL 5.1で、MySQLのスタッフは新しいクールな機能を導入しました:MySQLイベントスケジューラ!
イベントスケジューラを使用すると、データベースで実行するタスクをスケジュールできます。これは、ホストがcronジョブを許可しないため、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 event scheduler is on the advantage for shared host environment. In terms of timing, it can also be scheduled down to the second. Unlike cron, it's by the minute - but you can work around this limitation however.