MySQLデータベースをホストするためのサーバー構成

MySQLデータベースをホストするためのサーバー構成

仮想サーバーでホストされている MySQL データベースを使用する Web アプリケーションがあります。アプリケーションを開始した当初、データベースが非常に小さかったときにこのサーバーを使用していました。現在、データベースが大きくなり、サーバーがデータベースを処理できなくなり、頻繁にデータベース エラーが発生します。サーバーを購入する予定なので、そのためのアドバイスが必要です。
前述したように、データベースは現在 9 GB で、急速に増加しています。数百万行のテーブルがいくつかあり、頻繁に更新およびクエリされます。データベースに表示される最も頻繁なエラーは ですLock wait timeout exceeded。以前は、「ロックの合計数がロック テーブルのサイズを超えています」というエラーもありましたが、Innodb バッファー プールのサイズを増やすことで回避できました。
購入するサーバーでどのような構成を探すべきか教えてください。どこかで、データベースのバッファー プール サイズはデータのサイズよりも大きいのが理想的であると読んだので、私の場合は 9 GB のメモリが必要になると思います。サーバーで他に何を探す必要がありますか?

詳細情報を提供すべきかどうか教えてください。

答え1

というPerlスクリプトを使うことができます。MySQLチューナー微調整する変数や、必要に応じてアップグレードするハードウェアのアイデアを得られます。
ただし、設定を変更する前に設定を理解しておく必要があります。そうしないと、問題が悪化する恐れがあります。

スクリプト自体に非常に洞察に富んだヒントが含まれています。

*警告
MySQL データベース サーバーに加える変更をすべて完全に理解することが非常に重要です。スクリプトの出力の一部が理解できない場合、または推奨事項が理解できない場合は、知識のある DBA または信頼できるシステム管理者に相談してください。変更は必ずステージング環境でテストし、1 つの領域の改善が MySQL の他の領域に悪影響を与える可能性があることを常に念頭に置いてください。
*警告

このテーマに関する素晴らしい記事はPerconaのMySQL パフォーマンス ブログ書籍リストその主題を扱い、スクリーンキャストまでペルコナWebサイト。

答え2

ロック待機を調べましたか?

InnoDB ロック モニターをアクティブ化することでこれを実行できます。

innodb_lock_monitor テーブルを作成します(int) ENGINE=INNODB;

次に、MySQL エラー ログを tail します。

モニターを無効にするには、テーブルを削除します。

HTH

関連情報