Mysql – PostgreSQL 9.1 vs MySQL 5.6 with InnoDB ? Which is better for scaling

innodbMySQLmysql-5postgresql

PostgreSQL 9.1 vs MySQL 5.6 with InnoDB. I do know that PostgreSQL offers better SQL features.

I am currently using MySQL 5.6 lab release (the one with InnoDb full text search feature)(not in production). I still find some features missing especially WRT GIS features, activation of triggers for on cascade deletion etc.

I have been testing out PostgreSQl 9.1 and am impressed by the support it has for GIS(PostGIS 2.0).

Now, Which of the above is better for scaling? Scaling out as well as Scaling up?

I need to scale for :

  • around 100k users(the users will increase)
  • with about 500 concurrent users(will increase say 1000-10000 concurrent).
  • The DB has about 2 million entries(constantly accessed) right now which will increase.
  • With constant writes/reads to the table with 2 million entries right now.
  • SQL, right now, is not too complex with a join to a max of 3 tables.
  • I am thinking of horizontal as well as vertical scaling.

Best Answer

In scalability, part of the problem is that this is pretty heavily use-case dependent. There is no scaling solution that hits every use case equally. For example, Slony is very helpful for scaling out in some cases, but is a bear in others. For example, Slony lets you replicate only part of your database. On the other hand, Slony lets you replicate only part of your database.... Overall, MySQL seems a little easier to scale out of the box in the workloads it supports but PostgreSQL seems to offer more advanced tools which you can take quite a bit further.

As far as which is more scalable in common use cases, now that Postgres-XC has been released, PostgreSQL is the clear winner here. We have Slony, Bucardo, Streaming Replication, PGPool, etc. on the replication side. We have Postgres-XC on the scale out clustering side. We are extremely scalable now.

However, all these come with complexity costs. These costs appear a bit higher on the Pg side, but the flexibility is there to scale however you need to.

Scaling up right now is also a major PostgreSQL goal. 9.2 makes some important gains in that regard.