*シリーズの一部:link:/ community / tutorial_series / how-to-troubleshoot-issues-in-mysql [MySQLの問題のトラブルシューティング方法] *

このガイドは、MySQLセットアップを診断する際のトラブルシューティングリソースおよび開始点として役立つことを目的としています。 多くのMySQLユーザーが遭遇する問題のいくつかを調べ、特定の問題のトラブルシューティングのガイダンスを提供します。 また、特定の場合に役立つ可能性のあるDigitalOceanチュートリアルおよび公式のMySQLドキュメントへのリンクも含めます。

ユーザーは、データに対するクエリの発行を開始すると問題が発生する場合があります。 MySQLを含む一部のデータベースシステムでは、次の例のように、クエリを完了するには、クエリステートメントがセミコロン( +; +)で終わる必要があります。

SHOW * FROM ;

クエリの最後にセミコロンを含めない場合、セミコロンを入力して「+ ENTER +」を押してクエリを完了するまで、プロンプトは新しい行に続きます。

一部のユーザーは、クエリが非常に遅いことに気付く場合があります。 どのクエリステートメントがスローダウンの原因であるかを見つける1つの方法は、MySQLのスロークエリログを有効にして表示することです。 これを行うには、MySQLサーバーのオプションを設定するために使用される `+ mysql.conf`ファイルを開きます。 このファイルは通常、 `+ / etc / mysql / mysql.conf.d / +`ディレクトリ内に保存されます:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

次の行が表示されるまでファイルをスクロールします。

/etc/mysql/mysql.conf.d/mysqld.cnf

. . .
#slow_query_log         = 1
#slow_query_log_file    = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
. . .

これらのコメントアウトされたディレクティブは、スロークエリログのMySQLのデフォルト設定オプションを提供します。 具体的には、次のとおりです。

  • + slow-query-log +:これを `+ 1 +`に設定すると、スロークエリログが有効になります。

  • + slow-query-log-file:MySQLがスロークエリを記録するファイルを定義します。 この場合、 `+ / var / log / mysql-slow.log +`ファイルを指します。

  • + long_query_time +:このディレクティブを `+ 2 +`に設定することで、完了までに2秒以上かかるクエリをログに記録するようMySQLを設定します。

  • + log_queries_not_using_indexes +:これは、インデックスなしで実行されるクエリも `+ / var / log / mysql-slow.log +`ファイルに記録するようMySQLに指示します。 この設定は、スロークエリログが機能するために必須ではありませんが、非効率的なクエリを見つけるのに役立ちます。

先頭のポンド記号( )を削除して、これらの各行のコメントを解除します。 セクションは次のようになります。

/etc/mysql/mysql.conf.d/mysqld.cnf

. . .
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 2
log_queries_not_using_indexes
. . .

スロークエリログを有効にした後、ファイルを保存して閉じます。 次に、MySQLサービスを再起動します。

sudo systemctl restart mysql

これらの設定を行うと、スロークエリログを表示して問題のあるクエリステートメントを見つけることができます。 次のように、 `+ less +`でこれを行うことができます。

sudo less /var/log/mysql_slow.log

速度低下の原因となるクエリを特定したら、https://www.digitalocean.com/community/tutorials/how-to-optimize-queries-and-tables-in-mysql-and-でガイドを見つけることができます。 mariadb-on-a-vps [VPS上のMySQLおよびMariaDBでクエリとテーブルを最適化する方法]は、それらを最適化するのに役立ちます。

さらに、MySQLには、MySQLがクエリを実行する方法に関する情報を提供する `+ EXPLAIN `ステートメントが含まれています。 https://dev.mysql.com/doc/refman/5.7/en/using-explain.html[MySQL公式ドキュメントのこのページ]は、非効率的なクエリを強調するために ` EXPLAIN +`を使用する方法に関する洞察を提供します。

基本的なクエリ構造の理解については、https://www.digitalocean.com/community/tutorials/introduction-to-queries-mysql [MySQLクエリの紹介]を参照してください。