私は自分のサイトで1日を通して発生する特定のことを追跡し、データをコンパイルして日常的に表示できるようにしたいと考えています。SQLデータベースでこれを行うための最良の方法は何ですか?何かが発生するたびに(1日あたり数千になる可能性があります)「date | action | data」を保持するよりも優れた方法がありますか?それを確認したい場合は、「where date = X」をプルしますか?このように多くのオーバーヘッドが発生するようですが、他にどのように行うかはわかりません。
質問する
282 次
1 に答える
0
MySql は、大量のログ データを格納するのには適していない可能性がありますが、いくつかの最適化を行うことで改善される可能性があります。いくつかのヒントを次に示します。
- 同時挿入で MyISAM を使用する
- テーブルを毎日ローテーションし、ユニオンを使用してクエリを実行する
- MySQL または Gearman などのジョブ処理エージェントで遅延挿入を使用する
ここではデータの取得は問題にならないかもしれませんが、ストレージ エンジンは非常に重要であり、MySAM はトランザクションがない (サポートされていない) 場合に最適なオプションです。
MyISAM でサポートされる行の最大数は、テーブルあたり最大 64 のインデックスで ~4.29E+09 です。これはあなたにとってかなり良いと思います。
MySql を使用した効率的なログ記録に関する詳細な記事を確認してください。
于 2012-11-24T08:50:32.607 に答える