It’s much easier to deploy and has a much older high availability story that has been battle tested for a decade or two. It also has a more linear regression. The query optimizer doesn’t try to be clever. It only works with the query and the schema. So if your query is bad, it will get worse with data size. Double the data in prod compared to your test instance? Double the bad query. Postgres tries to get clever with data size so it might switch to a different plan with more data resulting in your one customer with a lot of data all of a sudden getting really bad query times but nobody can reproduce it locally. So now you as the admin have to go into the database and pull a dump that for once actually trigger the same query plan as it did in production but your devs might not be allowed to see all the data or have it locally. This is one annoying thing at least you don’t have to do with MySQL.
Oh, also, MySQL just updates in place without bitching. Postgres wants you do install both versions side by side and migrate the data directory. That is annoying with docker.
Hah, it's a great answer, I did not even think that far, thinking of the ease of installation, updates and command line use, as well as configuration.
But indeed. MySQL's great weakness and great strength is that it's a somewhat limited SQL engine over a variety of storage backends. It can not be too smart, due to the sheer variety of what it supports.