2009-03-09 11 views
2

私は、既存のphpBBインストールを、書き込みクエリからの読み込みクエリを2つの別々の複製されたMySQLサーバに分けることによって、規模を拡大しようとしています。誰かが、特にphpBBでこれを成功させましたか?phpBBのスケーリング?

私が今までに持っていた最大の問題は、クエリがコード全体にばらばらに散らばっているようだということです。私は他の誰かがこれをやったのか聞いてみたいと思います。

+0

なぜあなたはこれをやっているのですか?あなたがこれを行うことがトラフィックのロードバランシングに勝つ以上の勝利であることを示唆する何らかのベンチマークを行ったことがありますか? –

+0

これは、基本的なロードバランシングと並行して行われます。私たちは、世界中からの小さな時間枠に集中しているばかげたトラフィックを期待しており、既存のシステムを改造する必要があります。 –

+0

@Scott Evernden非常にトランザクション性の高いシステムでは、異なる物理データベースサーバーへの読み取りと書き込みを分離するのが一般的です。テーブルのロックは、あるスレッドが行に書き込みを行っているときに発生します。つまり、書き込みが完了するまで他のすべてのスレッドが読み取ることができません。読み込みをレプリカスレーブ(コミット後に新しいデータのみを受け取る)にシフトすることによって、読み込みを待つ必要がないことを意味します。 –

答えて

3

RAMを追加するだけです。データベース全体を保持するのに十分なRAM。あなたの非効率的なスクリプトがどのくらい速く飛ぶかは驚かれるでしょう。メモリは、多くのデータベースの縮尺間違いを許します。

+0

このロジックはこれまでのところしかありません。 128GBのRAM、32のコアなどを搭載したサーバー上で動作するいくつかのWebアプリケーションがありますが、それでもデータウェアハウス全体を保持するには不十分です。 – cbmeeks

4

MySQL Proxyを試すと、アプリケーションを変更せずに簡単にクエリを分割できます。

+0

これは私が今調べているものです。ありがとう。 –

0

私はこれがずっと前に尋ねられたことを知っていますが、誰かを助けることができる場合には、私が経験したことを分かちたいと思います。

問題がテーブルロックで、その日のphpbbのデフォルトストレージエンジンがMyISAMであることを知っていれば、InnoDBストレージエンジンに移行してみましたか?

最も頻繁にロックされているテーブルを見つけ、InnoDBに変換してください。セッションテーブルはここでは最初の候補ですが、それが主要なボトルネックである場合は、他の最適化(たとえば、memcacheなどにセッションデータを格納するなど)を検討することもできます。