I really like MariaDB 10.3, it has a lot of interesting new features. Invisible (hidden) columns, for instance. Here is a practical use case:
You’re dealing with a legacy application, possibly you don’t even have the source code (or modifying is costly), and this app doesn’t have a PRIMARY KEY on each table. Consequences:
- Even though InnoDB would have an internal hidden ID in this case (you can’t access that column at all), it affects InnoDB’s locking strategy – I don’t think this aspect is explicitly documented, but we’ve seen table-level locks in this scenario where we’d otherwise see more granular locking;
- Galera cluster really wants PKs;
- Asynchronous row-based replication can work without PKs, but it is more efficient with;
So, in a nutshell, your choices for performance and scaling are restricted.
On the other hand, you can’t just add a …[Read more]