0

アカウントごとに 1 つずつ、同一のテーブル構造 (3 つの InnoDB テーブル) を持つ個別の MySQL スキーマ (別名データベース) に、分離 (およびシャーディング) されたユーザー データを格納するアプリケーションがあります。Amazon RDS を使用してデータを保存しており、現在、RDS インスタンスごとに約 30,000 のスキーマがあります。私の質問は、多数のスキーマに対して MySQL 設定 (または RDS、パラメーター グループ設定) を最適化する方法についてです。

何千もの同一のスキーマを持つ慣行を非難する反射があることを私は知っています。代わりに、インデックス付きの「account_id」列のようなものを持つ単一のスキーマがあることを示唆しています。一般的に言われている議論は、シャード ウォーキングやスキーマの変更によるペナルティがメリットを上回るというものです。私たちの場合、データを分離しておく必要があり、異なるアカウント間の相互作用はありません。

このような状況でパフォーマンスを最大化するには、どのような方法がありますか?

4

1 に答える 1

0

事前の警告: 私は Amazon RDS について何も知らないので、この回答はナンセンスかもしれません。一般的なMySQLの観点から答えています。

セットアップが完全に最適化されているわけではありませんが、調整する方法はいくつかあります。テーブルを頻繁に開いたり閉じたりしないようにしたいので、同時に多くのテーブルを開く必要があります。

これをする:

  • OS で MySQL が多数のオープン ファイルを持つことが許可されていることを確認してください。
  • table_cache を適切に設定する

MySQL のマニュアルには、さらにいくつかの参考文献があります。

この制限を実際にどのくらい高くするかは、リソースの制約によって異なります。開いているテーブルごとにメモリが必要です - どのくらいかわかりません。チューニング プライマーmysqltuner.plなどのスクリプトは、メモリのオーバーコミットを防ぐのに役立ちます。

于 2010-12-23T22:45:42.510 に答える