大量のデータを配信するクエリの最適な MySQL 設定
質問:
返される MySQL クエリを最適化するにはどうすればよいですか?多数のレコード (この場合は約 5,000 万件) が発生し、実行時間が長くなる
答え:
エンジンに合わせて MySQL を調整する
- サーバー構成を確認し、それに応じて設定を調整します。
-
リソースについてよく理解する例:
- http://www.mysqlperformanceblog.com/
- http://forge.mysql.com/wiki/ServerVariables
- ストアド プロシージャを使用してサーバー側でデータを処理し、大規模なデータセットをアプリケーションに転送する必要性を減らすことを検討してください。 layer.
InnoDB エンジンの使用を検討する
- InnoDB は、インデックス検索と同じページに行データを格納することでパフォーマンスを向上させる可能性があるクラスター化インデックスを提供します。 .
- アクセスを最適化するために、インデックス フィールドを含む複合主キーを作成します。 InnoDB では複合キーで AUTO_INCREMENT を使用できないことに注意してください。
分割統治
- ストアド プロシージャを使用してデータをバッチで返します。キー フィールドの値の範囲を指定します (例: df_low とdf_high).
- アプリケーション層では、マルチスレッドまたはループを使用して、管理可能なチャンクでデータを取得して処理します。
追加の最適化
上記の提案に加えて、さらなるパフォーマンスを得るために以下のリソースを調べてください。拡張機能:
- http://www.jasny.net/?p=36
- http://jpipes.com/presentations/perf_tuning_best_practices.pdf
InnoDB Stored を使用した具体的な例プロシージャ
次の例は、InnoDB ストアド プロシージャとマルチスレッド C# アプリケーションを使用してパフォーマンスを向上させる方法を示しています。
データをフェッチするストアド プロシージャを作成するバッチで:
- を呼び出す C# アプリケーションを開発します。ストアド プロシージャを作成し、クエリ後の処理のために結果をコレクションに追加します。
- 複数のスレッドを使用して、データの異なるバッチを同時にフェッチします。
これらの手順に従うことで、コストを大幅に削減できます。 MySQL での大規模なデータ クエリの実行時間。
以上が大量のデータを返すために MySQL クエリを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。