ホームページ データベース mysql チュートリアル MySQL のパフォーマンスを最適化するにはどうすればよいですか?最適化のヒントの共有

MySQL のパフォーマンスを最適化するにはどうすればよいですか?最適化のヒントの共有

Sep 22, 2022 pm 01:49 PM
mysql

MySQL のパフォーマンスを最適化するにはどうすればよいですか?最適化のヒントの共有

データベースのパフォーマンスの最適化に関して最も重要なことは、正しいものを選択することです。アプリケーションにリレーショナル データベースが必要か、非リレーショナル データベースが必要かを決定する必要があります。 1 つのジャンル内でも、複数の選択肢があります。リレーショナル データベースだけでなく、Oracle、MySQL、SQL Server、PostgreSQL などもあります。一方、非リレーショナル データベースには、MongoDB、Cassandra、CouchDB が導入されました。

読み取り/書き込みパフォーマンスを高速化するには、非リレーショナル データベースを使用することを提案してください。ただし、いくつかの改善と調整を行うことで、リレーショナル データベースを既知の制限を超えることができます。そこでこの記事では、MySQL データベースを高速化するためのヒントをいくつか紹介します。

なぜ MySQL を使用する必要があるのか​​具体的に疑問に思っている場合、答えは簡単です。MySQL は無料でオープンソースであり、PHP コミュニティで非常に人気があるのに対し、Oracle は価格が高いため広く使用されていないからです。他のオプションは MySQL ほど人気が​​ありません。

- MySQL サーバー構成: \

まず、オペレーティング システムに応じて、構成ファイルの場所を知る必要があります。 Linux システムでは、「/etc/mysql/my.cnf」にあります。 \
今度は、エンジン InnoDB と MyISAM を選択します。選択を容易にするために、InnoDB は「行レベルのロック、外部キー、トランザクション」をサポートしているため、MySQL 5.5 のデフォルト エンジンになった一方、MyISAM は前述の機能をサポートしていないため、次のような場合にはほとんど役に立たないことを知っておく必要があります。最新のアプリケーション プログラム。 \
正しいエンジンを選択したら、my.cnf ファイルにいくつかの構成変数を設定します。

max_connection 変数: \

max_connection 変数は、アプリケーションによって許可される接続の数を表します。デフォルト値は 151 接続ですが、「MySQL エラー、接続が多すぎます...」というエラー メッセージが表示された場合は、この数を簡単に増やすことができます\

最大连接数 = 170
ログイン後にコピー

innodb_buffer_pool_size 変数: \

処理を高速化するために、MySQL はサーバーのメモリにデータをキャッシュします。この変数は MySQL に使用できるギガバイト数を伝えます。この変数は、データベースに大きな BLOB を保存する場合に役立ちます。これをサーバーのメモリの 80 ~ 90% に設定できます。したがって、サーバーに 16 GB のメモリがある場合は、14 GB に設定できます。

innodb_buffer_pool_size = 14GB
ログイン後にコピー

innodb_io_capacity 変数: \

この変数は、MySQL が使用できる入出力操作の数を伝えます。これはディスクによって異なります。たとえば、単一の 7200 RPM ドライブは 200 I/O に制限されますが、エンタープライズ SSD ディスクは 50,000 I/O に制限されます。オペレーティング システムのコマンド ラインから入出力値を簡単に見つけて、変数を利用可能な I/O の 90% に設定できるため、MySQL が過剰な I/O 操作を使用することはありません。

innodb_io_capacity = 21000
ログイン後にコピー

query_cache_limit 変数と query_cache_size 変数:\

MySQL はメモリ内のデータのキャッシュもサポートしていますが、プログラムがリクエストするたびにキャッシュ システムとして依存することはできません。データがデータベース テーブルに書き込まれると、MySQL はテーブル全体のクエリ キャッシュを再構築します。したがって、プログラムの負荷が高い場合、MySQL キャッシュはまったく役に立たなくなります。この場合、両方の変数を 0 に設定して MySQL キャッシュのオーバーヘッドを節約することをお勧めします。代わりに、Redis などを使用してキャッシュを管理できます。 。

query_cache_limit = 0

query_cache_size = 0
ログイン後にコピー

スロー クエリ ログ:\

スロー クエリ ログには、どのクエリが定義したしきい値を超えているかが表示されるため、どのクエリが遅いかを推測する必要がなくなります。 。 \
まず、構成ファイルで slow_query_log を有効にする必要があります。 Linux サーバーで、「/etc/mysql/my.cnf」またはシステム上の同等のファイルを開きます。 \
さらに次を追加します:

slow_query_log = 1

long_query_time = 1
ログイン後にコピー

これらの 2 つのオプションにより、低速クエリ ログが有効になり、1 秒以上かかるクエリがログに記録されます。ファイルではなくテーブルでログを表示したい場合は、次のように追加します。

log_output = 'TABLE'
ログイン後にコピー

これにより、「slow_log」テーブルでログを見つけることができます。ここでは、1 秒以上実行されたすべての低速クエリに関する情報を確認できます。この情報には、クエリによって影響を受けた正確な実行時間と行数、およびクエリを実行したユーザーが含まれます。

