Реализованные в MariaDB функции SQL Server, отличающиеся от оригинала
Современные СУБД реализуют несколько расширенных функций. Хотя стандарт SQL и существует, полный список функций отличается для каждой системы баз данных. Иногда разные функции позволяют достичь одной цели, но с различной логикой и различными ограничениями. Это следует учитывать при планировании миграции.
Некоторые функции реализуются разными СУБД с похожей логикой и синтаксисом. Но могут быть существенные различия, о которых пользователи должны знать.
На этой странице представлен список функций SQL Server, которые реализуются в MariaDB по-другому, а также функции SQL Server, для которых в MariaDB есть альтернативная функция. Незначительные отличия здесь не учитываются. Список не является исчерпывающим.
SQL
- Список поддерживаемых типов данных отличается.
- Существуют соответствующие различия в уровнях изоляции транзакций.
-
SNAPSHOTуровень изоляции не поддерживается. Вместо этого можно использоватьSTART TRANSACTION WITH CONSISTENT SNAPSHOTдля получения моментального снимка в начале транзакции. Это совместимо со всеми уровнями изоляции. См. Как реализованы уровни изоляции в MariaDB. - Поддержка JSON отличается.
Индексы и производительность
- Кластеризованные индексы. В MariaDB физический порядок строк делегируется хранилищу. InnoDB использует первичный ключ в качестве кластеризованного индекса.
- Индексы хеш-таблиц. Только некоторые хранилища поддерживают индексы
HASH.- Хранилище InnoDB имеет функцию адаптивного индекса хеш-таблиц, включенную по умолчанию. Это означает, что во всех индексах InnoDB создаются как
BTREE, и в зависимости от того, как они используются, InnoDB может преобразовывать их из B-деревьев в индексы хеш-таблиц или наоборот. Это происходит в фоновом режиме. - Хранилище MEMORY по умолчанию использует индексы хеш-таблиц, если не указан параметр
BTREE. - См. Типы индексов хранилища для получения дополнительной информации.
- Хранилище InnoDB имеет функцию адаптивного индекса хеш-таблиц, включенную по умолчанию. Это означает, что во всех индексах InnoDB создаются как
- Хранилище запросов. MariaDB позволяет анализировать производительность запросов с помощью журнала медленных запросов и performance_schema. Некоторые сторонние инструменты с открытым исходным кодом или коммерческие инструменты считывают эту информацию для создания статистики и упрощения идентификации медленных запросов.
Таблицы
- Вычисляемые столбцы называются сгенерированными столбцами в MariaDB и создаются с другим синтаксисом. См. также Различия в реализации по сравнению с Microsoft SQL Server.
- Временные таблицы используют другой (более стандартный) синтаксис в MariaDB. В MariaDB история хранится в той же таблице, что и текущие данные (но необязательно в разных разделах). MariaDB поддерживает как SYSTEM_TIME, так и APPLICATION_TIME.
- Скрытые столбцы — это невидимые столбцы в MariaDB.
- Временные таблицы реализуются и используются по-другому.
Высокая доступность
-
NOT FOR REPLICATION- MariaDB поддерживает фильтры репликации для исключения некоторых таблиц или баз данных из репликации.
- Возможно сделать таблицу пустой в ведомом сервере (или в ведущем) с помощью хранилища BLACKHOLE.
- Ведущая база данных может иметь столбцы, которых нет в ведомой (и наоборот тоже поддерживается). Перед использованием этой функции внимательно прочитайте страницу Репликация, когда ведущий и ведомый сервер имеют разные определения таблиц.
- С MariaDB можно запретить выполнение триггера на ведомом сервере.
- Возможно запускать события без их репликации. То же самое относится к некоторым административным операторам.
- Суперпользователи MariaDB могут выполнять операторы без репликации с помощью системной переменной sql_log_bin.
- Ограничения и триггеры нельзя отключить для репликации, но их можно удалить на ведомых серверах.
- Синтаксис
IF EXISTSпозволяет легко создать таблицу на ведущем сервере, которая уже существует (возможно, в другой версии) на ведомом.
- Параметр pollinginterval. См. Задержки репликации.
Безопасность
- Список разрешений отличается.
- Политики безопасности. MariaDB позволяет достичь тех же результатов, назначив разрешения на представления и хранимые процедуры. Однако это не распространенная практика, и это сложнее, чем определение политик безопасности. См. Другие способы использования представлений.
- MariaDB не поддерживает предложение
OUTPUT. Вместо этого можно использовать DELETE RETURNING и, начиная с MariaDB 10.5, INSERT RETURNING и REPLACE RETURNING.
Другие функции
- Связанные серверы. MariaDB поддерживает хранилища, которые могут читать из и записывать в удаленные таблицы. При использовании хранилища CONNECT эти таблицы могут находиться в разных СУБД, включая SQL Server.
- Планировщик задач: MariaDB использует планировщик событий для планирования событий.
См. также
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/sql-server-features-implemented-differently-in-mariadb/