そのため、パフォーマンスに少し問題があります。データベースを構築する Java プログラムを作成しました。問題は、データをロードするときです。SQL データベースに 5,000 個のファイルを読み込んでいます。プログラムが開始されると、10 分間で約 10% のファイルを処理できますが、進行するにつれて速度が大幅に低下します。現在 28% で、現在の速度で 16 時間で終了します。ただし、その速度は大幅に低下しています。
私の質問は、プログラムが実行されるにつれてプログラムが徐々に遅くなるのはなぜですか、そしてそれを修正する方法です。
編集: 2 つのバージョンがあります。1 つはねじ山 (最大 5 スレッド) で、もう 1 つはねじ山ではありません。両者の違いはごくわずかです。誰かが好きなら、コードをもう一度投稿できますが、ボトルネックがMySQLであることがかなり確信できるようになったので、取り出しました(適切に再タグ付けされました)。私は先に進み、バッチ挿入を使用しました。これにより、最初は速度が向上しましたが、データの約 30% を処理した後、すぐに速度が低下しました。
だからSQLポイント
- 64 個のテーブルすべてのエンジンは InnoDB バージョン 10 です。
- この時点で、テーブルには約 30 万行あります (データの約 30%)。
- すべてのテーブルには、1 つの「結合」主キーがあります。ID と日付。
- MySQL WorkBench を見ると、スレッドごとに 1 つのクエリ (5 つのクエリ) があることがわかります。
- 時間の単位はわかりませんが (MySQL 管理者から読み取っただけです)、ファイルが既に挿入されているかどうかを確認するためのクエリに 300 がかかっています。(このクエリは、MyTable Limit 1 to 1 の SELECT MyIndex であるため、高速である必要があります。プログラムを開始および停止しているため、このチェックを組み込み、ファイルが既に挿入されているかどうかを確認しました。そうすれば、変更のたびに開始して、プロセスを再度開始することなく、改善点があるかどうかを確認できます。
- パフォーマンスの低下がテーブルのサイズに関連していることは確かです。(今すぐプログラムを停止して開始できますが、プロセスは遅いままです。プロセスが許容できる速度で進行しているのは、テーブルが小さい場合のみです。)
- どうぞ、お尋ねください。あなたが必要とするあらゆる情報を掲載します。
終わり!まあ、必要な4日間実行させただけです。助けてくれてありがとう。
乾杯、
--オーラン