web-dev-qa-db-ja.com

MySQLのメモリ使用量を最適化するにはどうすればよいですか?

MY SETUP(

次の仕様のAmazon High CPUエクストララージEC2インスタンスでLinuxを実行しています。

  • 7 GBのメモリ
  • 20 EC2コンピューティングユニット(それぞれ2.5 EC2コンピューティングユニットを備えた8つの仮想コア)
  • 1690 GBのローカルインスタンスストレージ
  • 64ビットプラットフォーム

MyISAMストレージエンジンで2つの大きなMySQLデータベースを実行しています。 1つは2 GB、もう1つは500 MBです。 MySQLができる限り多くのRAM /クエリ速度を最大化するために必要である)を使用していることを確認したいのですが、key_buffer_sizeおよびMyISAM_sort_buffer_size,しかし、私はこれらを最適化することに慣れていません。

[〜#〜]質問[〜#〜]

  1. MySQLがLinuxシステムで現在使用しているメモリを確認するにはどうすればよいですか?
  2. MySQLのメモリ使用量を最大化/最適化するにはどうすればよいですか?
  3. クエリとスキーマが最適化されている場合、他にどのような変更を検討する必要がありますか?
9
T. Brian Jones

これは難しいトピックです。ここでは回答できません。これについて books 全体が書かれています。 innodb_buffer_pool_sizeを十分に大きくすることをお勧めします。 myisamテーブルを使用している場合は、key_buffer_sizeを確認してください。また、table_cacheとmax_connectionsも考慮する必要があります。

ここにあなたを助けることができる何かがあります:

http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/http://www.mysqlperformanceblog .com/2007/11/01/innodb-performance-optimization-basics /http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/

編集:

@ drew010が言ったように、DBの使用方法を考慮することが重要です。大量の読み取りDBのチューニングは、大量の書き込みとは大きく異なります。また、他の戦略を検討することもできます。 Memcached、nosqlデータベースなどのように。

7

MySQLが必要なすべてのメモリを使用することを確認する必要がある場合は、InnoDBに切り替える必要があります。 MySQL FULLTEXT検索機能を使用しない限り、深刻な問題は発生しません。

MyISAMの場合、内部MySQLキーバッファーやシステムキャッシュなど、いくつかのキャッシュが使用されます。最高のパフォーマンスが必要な場合は、いずれかのキャッシュのためのスペースを残す必要がありますが、特にデータベースが書き込みが多い場合は、MyISAMをお勧めしません。MyISAMは書き込み時にテーブル全体をロックしますが、InnoDBは影響を受ける行のみをロックします。

データベースをすべてメモリに配置したとしても、インデックスの不足やその他の理由により、クエリの実行が遅くなる可能性があります。

1
sanmai