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()メソッドを使用してツリー構造データを処理します
以下は、Shiji Tiancheng が Tencent KartRider ページを呼び出すため...
ページ置換アルゴリズム: 本質は、限られたメモリをワイヤレス プロセスに対応できるようにすることです...
Harbor は、Docker イメージを保存および配布するためのエンタープライズ レベルのレジスト...
SFTPの概念sftp は、安全なファイル転送プロトコルである Secure File Transf...
目次Refsとは何か1. 文字列型参照2. コールバック参照React.createRef() 4....
環境Linux 3.10.0-693.el7.x86_64 Docker バージョン 18.09.0...
データベースインデックスについては皆さんもよくご存知だと思います。 インデックスは、データベース テ...
ブランクのブログ: http://www.planabc.net/ innerHTML プロパティは...
背景Navicat は、最高の MySQL 視覚化ツールです。ただし、ビューのインポートとエクスポー...
HTML イベント リスト一般イベント: onClick HTML: マウスクリックイベント。主にオ...
システム環境: Windows 7 1. DockerをインストールするDocker公式サイトからd...
目次1. MySQL の時刻型2. タイムゾーンを確認する3. 不正な時間値4. 厳密モード5. 事...
目次1. クロージャとは何ですか? 2. クロージャの役割2.1) メモリ2.2) プライベート変数...
<br />前の記事:Webデザインチュートリアル(5):Webビジュアルデザイン。 1...
Innodbには以下のコンポーネントが含まれています1. innodb_buffer_pool:これ...