かなり大きなデータベースをインポートして以来、MySQLの実行速度はひどく遅いようです。ローカルサイトがロード、ロード、ロードしているだけで、エラーが表示されない場合があります。Chromeのステータスバーに「リクエストを送信しています...」と表示されます。すべてのHTMLのみのサイトがすぐに読み込まれますが、データベースにアクセスする必要があるものはすべて読み込まれません。この問題はランダムに発生するようです。私は自分のローカルサイトで約30分間問題なく作業できますが、その後突然MySQLが私をカメにすることにしました。私はそれが記憶の問題だと思っていますが、正直なところ、何が原因なのかわかりません。誰かが試すアイデアがありますか?
2 に答える
まず、いくつかのツールをインストールして、一般的なメモリと CPU の使用状況を監視してみてください。
OS X には、Unix コマンドのより視覚的なバージョンであるアクティビティ モニター
top
と呼ばれるユーティリティが含まれており、いくつかの簡単な履歴グラフが含まれています。コンピューターの実行速度が遅いときにアクティビティ モニターを見ると、列の見出しをクリックして並べ替えることができます (「CPU %」または「実際のメモリ」の降順で並べ替えると、アクティブな原因が特定される場合があります)。便利な Menubar Extras のセットを含むMenu Metersなど、より微妙な監視ツールがいくつかあります。メニューバーのエクストラはリアルタイムで更新されるため、関心のある情報を設定でき、リソースが少ない場合にヒントを得ることができます.
定期的に速度が低下する場合は、コンピューターが仮想メモリのスワップ ファイルを割り当て/削除している場合や、アクティブなメモリをディスクにスワップしている場合にも発生する可能性があります。上記のユーティリティのいずれかを使用すると、割り当てられた/使用されたスワップと、その割り当てが急速に変化しているかどうかについてのヒントが得られるはずです。
次に、MySQL 固有の使用法をいくつか見てみましょう。
MySQL でスロー クエリ ログを有効にします。最適ではないクエリを見つけるのに役立ちます
スローダウンが発生したら、
mysql
シェルを使用して、現在実行中のクエリを確認してください。show processlist
インストールできるコンソール ユーティリティ
mytop
ユーティリティもあります。これは、MySQL プロセスリストを監視するのに便利です ( unix のように自動的に更新されますtop
)。MySQL Workbenchを使用して、より洗練された GUI から同様の管理者監視を行うこともできると思いますが、最近は使用していません。
上記が、一般的な問題を追跡するのに役立ついくつかのアイデアを提供してくれることを願っています。スローダウンが発生している理由 (リソース不足、インデックスの欠落、不適切なクエリなど) を見つけたら、適切な手順を実行して修正できます。
O'Reilly High Performance MySQL book も非常に有益な読み物です:) 。
発生する可能性のある多くの問題があります。
- ロックがあります(コンソールで「show innodb status \G」を実行すると、アプリがこれを確認するのが遅くなります)。
- メモリ不足になり、マシンがスワッピングしている可能性があります (UNIX が top または sar で検証する場合)。
- 実行に時間がかかるインデックス作成/クエリがある可能性があります。これを確認するには、スロークエリログを確認してください: http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html
これらは、パフォーマンスに影響を与える可能性のあるもののほんの一部ですが、おそらく最も一般的なものです。これで問題が解決しない場合は、質問に詳細を追加する必要があります。