MySQL is one of the most commonly used databases for web applications on the internet. It is comparatively easy to use and runs on almost anything. It's strictly defined data model makes it more structured than NoSQL database options like MongoDB, which means you'll need a migration practice to document the evolution of your project's schema over time.
One of the ways MySQL offers so many features is the inclusion of several different storage engines. InnoDB has become the default storage engine for MySQL tables. It is transaction-safe (ACID compliant) and uses journaling to protect data from outages. Some of the more popular features are only available using the older MyISAM engine, which trades data protection for more speed and performance, although more and more of these features are being made available to InnoDB with each release.
No database can match the raw performance of a memory-only solution, and if your project is looking for specific ways to optimize for speed, using a system like Redis may be an option you want to explore.
MySQL is in use by hundreds of open source projects available online. It is well documented and the corporate support of Oracle. It is relatively lightweight and has a lot of functionality that does not take a ton of time to take advantage of. It's wide array of features is one of the reasons it became so widely used, even in roles that were traditionally left to enterprise databases in the past.
Configuring MySQL is easy, but there are several pitfalls you may encounter when configuring a new installation. Most Linux distros have a great default configuration, but older systems may be using insecure or improper settings. These can cause problems with Unicode and UTF8 support, or storing Date/Time values. In some cases, necessary security updates can cause service interruptions unless you are prepared.
Keeping MySQL running efficiently takes careful table design. If you use too few, or too many, keyed columns, your queries can start to underperform. Additionally, many ORMs, like the Model object included with Django, work better with PostgreSQL and can have big performance problems if they are used without an understanding of how MySQL differs from other databases.