mysql - online index creation
This post shows how easy it is to alter tables (in this example index creation) online to keep your sql database uninterrupted and clients online.
Personally, i'm quite a huge fan of document databases, mostly because the mindset behind those is around a schemaless dataset and the operations are meant to scale horizontally. In addition, many if not all operations on the data are non-blocking.
Relational databases tend to be more complex, often relaed to the intrinsic demand to be ACID compliant. Luckily, sometimes there are options 😄
Online structural change - index creation
A simple (yet seemingly very often not utilized) option to alter a database is for example to create indices online (or possibly rebuild, reorganize, etc. them).
So, when you're in mysql / mariadb, how just use the ALGORITHM and LOCK flags and you can process large amounts of data without (b)locking your tables.
That's it - simple yet powerful.
Side node: IF NOT EXISTS is a part of mariadb's SQL features and not available on mysql as of today.