3つの簡単な調整でMySQLを最適化する

3つの簡単な調整でMySQLを最適化する

私は熟練した DBA になるつもりはありませんが、MySQL を最適化するときは、いくつかの構成を調整するだけで最大 80% のパフォーマンス向上を実現できるという 80/20 ルールを信じています。特に、サーバーのリソースはますます安価になってきています。

警告する

1. 2 つのデータベースやアプリケーションがまったく同じであることはありません。ここでは、チューニングしているデータベースが「典型的な」Web サイトを提供しており、その優先事項は高速なクエリ、優れたユーザー エクスペリエンス、および大量のトラフィックの処理であると想定します。

2. サーバーを最適化する前に、データベースをバックアップしてください。

1. InnoDBストレージエンジンを使用する

まだ MyISAM ストレージ エンジンを使用している場合は、InnoDB に切り替える時期です。 InnoDB が MyISAM よりも有利な理由はたくさんあります。パフォーマンスが気になる場合は、物理メモリの使用方法を見てみましょう。

  • MyISAM: インデックスをメモリ内にのみ保存します。
  • InnoDB: インデックスとデータをメモリに保存します。

結論: メモリに保存されたコンテンツは、ディスクに保存されたコンテンツよりも高速にアクセスできます。

テーブルのストレージ エンジンを切り替える方法は次のとおりです。

ALTER TABLE テーブル名 ENGINE=InnoDB;

注: 適切なインデックスはすべて作成しましたか?パフォーマンスを向上させるには、インデックスの作成を常に最優先にする必要があります。

2. InnoDBにすべてのメモリを使用させる

my.cnf ファイルで MySQL 設定を編集できます。 innodb_buffer_pool_size パラメータを使用して、InnoDB がサーバー上で使用できる物理メモリの量を設定します。

これに関して一般的に受け入れられている「経験則」は (サーバーが MySQL のみを実行していると仮定して)、サーバーの物理メモリの 80% に設定することです。スワップ パーティションを使用せずにオペレーティング システムが正常に動作するのに十分なメモリがあることを確認した後、できるだけ多くの物理メモリを MySQL に割り当てます。

したがって、サーバーの物理メモリが 32 GB の場合、そのパラメータを最大 25 GB に設定できます。

innodb_buffer_pool_size = 25600M

*注: (1) サーバーのメモリが小さく、1 GB未満の場合。この記事の方法を使用するには、サーバーをアップグレードする必要があります。 (2)サーバーのメモリ容量が200GBなどの大容量の場合、常識的に考えて、オペレーティングシステム用に最大40GBのメモリを予約する必要はありません。 *

3. InnoDBを複数のタスクで実行できるようにする

サーバーのパラメータinnodb_buffer_pool_size 1 GB より大きく設定されている場合、InnoDB バッファ プールはパラメータ innodb_buffer_pool_instances の設定に従って複数のインスタンスに分割されます。

複数のバッファ プールを持つことの利点は次のとおりです。

複数のスレッドが同時にバッファ プールにアクセスすると、ボトルネックが発生する可能性があります。複数のバッファ プールを有効にすることで、この競合を最小限に抑えることができます。

バッファ プールの数に関する公式の推奨事項は次のとおりです。

最良の結果を得るには、innodb_buffer_pool_instances と innodb_buffer_pool_size の設定を考慮して、各インスタンスに少なくとも 1 GB のバッファー プールがあることを確認してください。

したがって、この例では、32 GB の物理メモリを搭載したサーバー上で、パラメータ innodb_buffer_pool_size は 25 GB に設定されています。適切な設定は25600M / 24 = 1.06 GBです。

innodb_buffer_pool_instances = 24

知らせ!

my.cnf ファイルを変更した後、変更を有効にするには MySQL を再起動する必要があります。

sudo サービス mysql を再起動

これらのパラメータを最適化するにはより科学的な方法もありますが、これらのポイントは MySQL サーバーのパフォーマンスを向上させるための一般的なガイドラインとして適用できます。

要約する

上記は、私がご紹介した MySQL を最適化するための 3 つの簡単な調整です。お役に立てれば幸いです。ご質問がある場合は、メッセージを残していただければ、すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • MySQL 4G メモリ サーバー構成の最適化
  • MYSQL開発パフォーマンス調査:バッチデータ挿入の最適化方法
  • MySQL の基本ステートメントを最適化するための 10 の原則の概要
  • MySQLが大量のデータを処理する際にクエリ速度を最適化するいくつかの方法
  • Mysql が CPU を過剰に占有する場合の最適化方法 (必読)
  • MySQL 最適化: キャッシュ最適化
  • MySQL の最適化: InnoDB の最適化
  • MySQL でレコードを挿入する速度を最適化する方法
  • MySQL 最適化ツールについての簡単な説明 - 遅いクエリ

<<:  Linux環境でのActiveMQ導入方法の詳しい説明

>>:  JS ネイティブ 2048 ゲーム ソース コード共有 (インターネットの最新情報)

推薦する

MySQL トランザクション同時実行問題の解決

開発中にこのような問題に遭遇しましたビデオ視聴記録が 100 に更新されると、視聴されたことを意味し...

Nginx 仮想ホストを構成する 3 つの方法 (ポートベース) の詳細な説明

Nginx は、IP ベースの仮想ホスト構成、ポート ベースの仮想ホスト構成、ドメイン名ベースの仮想...

Linux (Ubuntu 18.04) に Anaconda をインストールする詳細な手順

Anaconda は、大規模なデータ処理、予測分析、科学計算のための最も人気のある Python デ...

ウェブフロントエンド開発の細部

1 選択タグは閉じられている必要があります <select></select>...

Vueプロジェクトの支払い機能コードの詳細な説明

1. Alipay方式: Alipay メソッド: Alipay をクリックして支払い、バックエンド...

Node.js のワーカー スレッドの詳細な理解

目次概要Node.js における CPU バウンド アプリケーションの歴史CPUを集中的に使用する操...

Linux で誤って削除したメッセージ ファイルを復元する方法

プロセスで使用されていて、誤って削除されたファイルがある場合、それらを回復することができます。プロセ...

XHTML 入門チュートリアル: フォーム タグ

<br />フォームはユーザーが情報を送信するための重要なチャネルです。このセクションで...

ノードイベントループにおけるイベント実行の順序

目次イベントループブラウザ環境イベントループノード環境イベントループ6つのステージ(1)setTim...

jsシミュレーションでJingdongの詳細ページで画像を拡大する効果を実現

この記事では、Jingdongの詳細ページの画像の拡大を実現するためのjsの具体的なコードを紹介しま...

MySQLがトランザクション分離を実装する方法の簡単な分析

目次1. はじめに2. RC および RR 分離レベル2.1. RRトランザクション分離レベルでのク...

vue3 のさまざまな構文形式を比較したサンプルコード

デフォルトのテンプレートメソッドはvue2に似ており、コンポーネント内のセットアップ関数を使用します...

有名ウェブサイトのロゴにおすすめのフォント40選

世界で最も有名なウェブサイトのロゴデザインにはどんなフォントが使われているかご存知ですか?これらのフ...

ウェブフロントエンド開発者が知っておくべき 9 つの実用的な CSS プロパティ

1. 角を丸くする今日の Web デザインは、常に最新の開発テクノロジーに追随しており、HTML5 ...

初心者がソースコードからMySQLのデッドロック問題を理解する

夜遅くまで何度も困難なシングルステップデバッグを行った後、ようやく理想的なブレークポイントを見つけま...