0

現在、MySQL アプリケーションに問題があります。実際、私は数ヶ月後に発生するかもしれない問題について心配しています.

シナリオは次のとおりです。多くのクライアントが使用する Web アプリケーションを開発しています。これは、固有のコアといくつかの適応 (同じコアで実行される) を持つアプリケーションであるため、データベースはすべての適応で同じです。各アダプテーションには、それを使用する 1 つ以上のクライアントがあります。

したがって、私のデータベースには 200 を超えるテーブルがあり、クライアントごとに 1 日あたり 500 行を超えるテーブルもあります。データベースが大きくなりすぎると、選択に非常にコストがかかるのではないかと心配しています。

複数のデータベース (同一のスキーマ) を作成することを考えていました。アプリケーションは、ログに記録されたクライアントに基づいて、使用するデータベースを決定する必要があります。しかし、スキーマを更新するには本当に問題が発生します (各データベースを更新する必要があります)。私のアプリケーションはデータベースを選択できますが、それは問題ではありません。

  • 大量のデータがある場合、MySQL は本当に停止できると思いますか?
  • 複数の同一スキーマ データベースを簡単に更新する方法はありますか?
  • マスター/スレーブ方式で問題を解決できますか?

すべてのテーブルに、その行がどのクライアントに属しているかを示す列があり、常にすべての選択クエリで WHERE 句として使用することを知っておくことが重要だと思います。

ですから、私が助けを必要としているのは、何をすべきかを決めることです。これらの質問について教えていただけますか?他にスマートなソリューションはありますか?

重要かどうかはわかりませんが、私は PHP を使用しています。

皆さん、ありがとうございました!

4

2 に答える 2

1

1 日あたり 500 行で十分です。これは高負荷ではありません。

データベースまたはデータベース内の複数のクライアントは、「マルチテナンシー システム」と呼ばれます。複数のテナンシーを同じデータベースに保持するのは少し面倒ですが、実行可能です。

テーブルのインデックスを定義する必要があります。これには、ほとんどの場合、クライアント ID とその他の列が含まれている必要があります。

おそらく、クライアント ID を非正規化して、すべての主要なテーブルの列として使用できるようにすることも必要になるでしょう。これにより、インデックスに配置できます。

MySQL は完全な信頼性を持っていませんでした。最近は改善されており、特に PHP を使用しているため、別の DB を変更することはお勧めしませんが、自動バックアップを定期的に (たとえば毎晩) 実行するようにしてください。

于 2013-09-28T01:04:18.927 に答える
1
  1. 停止は大きな言葉ですが、遅くなる可能性があります。私がここで読んだことから、「たくさん」のデータはありません。それはメモリのサイズに関するものであるため、行の量よりもそれに集中する必要があります。インデックスの世話をしてください。

  2. これを管理するシステムはありますが、データベース構造を取得する方法/場所によって異なります。SQLクエリを使用してスキーマを変更すると思いますが、すべてのデータベースでそのクエリを自動的に実行するのはそれほど難しくありませんよね? それらがファブリックとは異なるマシンになる場合は、Fabric が役立つ可能性があります。

  3. 読み取りが多すぎる場合は、問題が解決します。

ノート

私がこれまでに読んだことによると、それほど多くのデータはなく、MySQL が今後何年も処理できないものは何もありません。

于 2013-09-27T23:43:51.673 に答える