6

皆さん、私はソーシャル ゲームの開発者であり、ゲームには既に 70 万人のプレイヤーがおり、毎日約 7,000 人の新しいプレイヤーが登録され、約 5,000 人のプレイヤーが常にオンラインになっています。

DB サーバーは非常に強力なハードウェアで実行されています。16 コアの CPU、24 Gb の RAM、4 つの SAS ディスク上に構築された BBU を備えた RAID-10 です。私は Percona サーバー (パッチを適用した MySQL-5.1) を使用しており、現在 InnoDB バッファー プールは 18Gb です (ただし、innotop によると、利用可能な空きバッファーはわずかしかありません)。DB サーバーのパフォーマンスはかなり良好です (2k QPS、iostat %util は 10 ~ 15%、vmstat の「b」状態のプロセスはほぼ常に 0、loadavg は 5 ~ 6)。ただし、時々(数分ごとに)約10〜100の遅いクエリが発生します(それぞれが約5〜6秒続く場合があります)。

MySQL データベースには、最も多くのスペースを占める 1 つの大きな InnoDB テーブルがあります。約 3 億行あり、サイズは約 20 Gb です。もちろん、このテーブルは徐々に大きくなっています...データベースの全体的なパフォーマンスに悪影響を及ぼしているのではないかと心配し始めています。近い将来、私はそれについて何かをしなければならないでしょうが、正確にはわかりません。

基本的に問題は、シャードするか、単に RAM を追加するかということです。もちろん、後者の方が簡単です。最大 256 GB の RAM を追加できるようです。しかし問題は、よりスケーラブルなため、代わりにシャーディングの実装により多くの時間を投資する必要があるかどうかです。

4

3 に答える 3

1

300m 以上の行をすべて取得する必要がある場合は、シャーディングが妥当と思われます。今変更するのは面倒かもしれませんが、テーブルがどんどん大きくなっていくと、問題を解決する RAM の量がなくなる時点が来るでしょう。このような大量のデータでは、行ではなくデータのドキュメントを保存できるため、couch db などを使用する価値があります。つまり、1 つのドキュメントに個々のユーザーのすべてのレコードを含めることができます。

于 2011-03-26T23:36:26.213 に答える
0
I'm getting about 10-100 slow queries(where each may last about 5-6 seconds).

コメントの引用:Database is properly normalized. The database has many tables, one of them is really huge and has nothing to do with normalization. 私がこれを読んでいるとき、私はそれがあなたのクエリに関係していると言うでしょう..あなたのハードウェアとは何の関係もありません..平均的な企業は、あなたが持っているサーバーの種類を夢見るでしょう!

不適切なクエリを記述した場合、テーブルがどれだけ適切に正規化されていても、処理は遅くなります。多分あなたはこれについて何かを得まし、それは答えのあるほぼ同様の質問です(データベースは遅いなどです)。

また、いくつかのものをアーカイブすることを考えましたか? たとえば、3 億から ID 1 で始まったので、その ID はまだ使用されていますか? そうでない場合は、他のデータベースまたはテーブルにアーカイブしないでください(データベースをお勧めします)。また、毎日 70 万人のユーザーがすべてログインしているわけではないと思います (敬意を払っていれば! でも、私はそうは思いません)。

また、「このテーブルにはプレイヤー固有のアイテムが含まれています」とおっしゃいましたが、具体的なアイテムとはどのようなものですか?

別の質問ですが、「遅い」クエリをいくつか投稿していただけますか?

いくつかのデータからのキャッシング システムについても検討しましたか? 他のゲームのギアのように、月に一度変更される可能性がありますか?

于 2011-03-28T18:36:27.440 に答える
0

あなたのメインデータベーステーブルは正規化を使用できるように思えます。すべての情報がその 1 つのテーブルに属していますか、それとも小さなテーブルに分割できますか? 正規化により、現在はわずかなパフォーマンス ヒットが発生する可能性がありますが、テーブルが大きくなると、巨大なモノリシック テーブルへのアクセスに伴う余分な処理に圧倒されます。

于 2011-03-27T12:18:15.963 に答える