MySQL パフォーマンスの最適化 MySQL パフォーマンスの最適化とは、リソースを合理的に配置し、システム パラメータを調整することで、MySQL の実行速度を速め、より多くのリソースを節約することです。 MySQL パフォーマンスの最適化には、クエリ速度の最適化、更新速度の最適化、MySQL サーバーの最適化などが含まれます。このブログでは、クエリの最適化、データベース構造の最適化、MySQL サーバーの最適化という 3 つの側面を紹介します。 MySQL データベースの最適化は、一方ではシステムのボトルネックを特定し、MySQL データベースの全体的なパフォーマンスを向上させることです。他方では、ユーザー操作の応答速度を向上させるために合理的な構造設計とパラメータ調整が必要です。同時に、システムがより大きな負荷のサービスを提供できるように、システムリソースを可能な限り節約することも必要です。たとえば、ファイルシステムを最適化することで、ディスク I\O の読み取りおよび書き込み効率を向上させることができます。オペレーティングシステムのスケジューリング戦略を最適化することで、高負荷時の MySQL の負荷容量を向上させることができます。テーブル構造、インデックス、クエリステートメントなどを最適化することで、クエリ応答を高速化することができます。 MySQL の挿入ステートメントの構文と、MySQL の挿入パフォーマンスを最適化する方法の紹介。 `table`(`field1`,`field2`) に値('value1','value2') を挿入します。 挿入性能を向上させる方法 1. 1つのSQL文で複数のレコードを挿入する `insert_table` (`uid`, `content`, `type`) に値 ('userid_0', 'content_0', 0) を挿入します。 `insert_table` (`uid`, `content`, `type`) に値 ('userid_1', 'content_1', 1) を挿入します。 次のように書くことができる `insert_table` (`uid`, `content`, `type`) に値 ('userid_0', 'content_0', 0), ('userid_1', 'content_1', 1); を挿入します。 2. トランザクションを使用する トランザクションを開始します。 `insert_table` (`uid`, `content`, `type`) に値 ('userid_0', 'content_0', 0) を挿入します。 `insert_table` (`uid`, `content`, `type`) に値 ('userid_1', 'content_1', 1) を挿入します。 ... 専念; 知らせ 1. SQL 文の長さには制限があるため、SQL 文をマージするときは注意してください。長さの制限は max_allowed_packet 設定項目を通じて変更できます。デフォルトは 1M です。 2. トランザクションが大きすぎると実行効率に影響します。MySQL には innodb_log_buffer_size 設定項目があります。この値を超えるとディスクデータが使用され、実行効率に影響します。 トランザクション構成項目の説明: innodb_バッファプールサイズ Innodb を使用する場合、これは重要な変数です。 MyISAM と比較すると、Innodb はバッファ サイズに対してより敏感です。 MySIAM は大量のデータに対してデフォルトの key_buffer_size で問題ないかもしれませんが、Innodb は大量のデータに対してデフォルト値で上昇しているように感じます。 Innodb のバッファ プールはデータとインデックスをキャッシュするため、システム キャッシュ用のスペースを残す必要はありません。Innodb のみを使用する場合は、この値をメモリの 70% ~ 80% に設定できます。 key_buffer と同様に、データ量が少なく、あまり増加しない場合は、この値を高く設定しすぎないことでメモリ使用量を改善することもできます。 innodb_追加プールサイズ 少なくともオペレーティング システムがメモリを適切に割り当てることができる場合、この影響はあまり顕著ではありません。ただし、Innodb が他の目的に割り当てるメモリの量を確認するには、20M 以上に設定する必要がある場合があります。 innodb_log_file_size これは、大量のデータ、特に大容量のデータを書き込むときに非常に重要です。ファイルが大きいほどパフォーマンスは向上しますが、データベースの復元には時間がかかることに注意してください。通常は、サーバーの容量に応じて 64M ~ 512M を使用します。 innodb_log_buffer_size 中程度の書き込み操作と短いトランザクションを使用するほとんどの用途では、デフォルト値で十分です。頻繁に更新したり、大量の BLOB データを使用したりする場合は、この値を増やす必要があります。ただし、大きすぎると、1 秒ごとにフラッシュ (中国語ではどのように言うのでしょうか?) が行われるため、メモリが無駄になります。したがって、1 秒よりも長く設定する必要はありません。通常は 8M ~ 16M で十分です。小さなアプリケーションは小さく設定できます。 innodb_flush_log_at_trx_commit Innodb は MyISAM より 100 倍遅いと不満を言っていますか?おそらくこの値を調整するのを忘れたのでしょう。デフォルト値 1 は、トランザクションのコミットまたはトランザクション外の命令ごとにログをハード ディスクにフラッシュする必要があることを意味し、非常に時間がかかります。特にバッテリーバックアップキャッシュを使用する場合。多くのアプリケーションでは、特に MyISAM テーブルから転送する場合は、これを 2 に設定すると問題ありません。これは、データがハードディスクではなくシステム キャッシュに書き込まれることを意味します。ログは毎秒ディスクにフラッシュされるため、通常は 1 ~ 2 秒以上の更新が失われることはありません。 0 に設定すると高速になりますが、安全性が低下し、MySQL がクラッシュした場合でもトランザクション データが失われる可能性があります。値が 2 の場合、オペレーティング システム全体がクラッシュした場合にのみデータが失われる可能性があります。 要約する 上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。 以下もご興味があるかもしれません:
|
<<: Docker コンテナ入門から夢中になるまで(推奨)
>>: JSはreduce()メソッドを使用してツリー構造データを処理します
SSH の正式名称は Secure SHell です。 SSH を使用すると、送信されるすべてのデ...
ant-design-vue テーブルのスケーラブルな列の問題に対する完璧なソリューション。固定列と...
この記事では、WeChatアプレットのスクロールビューの左右連動を実現するための具体的なコードを参考...
1. nginxをダウンロードする [root@localhost my.Shells]# dock...
Nginx Rewriteの使用シナリオ1. URL アドレスジャンプ。たとえば、ユーザーが pm....
この記事では、Web ページの作成を学習するときに注意すべき HTML タグに関するいくつかの問題を...
この記事では、シンプルなカルーセルを実装するためのJavaScriptの具体的なコードを参考までに紹...
1. 何ですか マークアップ言語として、CSSは比較的シンプルな構文とユーザーに対する要件が低いが、...
このチュートリアルの動作環境: Windows 7 システム、MySQL 8 バージョン、Dell ...
データは企業の中核資産であり、企業にとって最も重要なタスクの 1 つです。注意しないと、データが意図...
webpack をパッケージ化する前に、次の作業が完了していることを確認する必要があります。 1) ...
目次前面に書かれた双方向暗号化エンコード/デコードAES_ENCRYPT/AES_DECRYPT D...
以下の属性はブラウザとの互換性があまりありません。 1.transform:rotate(45度) ...
データベースのインストール中に次のエラーが発生しました: 解決策は次のとおりです。 1. binディ...
例: VMware IOInsight は、VM のストレージ I/O 動作を理解するのに役立つツー...