MariaDB Features Not Available in SQL Server
Some MariaDB features are not available in SQL Server.
At first glance, it is not important to know about those features to migrate from SQL Server to MariaDB. However, this is not the case. Using MariaDB features that are not in SQL Server allows one to obtain more advantages from the migration, getting the most from MariaDB.
This page has a list of MariaDB features that are not supported in SQL Server. The list is not exhaustive.
- Storage engines.
- Authentication plugins.
- Encryption plugins.
- ColumnStore is a columnar storage engine designed to scale horizontally. It runs on a specific edition of MariaDB, so currently it cannot be used in combination with other engines.
- The sql_mode variable determines in which cases an SQL statement should fail with an error, and in which cases it should succeed with a warning even if it is not entirely correct. For example, when a statement tries to insert a string in a column which is not big enough to contain it, it could fail, or it could insert a truncated string and emit a warning. It is a tradeoff between reliability and flexibility.
- SQL_MODE=MSSQL allows one to use a small subset of SQL Server proprietary syntax.
CREATE ... IF EXISTS,
CREATE OR REPLACE,
DROP ... IF NOT EXISTSoptions are supported for most DDL statements.
- SHOW statements.
- SHOW CREATE statements.
- SHOW PROCESSLIST and PERFORMANCE_SCHEMA THREAD table provide much richer information, compared to SQL Server
- CHECKSUM TABLE statement.
- PL/SQL support (only for stored procedures and stored functions).
- Row constructors.
- HANDLER statements, to scroll table rows ordered by an index or in their physical order.
- DO statement, to call functions without returning a result set.
- BENCHMARK() function, to measure the speed of an SQL expression.
See also Syntax Differences between MariaDB and SQL Server.
- Character sets and collations don't depend on column type. They can be set globally, or at database, table or column level.
- Columns may use non-constant expressions as the DEFAULT value. TIMESTAMP columns may have a
- UNSIGNED numeric types.
- Dynamic columns (note that JSON is usually preferred to this feature).
See also SQL Server and MariaDB Types Comparison.
For compatibility with some other database systems, MariaDB supports the JSON pseudo-type. However, it is just an alias for:
LONGTEXT CHECK (JSON_VALID(column_name))
JSON_VALID() is the MariaDB equivalent of SQL Server's
- Flashback functionality allows one to "undo" the changes that happened after a certain point in time.
- Partitioned tables support the following features:
- Tables can be partitioned based on multiple columns.
- Several partitioning types are available.
- Progress reporting for some typically expensive statements.