MySQL InnoDB 挿入操作のパフォーマンスの問題
概要
使用した MySQL テーブルへのデータの挿入InnoDB エンジンは、特定のシナリオでは、予想よりも大幅に時間がかかることがあります。この記事では、このパフォーマンスの問題に対処し、解決策を提供します。
重要な質問
MySQL InnoDB テーブルへのデータの挿入が過度に遅いのはなぜですか?
分析
提供されたテスト スクリプトは明らかな差異を示していますMyISAM と InnoDB ストレージ エンジン間の挿入パフォーマンスに影響します。 MyISAM は 100 万行の挿入を約 6 秒で完了しますが、InnoDB は同じタスクに 3400 秒以上かかります。
説明
このパフォーマンス ギャップの主な理由原因は、MyISAM と InnoDB の基本的な設計の違いにあります。 MyISAM にはトランザクション サポートがないため、より効率的にデータを挿入できます。対照的に、InnoDB はトランザクションの整合性を強制し、各ステートメントの後にコミット操作を必要とします。デフォルトでは、InnoDB は挿入のたびにディスクへのログのフラッシュを実行するため、パフォーマンスに重大なオーバーヘッドが生じます。
解決策
このパフォーマンスの問題を軽減するには、次のことを活用することが重要です。 InnoDB のトランザクション処理機能を効果的に処理します。挿入ステートメントを明示的なトランザクション内に含めることで、ディスク書き込みの頻度を減らし、挿入速度を大幅に向上させることができます。
これを実現するには、挿入ループを開始する前に次のステートメントを実行します。
START TRANSACTION
挿入操作が完了したら、次のステートメントを使用してトランザクションをコミットします:
COMMIT
以上がInnoDB INSERT のパフォーマンスが MyISAM よりもはるかに遅いのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。