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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

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

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

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

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

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

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

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