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()メソッドを使用してツリー構造データを処理します
yum install mysql-serverと入力します。続行するにはYを押してくださいインスト...
システムメンテナンス中は、いつでも CPU 使用率を確認し、対応する情報に基づいてシステムの状態を分...
私は同時通訳音声認識機能を使用して、WeChatアプレットのホームページの音声検索機能を実現しました...
HTML ハイパーテキスト ドキュメントの基本構造は、ドキュメント ヘッダーとドキュメント本体の 2...
目次物体オブジェクト定義オブジェクトのメンバーを反復処理するJS組み込みオブジェクト数学オブジェクト...
mysql のインストール情報を表示します。 #ps -ef | grep mysql usr/bi...
目次序文紹介-公式設定例序文vueCli を使用してプロジェクトを開発したことのある方は、少しがっか...
MySQL ifnull のネストされた使用ifnull をネストする方法があるかどうかオンラインで...
著者は最近、仕事でパフォーマンスのボトルネックの問題に遭遇しました。MySQL テーブルには毎日約 ...
mysql ストレージ エンジン: MySQL サーバーはモジュール スタイルを採用しており、特にス...
Nginx ログの説明アクセス ログを通じて、ユーザーの地理的起源、ジャンプ元、使用端末、特定の U...
この記事の例では、星のきらめき効果を実現するためのjsの具体的なコードを共有しています。具体的な内容...
目次序文一般的な方法1. 親コンポーネントを介して子コンポーネントの発行イベントをリッスンしてpro...
序文:最も一般的に使用される MySQL 論理バックアップ ツールは mysqldump です。通常...
目次序文-リンクカスタムネットワーク質問する序文前回は、 -Linkパラメータを使用してコンテナ間の...