G
Grimoire
grimoire.ca · Personal blog · on HN since 2013
Grimoire is a personal site by Owen Jacobson with essays on databases, version control, Go, deployment and software practice.
What HN saysHN commenters cite its MySQL essay in arguments that MySQL is flawed, and link its pieces on detached signatures for git.
31HN people shared it
19linked it in comments
12stories submitted
476story points
5 years agolast shared
2013people per year2026
Most-shared posts
- 1MySQL - Do Not Pass This Way Again24 people · 245 points · first shared 2013 · 156 comments on HN
- 2I Do Not Like Go2 people · 226 points · first shared 2018 · 210 comments on HN
- 3Detached sigs2 people · first shared 2017
- 4Maslow's hierarchy of software needs1 people · 2 points · first shared 2013 · discussion on HN
- 5Stop Using Git Pull to Deploy1 people · 2 points · first shared 2017 · discussion on HN
- 6Bugs, Tasks, and Tickets from First Principles1 people · 1 points · first shared 2013 · discussion on HN
What HN people wrote when they linked it
wlll · 2018-04-11
Because MySQL is the PHP of databases. Much like PHP is designed to just carry on truckin' whatever problem it encounters (https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/), MySQL was too. It's easy to slam some data into it and get it back without having to think too hard about what you're actually storing (https://grimoire.ca/mysql/choose-something-else). It's ease of use made it pervasive, much like PHP.
Following on from that, I suspect a lot of large companies use MySQL because they always have, not because it's actually any good. For example, Basecamp used MySQL while I was there, but I never met a single Sysadmin there who would use it over Postgres if they were to start a new project.
matwood · 2016-03-08
MySql is a joke and always has been. I blame a huge majority of the RDBMS hate on the fact that many peoples only experience with a RDBMS was MySql. The issues are numerous, but two of my personal favorites are silent data truncation and allowing 'indeterminate' results with non-aggregate or non-functionally dependent columns in the select[1]. 5.7.5 finally changes the default behavior of the former.
This site lists many of the issues: http://grimoire.ca/mysql/choose-something-else
[1] http://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html
mrmondo · 2013-11-05
I'm a fan of relational databases, just not MySQL.
I've been administering MySQL, PostgreSQL and Oracle (not to mention a few others I'm too embarrassed to mention) for some time now and MySQL is a right pain in the ass. I'd rather see it use PostgreSQL. Love the video by the way!
http://grimoire.ca/mysql/choose-something-else
drybjed · 2019-02-17
A similar idea was described in 2015: https://grimoire.ca/git/detached-sigs
Sebb767 · 2019-01-05
> but it's not like MySQL is broken
Here's a good article about that: https://grimoire.ca/mysql/choose-something-else
davidp · 2018-04-11
I like to trot out this old gem[1] when people wonder why there's so much hate for MySQL.
Nontransactional DDL alone is sufficient to classify it as a toy DB for me. Yes, I've been personally bitten by it.
[1]: https://grimoire.ca/mysql/choose-something-else
hdhzy · 2017-10-25
Check out Notes Towards Detached Signatures in Git [0].
[0]: https://grimoire.ca/git/detached-sigs
glogla · 2017-09-05
> - synchronous multi-master cluster (Galera, Group Replication)
Which doesn't work, see [1]. What other features of those you listed the authors claim that work, and just don't when you look deeper?
Lot of the big companies are using MySQL as a NoSQL database, and that's not a bad way to use MySQL, but it's a pretty bad relational database, see [2].
[1]: https://aphyr.com/posts/327-call-me-maybe-mariadb-galera-cluster
[2]: https://grimoire.ca/mysql/choose-something-else
deathanatos · 2017-08-16
https://grimoire.ca/mysql/choose-something-else
That's essentially my reasons for preferring PostgreSQL.
fusiongyro · 2017-07-27
This post from a year or two ago is a pretty good summary of what's wrong with MySQL:
https://grimoire.ca/mysql/choose-something-else
eddd · 2017-04-09
I'd start with reading this one: https://grimoire.ca/mysql/choose-something-else
fennecfoxen · 2016-08-01
The design of MySQL has a lot more silent failures, silent coercing of data, and other ways that it attempts to do what it thinks you might mean (because you're an incompetent PHP programmer) instead of what you ask. The obvious example is that SELECT 0 = 'banana' returns 1.
A typical takedown would be the likes of: http://grimoire.ca/mysql/choose-something-else (which also touches storage engine configuration things that are easier to defend against by an experienced organization). Unfortunately this sort of takedown solves very few discussions.
dijit · 2016-04-04
Sure, but adding too many sources will make me seem snide or bitter.
But as an example:
https://www.youtube.com/watch?v=emgJtr9tIME
MySQL vs PostgreSQL - Why you shouldn't use MySQL
https://dev.mysql.com/doc/refman/5.5/en/glossary.html#glos_autocommit
http://grimoire.ca/mysql/choose-something-else
https://blog.ionelmc.ro/2014/12/28/terrible-choices-mysql/
the fact that https://dev.mysql.com/doc/refman/5.6/en/mysql-real-escape-string.html has to exist because https://dev.mysql.com/doc/refman/5.6/en/mysql-escape-string.html doesn't work properly. (this is actually blamed on PHP a lot)
My favorite MySQL gotcha is that if you issue a GRANT statement with a typo in the user's name instead giving a "user does not exist" error it simply creates a new user with the misspelled name.
brobinson · 2016-03-07
For MySQL vs PostgreSQL, I link people to this one: http://grimoire.ca/mysql/choose-something-else
slapresta · 2015-07-24
> I assume things are much better now
Nope: http://grimoire.ca/mysql/choose-something-else
brianpgordon · 2015-05-27
That's... one way of looking at it.
Just because most of the comments here have been (bizarrely) pro-MySQL, I have to link to this article:
http://grimoire.ca/mysql/choose-something-else
tragic · 2014-03-11
A list of reasons not to use MySQL:
http://grimoire.ca/mysql/choose-something-else
davidgerard · 2015-01-10
Nothing hugely complicated. Production Magento, Drupal and WordPress - we managed to outsource the WordPress, so now it's mainly now Magento, and that's much more horrible in itself than MySQL - one in-house tool that used to use it, some MediaWiki, and one really badly-behaved in-house tool that picked MySQL without asking us first.
Mostly we were bitten by long-running MySQL sillinesses:
* its strange idea of UTF-8 (we call the MySQL version WTF-8 - see http://geoff.greer.fm/2012/08/12/character-encoding-bugs-are-%F0%9D%92… )
* InnoDB's galloping disk consumption
* the Debian/Ubuntu package's default stupid behaviour of putting all the InnoDB databases into a single file ibdata1 (I hope this is a Debianism and not something that's default in upstream)
* ibdata1 never shrinking ever (bug #1341, open since 2003)
* binary replication issues (e.g. bug #68892, which is fixed but that doesn't help older or distro versions)
* several others I've mercifully obliterated the braincells that were holding them. But all of these were long-known issues that will never be fixed for one reason or another (backward compatibility with past mistakes, or they just can't be bothered).
Here's a good crib: http://grimoire.ca/mysql/choose-something-else
tl;dr MySQL: the Comic Sans of databases. Except Comic Sans has use cases.