What Is New in MariaDB 10.3
MariaDB 10.3 is a significant long-term support release packed with new features, enhancements, and improved compatibility. This version introduces system-versioned tables, Oracle compatibility features, and major storage engine updates.
| Category | Key Changes |
|---|---|
| New Features | System-Versioned Tables, Oracle Compatibility (SQL_MODE=ORACLE), Common Table Expressions, SEQUENCE Engine |
| Storage Engines | InnoDB Default, MyRocks Alpha, Spider Enhancements, CONNECT Engine Updates |
| Security | ED25519 Authentication Plugin, Password Validation Plugin |
| Performance | Instant ADD COLUMN for InnoDB, Index Condition Pushdown for MyISAM/Aria |
| Deprecated & Removed | Deprecated: InnoDB Monitors, innodb_use_sys_malloc. Removed: PBXT Engine |
What are the major new SQL features in 10.3?
The headline SQL feature is system-versioned tables, which automatically track the history of all row changes. This is a game-changer for auditing and temporal data queries without needing application-level logic.
Oracle compatibility mode (SQL_MODE=ORACLE) is a huge addition for migrations. It introduces synonyms, PL/SQL compatible syntax, and date arithmetic that works like Oracle's. Common Table Expressions (CTEs), both recursive and non-recursive, finally bring modern, readable query construction to MariaDB.
How did storage engines change in this release?
InnoDB became the default storage engine, replacing XtraDB. This was a symbolic shift reflecting the closer alignment with upstream MySQL's InnoDB, though XtraDB remains available for those who need it.
The alpha release of the MyRocks engine (based on RocksDB) was a big deal for specific use cases. It targets high compression and write efficiency, making it interesting for write-heavy workloads. The Spider and CONNECT engines also saw significant updates for better sharding and external data access.
What security improvements were introduced?
MariaDB 10.3 added the ed25519 authentication plugin, which is a modern and secure password authentication method. It's more resistant to brute-force attacks compared to the traditional native authentication.
The simple password validation plugin (simple_password_check) was also introduced. It enforces basic rules like minimum password length and preventing passwords that match the user name. These are foundational steps for better security hygiene out of the box.
Were there any notable performance optimizations?
Yes, the "Instant ADD COLUMN" feature for InnoDB was a major performance win for schema modifications. It allows adding a column to a table without rebuilding it, which drastically reduces downtime for large tables.
Index Condition Pushdown (ICP) support was extended to the MyISAM and Aria storage engines. This allows the storage engine to filter rows using index conditions, which can reduce the number of rows sent to the SQL layer and speed up certain queries.
FAQ
Should I use MyRocks in production on 10.3?
No, the MyRocks engine was marked as alpha in MariaDB 10.3. It's intended for testing and evaluation only. For production environments requiring its specific benefits, you should use a later MariaDB version where it is considered stable.
Does system-versioning work with all storage engines?
No, system-versioned tables (temporal tables) primarily work with the InnoDB, Aria, and MyISAM storage engines. You cannot use this feature with engines like TokuDB or MyRocks in the 10.3 release.
What's the practical benefit of SQL_MODE=ORACLE?
It significantly reduces the effort required to port applications from Oracle Database to MariaDB. It handles things like syntax differences, date operations, and the use of synonyms, making the codebase more compatible with fewer changes.
Is Instant ADD COLUMN safe to use?
Yes, it is a stable and reliable feature for InnoDB. It's safe for use in production and is one of the most appreciated features for DBAs because it eliminates a classic source of operational headache during schema migrations.
Why was the PBXT storage engine removed?
The PBXT engine was officially removed in MariaDB 10.3 due to it being unmaintained. It had been deprecated in earlier versions, and its removal was a cleanup step to reduce code complexity and potential security issues from unmaintained code.