DBAtlas · Атлас эксплуатации баз данных

Задать уровень совместимости / версию функций

Oracle

-- Raise the COMPATIBLE initialization parameter (irreversible!):
ALTER SYSTEM SET COMPATIBLE = '19.0.0' SCOPE=SPFILE;
-- Then restart the instance. To see the current value:
SHOW PARAMETER compatible;

Параметр COMPATIBLE определяет, функции и форматы файлов какой версии включены. После повышения и перезапуска экземпляра его НЕЛЬЗЯ ВЕРНУТЬ (откат блокируется); поэтому повышайте его постепенно, пока успешность обновления не подтверждена.

PostgreSQL

# Not applicable: PostgreSQL has no database compatibility level.
# If legacy behavior is needed, set the relevant GUCs (e.g. SET standard_conforming_strings=off)
# or manage the major migration with dump/restore.

В PostgreSQL нет понятия «уровень совместимости», как в SQL Server/Oracle; поведение версии напрямую связано с бинарной версией. Переход между версиями выполняется через pg_dump/pg_restore или pg_upgrade.

MySQL

# Not applicable: MySQL has no configurable database compatibility level.
# Behavioral differences are managed with sql_mode:
SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';

В MySQL нет уровня совместимости по версиям; поведение SQL в основном зависит от бинарной версии и настройки sql_mode. Тонко настраивайте sql_mode, чтобы сохранить поведение старого приложения.

SQL Server

-- Set the database compatibility level (e.g. SQL Server 2022 = 160):
ALTER DATABASE Sales SET COMPATIBILITY_LEVEL = 160;
-- To see the current value:
SELECT name, compatibility_level FROM sys.databases;

COMPATIBILITY_LEVEL определяет, как какой версии ведут себя оптимизатор запросов и языковые функции (150=2019, 160=2022). После обновления экземпляра базы могут оставаться на старом уровне; рекомендуется повышать его постепенно, отслеживая регрессии планов. Его можно снова понизить.

MongoDB

// Set the Feature Compatibility Version (FCV):
db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })
// Read the current value:
db.adminCommand({ getParameter: 1, featureCompatibilityVersion: 1 })

FCV управляет моментом включения изменений формата постоянных данных и новых функций версии. Повышайте его после обновления бинарных файлов при стабильном кластере; понижение возможно, только если та же бинарная версия ещё поддерживает более низкий FCV.

Redis

# Not applicable: Redis has no compatibility level / feature version concept.
# Behavior depends directly on the running binary version.

В Redis нет настраиваемого уровня совместимости; набор функций полностью зависит от работающей версии. Совместимость сохраняется только на уровне формата файлов RDB/AOF, в прямом направлении.

Elasticsearch

# Not applicable: Elasticsearch has no configurable compatibility level.
# An index is tied to the format of the version it was created in; very old indices
# cannot be read in the new version and require a reindex.

В Elasticsearch нет настройки уровня совместимости; каждый индекс несёт формат мажорной версии, в которой создан. Индексы предыдущей мажорной версии читаются, а более старые нужно перенести в новую версию через _reindex.

Открыть в DBAtlas →