私は、集中ログシステムとしてmysqlサーバを使用していて、定期的に3か月以上経過したテーブルエントリを削除するジョブを持っています。これを行う最善の方法は何ですか?mysqlデータベースで3か月以上経過していない行を削除するジョブ
ありがとうございます。そして、「私はデータベース上で複数回実行したい、クライアントに依存しないコードを持っている、と私は出力を確認する必要はありません」、あなたの質問に言い換え
私は、集中ログシステムとしてmysqlサーバを使用していて、定期的に3か月以上経過したテーブルエントリを削除するジョブを持っています。これを行う最善の方法は何ですか?mysqlデータベースで3か月以上経過していない行を削除するジョブ
ありがとうございます。そして、「私はデータベース上で複数回実行したい、クライアントに依存しないコードを持っている、と私は出力を確認する必要はありません」、あなたの質問に言い換え
を-hinling
答えは「ストアドプロシージャを書き、それを定期的にどのクライアントからでも呼び出す」というものです。
アイテムが作成された日付をフィールドに保存していますか?
そうであれば、
DELETE FROM myTable WHERE dateEntered < DATE_SUB(NOW(), INTERVAL 3 MONTH);
が動作するはずです...
あなたがスケジュールされたタスク/ cronジョブでそれを実行することができます...
あなたの投稿をnecroにするつもりはありませんが、これは確かに私のトンを助けました。ありがとうございます – Eon
簡単な方法は、スケジュールされたジョブになりますこれは毎晩実行され、ストアドプロシージャを呼び出して3か月より古い行をすべて削除します。あなたのO/Sに応じて、それは簡単に行うべきです。それは毎晩やって、削除されたデータの量は1ヶ月に一度それを行うほどではありません。
これまで私のSPには、その時に不要なデータを削除するためのデータが挿入されていたので、基本的に行が挿入されるたびに、挿入後すぐに 'cleanup' procそれは少しのメンテナンスをしました。これは私の最初の選択ではありませんが、挿入物の数が少なく、削除が速く(ユーザーを遅くしたくない)場合には可能です。この副作用は、データが常に(つまり、すべてのデータは常に< = 3か月前)ですが、アプリ内で重要かどうかはわかりません。
チャンスがある場合は、他の目的のためにいつかデータを保存することをお勧めします。私は常にこれを行うと、あなたはあなたがデータを保存していることを知っていないマネージャーが突然それの緊急の必要性があります....彼らのために。
パフォーマンス上の理由から、データベースを小さく保つためにデータを削除すると仮定します。削除したデータをテーブルまたはデータベースに移動すると問題はありますか? – TimNguyenBSM
[テーブルのデータを24時間後に自動的にmysqlテーブルからデータの行を削除するにはどうすればよいですか?](https://stackoverflow.com/questions/44253746/how-do-i-deleterows- of-data-from-mysql-table-automatically-with-24時間後) – Alexander