クエリの最適化\

遅いクエリをすべて取得したら、クエリを最適化して高速化する方法が必要です。したがって、クエリ ステートメントの前に「explain」キーワードを追加すると、関連するクエリに関する詳細情報を取得できます。例: explain select * from users where active=1;

「説明」キーワ​​ードは、クエリがヒットするインデックスと、データを取得するためにクエリする行数を定義するのに役立ちます。この情報により、さらにインデックスを作成する必要があるか、データベース テーブルを再構築する必要があるかがわかります。

非正規化と制約: \

非正規化は、冗長データを追加するかグループ化することによって読み取りパフォーマンスを向上させるプロセスです。たとえば、「Products」テーブルと「Category」テーブルがある場合、「Products」テーブルをクエリするたびに、各製品の「カテゴリ名」も取得する必要があります。この場合、「join」を使用して「category_name」を取得できます。ただし、これは、ユーザーが製品ページを開くたびに、複雑な結合クエリが実行されることを意味します。したがって、「製品」テーブルに「カテゴリ名」を追加することを検討してください。データが冗長であるにもかかわらず、読み取りパフォーマンスの向上にはそれだけの価値があります。

非正規化方法により、「Product」テーブルの「Category Name」が古くなってしまう可能性があります。したがって、「外部キー」制約を定義する必要がありますが、MySQL はデータを書き込む前に制約をチェックする必要があるため、「外部キー」を使用すると書き込みパフォーマンスが若干遅くなることに注意する必要があります。したがって、最善の選択をするのは常にあなたの仕事です。

英語の元のアドレス: https://codeburst.io/database-performance-optimization-8d8407808b5b

翻訳アドレス: https://learnku.com/mysql/t/71571

[関連する推奨事項: mysql ビデオ チュートリアル ]

以上がMySQL のパフォーマンスを最適化するにはどうすればよいですか?最適化のヒントの共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MySQL:初心者向けのデータ管理の容易さ MySQL:初心者向けのデータ管理の容易さ Apr 09, 2025 am 12:07 AM

MySQLは、インストールが簡単で、強力で管理しやすいため、初心者に適しています。 1.さまざまなオペレーティングシステムに適した、単純なインストールと構成。 2。データベースとテーブルの作成、挿入、クエリ、更新、削除などの基本操作をサポートします。 3.参加オペレーションやサブクエリなどの高度な機能を提供します。 4.インデックス、クエリの最適化、テーブルパーティション化により、パフォーマンスを改善できます。 5。データのセキュリティと一貫性を確保するために、バックアップ、リカバリ、セキュリティ対策をサポートします。

MySQL:簡単な学習のためのシンプルな概念 MySQL:簡単な学習のためのシンプルな概念 Apr 10, 2025 am 09:29 AM

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

Navicatプレミアムの作成方法 Navicatプレミアムの作成方法 Apr 09, 2025 am 07:09 AM

NAVICATプレミアムを使用してデータベースを作成します。データベースサーバーに接続し、接続パラメーターを入力します。サーバーを右クリックして、[データベースの作成]を選択します。新しいデータベースの名前と指定された文字セットと照合を入力します。新しいデータベースに接続し、オブジェクトブラウザにテーブルを作成します。テーブルを右クリックして、データを挿入してデータを挿入します。

phpmyadminを開く方法 phpmyadminを開く方法 Apr 10, 2025 pm 10:51 PM

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

MySQLおよびSQL:開発者にとって不可欠なスキル MySQLおよびSQL:開発者にとって不可欠なスキル Apr 10, 2025 am 09:30 AM

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

NavicatでMySQLへの新しい接続を作成する方法 NavicatでMySQLへの新しい接続を作成する方法 Apr 09, 2025 am 07:21 AM

手順に従って、NAVICATで新しいMySQL接続を作成できます。アプリケーションを開き、新しい接続(CTRL N)を選択します。接続タイプとして「mysql」を選択します。ホスト名/IPアドレス、ポート、ユーザー名、およびパスワードを入力します。 (オプション)Advanced Optionsを構成します。接続を保存して、接続名を入力します。

NAVICATでSQLを実行する方法 NAVICATでSQLを実行する方法 Apr 08, 2025 pm 11:42 PM

NAVICATでSQLを実行する手順:データベースに接続します。 SQLエディターウィンドウを作成します。 SQLクエリまたはスクリプトを書きます。 [実行]ボタンをクリックして、クエリまたはスクリプトを実行します。結果を表示します(クエリが実行された場合)。

Navicatは、データベースエラーコードとソリューションに接続します Navicatは、データベースエラーコードとソリューションに接続します Apr 08, 2025 pm 11:06 PM

データベースに接続するときの一般的なエラーとソリューション:ユーザー名またはパスワード(エラー1045)ファイアウォールブロック接続(エラー2003)接続タイムアウト(エラー10060)ソケット接続を使用できません(エラー1042)SSL接続エラー(エラー10055)接続の試みが多すぎると、ホストがブロックされます(エラー1129)データベースは存在しません(エラー1049)

See all articles