2
\$\begingroup\$

Our team is going to publish game in social networks. Expected DAU is about 100k, which is about 500 concurrent connections and 100-400 transactions\sec. Our main risk is the game-database server(Windows Server 2008 using MySQL) because it would handle most of the load. As player enters game server SELECTs his gamestate and caches it in memory. After it most queries will be simple UPDATEs. No complex queries are planned.

So we've stumbled upon game-database configuration questions:

1) Is CPU much important for game-database server? Would 1 Intel Xeon E3-1230(or 1270) be enough for us?

2) Is RAM much important for game-database server? Would 24-32gb DDR3 RAM be enough for us?

3) Is SSD much better than HD in terms of game-database server?

\$\endgroup\$
1
2
\$\begingroup\$

It depends on how you use your database. When you have a lot of complex queries, you will need a lot of CPU power. More simpler queries are usually IO-bound, which means faster hard drives would be a better investment. More RAM usually means better caching, which means that consecutive identical queries can be answered faster. But there are also some types of queries which benefit from more RAM.

The only way to reliably find your bottleneck is through benchmarking. Create a bunch of scripts which simulate normal game operation and let a few dozen instances of them run on your test database. While you do this, monitor CPU, RAM and IO usage of your database. That should tell you where your bottleneck is and allow you to extrapolate your requirements for the production-server.

\$\endgroup\$
2
  • \$\begingroup\$ As player enters game server SELECTs his gamestate and caches it in memory. After it most queries will be simple UPDATEs. No complex queries are planned. \$\endgroup\$ – Ashes May 2 '14 at 15:42
  • 1
    \$\begingroup\$ Do you really need a relational DB for that? Maybe a simple key value store or a json doc DB like mongodb is already good enough. \$\endgroup\$ – mvw May 2 '14 at 16:22

Not the answer you're looking for? Browse other questions tagged or ask your own question.