1.3 Что нового в MySQL 5.7
В этом разделе подытожено, что было добавлено, устарело и удалено в MySQL 5.7. В сопутствующем разделе перечислены опции и переменные сервера MySQL, которые были добавлены, устарели или удалены в MySQL 5.7; см. Раздел 1.4, «Серверные и статусные переменные и опции, добавленные, устаревшие или удаленные в MySQL 5.7».
Функции, добавленные в MySQL 5.7
В MySQL 5.7 были добавлены следующие функции:
-
Улучшения безопасности. Были добавлены следующие улучшения безопасности:
В MySQL 8.0 в качестве плагина аутентификации по умолчанию используется
caching_sha2_password. Для обеспечения возможности подключения клиентов MySQL 5.7 к серверам 8.0 с учетными записями, использующимиcaching_sha2_password, библиотека клиента и клиентские программы MySQL 5.7 поддерживают плагин аутентификации клиентаcaching_sha2_passwordначиная с MySQL 5.7.23. Это повышает совместимость MySQL 5.7 с серверами MySQL 8.0 и выше. См. Раздел 6.4.1.4, «Плагин аутентификации с кэшированием SHA-2».Теперь сервер требует, чтобы строки учетных записей в таблице системы
mysql.userимели ненулевое значение в столбцеpluginи отключает учетные записи с пустым значением. Инструкции по обновлению сервера см. в Разделе 2.10.3, «Изменения в MySQL 5.7». Администраторам баз данных рекомендуется также перевести учетные записи, использующие плагин аутентификацииmysql_old_password, на использованиеmysql_native_password, поскольку поддержкаmysql_old_passwordбыла удалена. Инструкции по обновлению учетных записей см. в Разделе 6.4.1.3, «Миграция от хеширования паролей до версии 4.1 и плагина mysql_old_password».Теперь в MySQL администраторы могут установить политику автоматического истечения срока действия паролей: любой пользователь, который подключается к серверу с учетной записью, срок действия пароля которой истек, должен изменить пароль. Дополнительную информацию см. в Разделе 6.2.11, «Управление паролями».
Администраторы могут блокировать и разблокировать учетные записи для лучшего контроля над теми, кто может войти в систему. Дополнительную информацию см. в Разделе 6.2.15, «Блокировка учетных записей».
-
Для упрощения поддержки защищенных соединений серверы MySQL, скомпилированные с использованием OpenSSL, могут автоматически генерировать недостающие сертификаты и ключи SSL и RSA при запуске. См. Раздел 6.3.3.1, «Создание сертификатов SSL и RSA с использованием MySQL».
Все серверы, если не настроены явно для SSL, пытаются автоматически включить SSL при запуске, если находят необходимые файлы SSL в каталоге данных. См. Раздел 6.3.1, «Настройка MySQL для использования зашифрованных соединений».
Кроме того, дистрибутивы MySQL включают утилиту mysql_ssl_rsa_setup, которую можно вызвать вручную для создания файлов ключей и сертификатов SSL и RSA. Дополнительную информацию см. в Разделе 4.4.5, «mysql_ssl_rsa_setup — Создание файлов SSL/RSA».
-
MySQL-развертывания, установленные с помощью mysqld --initialize, по умолчанию являются безопасными. Следующие изменения были реализованы как характеристики развертывания по умолчанию:
Процесс установки создает только одну учетную запись
root,'root'@'localhost', автоматически генерирует случайный пароль для этой учетной записи и помечает пароль как просроченный. Администратор MySQL должен подключиться какrootс помощью случайного пароля и назначить новый пароль. (Сервер записывает случайный пароль в журнал ошибок.)При установке не создаются учетные записи анонимных пользователей.
При установке не создается база данных
test.
Дополнительную информацию см. в Разделе 2.9.1, «Инициализация каталога данных».
MySQL Enterprise Edition теперь предоставляет возможности маскирования и обезличивания данных. Маскирование данных скрывает конфиденциальную информацию, заменяя реальные значения заменителями. Функции маскирования и обезличивания данных MySQL Enterprise позволяют маскировать существующие данные с помощью нескольких методов, таких как обфускация (удаление идентифицирующих характеристик), генерация форматированных случайных данных и замена или подстановка данных. Дополнительную информацию см. в Разделе 6.5, «Маскирование и обезличивание данных MySQL Enterprise».
MySQL теперь устанавливает доступ к клиентам по именованной трубе до минимально необходимого для успешной связи в Windows. Новое клиентское программное обеспечение MySQL может открывать соединения по именованной трубе без дополнительной настройки. Если старое клиентское программное обеспечение не может быть обновлено сразу, можно использовать новую системную переменную
named_pipe_full_access_groupдля предоставления необходимых разрешений группе Windows для открытия соединения по именованной трубе. Членство в группе с полным доступом должно быть ограничено и временным.
-
Изменения режима SQL. Строгий режим SQL для транзакционных движков хранения (
STRICT_TRANS_TABLES) теперь включен по умолчанию.Реализация режима SQL
ONLY_FULL_GROUP_BYбыла усовершенствована, чтобы больше не отклонять детерминированные запросы, которые ранее отклонялись. В результате этот режим теперь включен по умолчанию, чтобы запрещать только недетерминированные запросы, содержащие выражения, не гарантирующие уникальное определение в группе.Режимы SQL
ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATEиNO_ZERO_IN_DATEтеперь устарели, но включены по умолчанию. Длительный план состоит в том, чтобы включить их в строгий режим SQL и удалить их как явные режимы в будущей версии MySQL. См. Изменения режима SQL в MySQL 5.7.Изменения по умолчанию в режиме SQL приводят к значению системной переменной
sql_modeпо умолчанию с включенными этими режимами:ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USERиNO_ENGINE_SUBSTITUTION. -
Онлайн ALTER TABLE.
ALTER TABLEтеперь поддерживает предложениеRENAME INDEX, которое переименовывает индекс. Изменение вносится на месте без операции копирования таблицы. Оно работает для всех движков хранения. См. Раздел 13.1.8, «Оператор ALTER TABLE». -
Плагины анализатора полнотекстового поиска ngram и MeCab. MySQL предоставляет встроенный плагин анализатора полнотекстового поиска ngram, поддерживающий китайский, японский и корейский языки (CJK), и устанавливаемый плагин анализатора полнотекстового поиска MeCab для японского языка.
Дополнительную информацию см. в Разделе 12.9.8, «Плагин анализатора ngram» и Разделе 12.9.9, «Плагин анализатора MeCab».
-
Улучшения InnoDB. Были добавлены следующие улучшения
InnoDB:
-
VARCHARразмер столбца можно увеличить с помощью локальногоALTER TABLE, как в этом примере:ALTER TABLE t1 ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(255);
Это верно, пока количество байтов длины, необходимых для столбца
VARCHAR, остается неизменным. Для столбцовVARCHARразмером от 0 до 255 байтов требуется один байт длины для кодирования значения. Для столбцовVARCHARразмером 256 байт или более требуется два байта длины. В результате локальноеALTER TABLEподдерживает только увеличение размера столбцаVARCHARс 0 до 255 байтов или с 256 байтов до большего размера. ЛокальноеALTER TABLEне поддерживает увеличение размера столбцаVARCHARс менее чем 256 байтов до размера, равного или большего 256 байтам. В этом случае количество необходимых байтов длины меняется с 1 на 2, что поддерживается только копией таблицы (ALGORITHM=COPY).Уменьшение размера столбца
VARCHARс помощью локальногоALTER TABLEне поддерживается. Уменьшение размера столбцаVARCHARтребует копирования таблицы (ALGORITHM=COPY).Дополнительную информацию см. в разделе 14.13.1, «Операции DDL в режиме онлайн».
Производительность DDL для
InnoDBвременных таблиц улучшена благодаря оптимизации операторовCREATE TABLE,DROP TABLE,TRUNCATE TABLEиALTER TABLE.InnoDBметаданные временных таблиц больше не хранятся вInnoDBсистемных таблицах. Вместо этого новая таблицаINNODB_TEMP_TABLE_INFOпредоставляет пользователям моментальный снимок активных временных таблиц. Таблица содержит метаданные и отчеты обо всех созданных пользователем и системой временных таблицах, активных в данном экземпляреInnoDB. Таблица создается при выполнении первого оператораSELECTна ней.InnoDBтеперь поддерживает поддерживаемые MySQL типы пространственных данных. До этого релизаInnoDBхранил пространственные данные как двоичные данныеBLOB.BLOBостается основным типом данных, но типы пространственных данных теперь сопоставлены с новым внутренним типом данныхInnoDB,DATA_GEOMETRY.Теперь существует отдельный табличный пространство для всех нескомпрессированных
InnoDBвременных таблиц. Новое табличное пространство всегда пересоздается при запуске сервера и по умолчанию расположено вDATADIR. Новая опция конфигурации,innodb_temp_data_file_path, позволяет пользователю определить путь к файлу временных данных.Функциональность innochecksum дополнена несколькими новыми опциями и расширенными возможностями. См. раздел 4.6.1, «innochecksum — Утилита проверки контрольной суммы файлов InnoDB».
Новый тип журнала обратной отмены без повторного записывания для обычных и сжатых временных таблиц и связанных объектов теперь находится в временном табличном пространстве. Дополнительную информацию см. в разделе 14.6.7, «Журналы обратной отмены».
Операции дампов и загрузки буфера пула
InnoDBулучшены. Новая системная переменнаяinnodb_buffer_pool_dump_pctпозволяет указать процент наиболее часто используемых страниц в каждом буферном пуле для чтения и дампов. Когда другие операции ввода-вывода выполняются задачами фонового процессаInnoDB,InnoDBпытается ограничить количество операций загрузки буфера пула в секунду с помощью параметраinnodb_io_capacity.Добавлена поддержка для
InnoDBплагинов парсеров полнотекстового поиска. Сведения о плагинах парсеров полнотекстового поиска см. в Плагины парсеров полнотекстового поиска и Написание плагинов парсеров полнотекстового поиска.InnoDBподдерживает несколько потоков очистителей страниц для сброса грязных страниц из экземпляров буферного пула. Новая системная переменнаяinnodb_page_cleanersиспользуется для указания количества потоков очистителей страниц. Значение по умолчанию1сохраняет предыдущую конфигурацию, в которой используется один поток очистителя страниц. Это улучшение основано на работе, проделанной в MySQL 5.6, которая ввела один поток очистителя страниц для переноса работы по сбросу буфера пула из основного потокаInnoDB.-
Поддержка онлайн DDL расширена до следующих операций для обычных и разнесенных
InnoDBтаблиц:-
ALTER TABLE ... ENGINE=INNODB(при выполнении наInnoDBтаблице)Поддержка онлайн DDL уменьшает время перестроения таблиц и допускает одновременные DML. См. раздел 14.13, «InnoDB и онлайн DDL».
Файловая система Fusion-io Non-Volatile Memory (NVM) в Linux обеспечивает запись, что делает
InnoDBизлишней. Буфер двойной записиInnoDBавтоматически отключен для файлов системного табличного пространства (), расположенных на устройствах Fusion-io, поддерживающих атомные записи.InnoDBподдерживает функцию для разнесенныхInnoDBтаблиц и отдельныхInnoDBразделов таблиц. Это улучшение упрощает процедуры резервного копирования разнесенных таблиц и позволяет копировать разнесенные таблицы и отдельные разделы таблиц между экземплярами MySQL. Дополнительную информацию см. в разделе 14.6.1.3, «Импорт таблиц InnoDB».Параметр
innodb_buffer_pool_sizeявляется динамическим, позволяющим изменять размер буферного пула без перезапуска сервера. Операция изменения размера, включающая перемещение страниц в новое место в памяти, выполняется частями. Размер блока настраивается с помощью новой опции конфигурацииinnodb_buffer_pool_chunk_size. Прогресс изменения размера можно отслеживать с помощью новой системной переменной состоянияInnodb_buffer_pool_resize_status. Дополнительную информацию см. в разделе о настройке размера буферного пула InnoDB онлайн.Поддержка многопоточного очистителя страниц (
innodb_page_cleaners) расширена до фаз завершения и восстановления.InnoDBподдерживает индексацию типов пространственных данных с помощьюSPATIALиндексов, включая использованиеALTER TABLE ... ALGORITHM=INPLACEдля онлайн-операций (ADD SPATIAL INDEX).InnoDBвыполняет массовую загрузку при создании или перестроении индексов. Этот метод создания индексов известен как “сортированное создание индекса”. Это усовершенствование, повышающее эффективность создания индексов, также применимо к полнотекстовым индексам. Новая глобальная конфигурационная опцияinnodb_fill_factorопределяет процент пространства на каждой странице, заполняемой данными при сортированном создании индекса, при этом оставшееся пространство резервируется для будущего роста индекса. Дополнительную информацию см. в разделе 14.6.2.3, «Сортированное создание индексов».-
Новый тип записи журнала (
MLOG_FILE_NAME) используется для идентификации табличных пространств, которые были изменены с момента последнего контрольного момента. Это улучшение упрощает обнаружение табличных пространств во время восстановления после сбоя и исключает сканирование файловой системы перед применением журнала повторного записывания. Дополнительную информацию о преимуществах этого улучшения см. в разделе об обнаружении табличного пространства во время восстановления после сбоя.Это улучшение изменяет формат журнала повторного записывания, требуя, чтобы MySQL был выключен должным образом перед обновлением или понижением версии с MySQL 5.7.5.
-
Вы можете обрезать журналы отмены, которые находятся в пространствах имен журналов отмены. Эта функция включена с помощью параметра конфигурации
innodb_undo_log_truncate. Дополнительную информацию см. в разделе Обрезка пространств имен журналов отмены.-
InnoDBподдерживает нативное разбиение. РанееInnoDBполагался на обработчикha_partition, который создаёт объект обработчика для каждой части. При использовании нативного разбиения таблицаInnoDBс разбиением использует один объект обработчика, осознающего разбиение. Это улучшение снижает объём памяти, необходимый для таблицInnoDBс разбиением.Начиная с MySQL 5.7.9, mysql_upgrade ищет и пытается обновить таблицы
InnoDBс разбиением, которые были созданы с помощью обработчикаha_partition. Также в MySQL 5.7.9 и более поздних версиях вы можете обновить такие таблицы по имени в клиенте mysql с помощьюALTER TABLE ... UPGRADE PARTITIONING. -
InnoDBподдерживает создание общих пространств имен таблиц с помощью синтаксисаCREATE TABLESPACE.CREATE TABLESPACE `
tablespace_name` ADD DATAFILE 'file_name.ibd' [FILE_BLOCK_SIZE = n]Общие пространства имен таблиц могут быть созданы вне каталога данных MySQL, могут содержать несколько таблиц и поддерживают таблицы всех форматов строк.
Таблицы добавляются в общее пространство имен таблиц с помощью синтаксиса
CREATE TABLEилиtbl_name... TABLESPACE [=]tablespace_nameALTER TABLE.tbl_nameTABLESPACE [=]tablespace_nameДополнительную информацию см. в разделе Раздел 14.6.3.3, «Общие пространства имен таблиц».
DYNAMICзаменяетCOMPACTв качестве неявного формата строк по умолчанию для таблицInnoDB. Новый параметр конфигурацииinnodb_default_row_formatопределяет формат строк по умолчаниюInnoDB. Дополнительную информацию см. в разделе Определение формата строк таблицы.Начиная с MySQL 5.7.11,
InnoDBподдерживает шифрование данных в состоянии покоя для пространств имен таблиц с файлами на таблицу. Шифрование включено путём указания параметраENCRYPTIONпри создании или изменении таблицыInnoDB. Эта функция полагается на плагинkeyringдля управления ключами шифрования. Дополнительную информацию см. в разделе Раздел 6.4.4, «Система ключей MySQL» и Раздел 14.14, «Шифрование данных InnoDB в состоянии покоя».-
Начиная с MySQL 5.7.24, версия библиотеки zlib, включённая в MySQL, была повышена с версии 1.2.3 до версии 1.2.11. MySQL реализует сжатие с помощью библиотеки zlib.
Если вы используете сжатые таблицы
InnoDB, см. раздел Раздел 2.10.3, «Изменения в MySQL 5.7» для связанных последствий обновления.
-
Поддержка JSON. Начиная с MySQL 5.7.8, MySQL поддерживает собственный тип данных
JSON. Значения JSON хранятся не как строки, а в внутреннем двоичном формате, что позволяет быстро получить доступ к элементам документа. JSON-документы, хранящиеся в столбцах типаJSON, автоматически проверяются при вставке или обновлении, а невалидный документ приводит к ошибке. JSON-документы нормализуются при создании и могут быть сравниваются с помощью большинства операторов сравнения, таких как=,<,<=,>,>=,<>,!=и<=>; для получения информации о поддерживаемых операторах, а также приоритетах и других правилах, которые MySQL использует при сравнении значенийJSON, см. Сравнение и упорядочивание значений JSON.MySQL 5.7.8 также вводит ряд функций для работы со значениями
JSON. Эти функции включают следующие:Функции, создающие значения
JSON:JSON_ARRAY(),JSON_MERGE()иJSON_OBJECT(). См. Раздел 12.17.2, “Функции для создания значений JSON”.Функции поиска значений
JSON:JSON_CONTAINS(),JSON_CONTAINS_PATH(),JSON_EXTRACT(),JSON_KEYS()иJSON_SEARCH(). См. Раздел 12.17.3, “Функции поиска значений JSON”.Функции модификации значений
JSON:JSON_APPEND(),JSON_ARRAY_APPEND(),JSON_ARRAY_INSERT(),JSON_INSERT(),JSON_QUOTE(),JSON_REMOVE(),JSON_REPLACE(),JSON_SET()иJSON_UNQUOTE(). См. Раздел 12.17.4, “Функции изменения значений JSON”.Функции, предоставляющие информацию о значениях
JSON:JSON_DEPTH(),JSON_LENGTH(),JSON_TYPE()иJSON_VALID(). См. Раздел 12.17.5, “Функции, возвращающие атрибуты значений JSON”.
В MySQL 5.7.9 и более поздних версиях вы можете использовать
в качестве сокращения дляcolumn->pathJSON_EXTRACT(. Это работает как псевдоним для столбца, где может использоваться идентификатор столбца в операторе SQL, включаяcolumn,path)WHERE,ORDER BYиGROUP BY. Это включаетSELECT,UPDATE,DELETE,CREATE TABLEи другие операторы SQL. Левая часть должна быть идентификатором столбца типаJSON(а не алиасом). Правая часть — это выражение пути JSON в кавычках, которое оценивается по отношению к документу JSON, возвращаемому как значение столбца.MySQL 5.7.22 добавляет следующие функции JSON:
Две агрегатные функции JSON
JSON_ARRAYAGG()иJSON_OBJECTAGG().JSON_ARRAYAGG()принимает столбец или выражение в качестве аргумента и агрегирует результат в один массив типаJSON. Выражение может оцениваться до любого типа данных MySQL; это не обязательно должно быть значениемJSON.JSON_OBJECTAGG()принимает два столбца или выражения, которые интерпретируются как ключ и значение; она возвращает результат как один объект типаJSON. Для получения дополнительной информации и примеров см. Раздел 12.19, “Агрегатные функции”.-
Функция утилиты JSON
JSON_PRETTY(), которая выводит существующее значениеJSONв удобном для чтения формате; каждый член JSON-объекта или значение массива печатается на отдельной строке, а дочерний объект или массив отступлены на 2 пробела по отношению к родителю.Эта функция также работает со строкой, которая может быть проанализирована как значение JSON.
См. также Раздел 12.17.6, “Функции утилиты JSON”.
-
Функция утилиты JSON
JSON_STORAGE_SIZE(), которая возвращает занимаемое пространство в байтах для двоичного представления документа JSON до любого частичного обновления (см. предыдущий пункт).Эта функция также принимает допустимое строковое представление документа JSON. Для такого значения
JSON_STORAGE_SIZE()возвращает пространство, используемое его двоичным представлением после преобразования в документ JSON. Для переменной, содержащей строковое представление документа JSON,JSON_STORAGE_FREE()возвращает ноль. Любая из функций выдаёт ошибку, если её (непустой) аргумент не может быть проанализирован как допустимый JSON-документ, иNULL, если аргументNULL.Для получения дополнительной информации и примеров см. Раздел 12.17.6, “Функции утилиты JSON”.
-
Функция слияния JSON, предназначенная для соответствия RFC 7396.
JSON_MERGE_PATCH(), при использовании на 2 JSON-объектах, объединяет их в один JSON-объект, который имеет в качестве членов объединение следующих множеств:Каждый член первого объекта, для которого нет члена с тем же ключом во втором объекте.
Каждый член второго объекта, для которого нет члена с тем же ключом в первом объекте, и значение которого не является JSON-литералом
null.Каждый член, имеющий ключ, который существует в обоих объектах, и значение которого во втором объекте не является JSON-литералом
null.
В рамках этой работы функция
JSON_MERGE()была переименована вJSON_MERGE_PRESERVE().JSON_MERGE()продолжает распознаваться как псевдоним дляJSON_MERGE_PRESERVE()в MySQL 5.7, но теперь устарела и может быть удалена в будущей версии MySQL.Для получения дополнительной информации и примеров см. Раздел 12.17.4, “Функции изменения значений JSON”.
См. Раздел 12.17.3, “Функции поиска значений JSON” для получения дополнительной информации о
->иJSON_EXTRACT(). Для получения информации о поддержке путей JSON в MySQL 5.7, см. Поиск и изменение значений JSON. См. также Индексирование сгенерированного столбца для предоставления индекса столбца JSON.
-
Переменные системы и состояния. Информация о переменных системы и состояния сейчас доступна в таблицах Performance Schema, вместо использования таблиц
INFORMATION_SCHEMAдля получения этих переменных. Это также влияет на работу операторовSHOW VARIABLESиSHOW STATUS. Значение переменной системыshow_compatibility_56влияет на вывод, производимый операторами и таблицами переменных системы и состояния, а также на требуемые привилегии. Подробности см. в описании этой переменной в Разделе 5.1.7, «Переменные системы сервера».ПримечаниеЗначение по умолчанию для
show_compatibility_56равноOFF. Приложения, требующие поведения 5.6, должны установить эту переменную в значениеONдо тех пор, пока они не будут перенесены на новое поведение переменных системы и переменных состояния. См. Раздел 25.20, «Миграция на таблицы переменных системы и состояния Performance Schema» -
Схема sys. Дистрибутивы MySQL теперь включают схему
sys, которая представляет собой набор объектов, помогающих администраторам баз данных и разработчикам интерпретировать данные, собранные Performance Schema. Объекты схемыsysмогут использоваться для типичных задач настройки и диагностики. Дополнительную информацию см. в Главе 26, Схема MySQL sys. -
Обработка условий. MySQL теперь поддерживает стеки областей диагностики. Когда стек области диагностики перемещается, первая (текущая) область диагностики становится второй (стековой) областью диагностики, и создается новая текущая область диагностики как ее копия. Внутри обработчика условий выполняемые операторы изменяют новую текущую область диагностики, но
GET STACKED DIAGNOSTICSможет использоваться для проверки стековой области диагностики, чтобы получить информацию о условии, вызвавшем активацию обработчика, независимо от текущих условий внутри самого обработчика. (Ранее существовала только одна область диагностики. Чтобы проверить условия активации обработчика внутри обработчика, необходимо было проверить эту область диагностики до выполнения любых операторов, которые могут ее изменить.) См. Раздел 13.6.7.3, «Оператор GET DIAGNOSTICS» и Раздел 13.6.7.7, «Область диагностики MySQL». -
Оптимизатор. Были добавлены следующие улучшения оптимизатора:
-
EXPLAINможет использоваться для получения плана выполнения для выполняемого оператора explainable в именованном соединении:EXPLAIN [
options] FOR CONNECTIONconnection_id;Дополнительную информацию см. в Разделе 8.8.4, «Получение информации о плане выполнения для именованного соединения».
Можно предоставить подсказки оптимизатору внутри отдельных операторов SQL, что позволяет более точно управлять планами выполнения операторов, чем можно сделать с помощью переменной системы
optimizer_switch. Подсказки также разрешены в операторах, используемых сEXPLAIN, что позволяет увидеть, как подсказки влияют на планы выполнения. Дополнительную информацию см. в Разделе 8.9.3, «Подсказки оптимизатора».-
Флаг prefer_ordering_index. По умолчанию MySQL пытается использовать упорядоченный индекс для любого оператора запроса
ORDER BYилиGROUP BY, имеющегоLIMIT-оператор, когда оптимизатор определяет, что это приведет к более быстрому выполнению. Поскольку в некоторых случаях выбор другой оптимизации для таких запросов может быть на самом деле лучше, начиная с MySQL 5.7.33, стало возможным отключить эту оптимизацию, установив флагprefer_ordering_indexв значениеoff.Значение по умолчанию для этого флага равно
on.Дополнительную информацию и примеры см. в Разделе 8.9.2, «Переключаемые оптимизации» и Разделе 8.2.1.17, «Оптимизация запросов LIMIT».
-
-
Триггеры. Раньше таблица могла иметь не более одного триггера для каждой комбинации события триггера (
INSERT,UPDATE,DELETE) и времени действия (BEFORE,AFTER). Это ограничение было снято, и разрешено несколько триггеров. Дополнительную информацию см. в Разделе 23.3, «Использование триггеров». -
Регистрация. Были добавлены следующие улучшения регистрации:
Раньше, в Unix и Unix-подобных системах, поддержка MySQL для отправки журнала ошибок сервера в
syslogреализовывалась путем захвата mysqld_safe вывода журнала ошибок сервера и передачи его вsyslog. Теперь сервер включает родную поддержкуsyslog, которая была расширена и включает Windows. Дополнительную информацию об отправке вывода журнала ошибок сервера вsyslogсм. в Разделе 5.4.2, «Журнал ошибок».Клиент mysql теперь имеет опцию
--syslog, которая отправляет интерактивные операторы в системнуюsyslog-утилиту. Регистрация подавляется для операторов, соответствующих списку по умолчанию “ignore” ("*IDENTIFIED*:*PASSWORD*"), а также для операторов, соответствующих любым шаблонам, заданным с помощью опции--histignore. См. Раздел 4.5.1.3, «Регистрация клиента mysql».
-
Сгенерированные колонки. MySQL теперь поддерживает указание сгенерированных колонок в операторах
CREATE TABLEиALTER TABLE. Значения сгенерированной колонки вычисляются из выражения, указанного во время создания колонки. Сгенерированные колонки могут быть виртуальными (вычисляются “в момент чтения” строк) или хранимыми (вычисляются при вставке или обновлении строк). Дополнительную информацию см. в Разделе 13.1.18.7, «CREATE TABLE и сгенерированные колонки». -
Клиент mysql. Раньше Control+C в mysql прерывал текущий оператор, если он был, или выходил из mysql, если нет. Теперь Control+C прерывает текущий оператор, если он есть, или отменяет любую частичную строку ввода в противном случае, но не выходит.
-
Переименование имени базы данных с помощью mysqlbinlog. Переименование баз данных с помощью mysqlbinlog при чтении из двоичных журналов, записанных с использованием формата на основе строк, теперь поддерживается с помощью опции
--rewrite-db, добавленной в MySQL 5.7.1.Эта опция использует формат
--rewrite-db='. Можно реализовать несколько правил переписывания, указав опцию несколько раз.dboldname->dbnewname' -
HANDLER с разделяемыми таблицами. Оператор
HANDLERтеперь может использоваться с пользовательскими разделяемыми таблицами. Такие таблицы могут использовать любой из доступных типов разбиения (см. Раздел 22.2, «Типы разбиения»). -
Поддержка pushdown условия индекса для разделяемых таблиц. Запросы к разделяемым таблицам, использующие хранилище
InnoDBилиMyISAM, могут использовать оптимизацию pushdown условия индекса, которая была представлена в MySQL 5.6. См. Раздел 8.2.1.5, «Оптимизация pushdown условия индекса» для получения дополнительной информации.
-
Поддержка ALTER TABLE ... EXCHANGE PARTITION без валидации. Начиная с MySQL 5.7.5, синтаксис
ALTER TABLE ... EXCHANGE PARTITIONвключает необязательную{WITH|WITHOUT} VALIDATIONклаузу. КогдаWITHOUT VALIDATIONуказано,ALTER TABLE ... EXCHANGE PARTITIONне выполняет проверку строк при обмене заполненной таблицей с разбиением, что позволяет администраторам базы данных взять на себя ответственность за обеспечение того, что строки находятся в границах определения разбиения.WITH VALIDATIONявляется по умолчанию и не требует явного указания. Дополнительную информацию см. в Разделе 22.3.3, «Обмен разбиениями и подразбиениями с таблицами». -
Улучшения потока дампов источников. Поток дампов источника был переработан для уменьшения конфликтов блокировок и повышения производительности потока источника. До MySQL 5.7.2 поток дампов брал блокировку на двоичном журнале при чтении события; в MySQL 5.7.2 и более поздних версиях эта блокировка удерживается только во время чтения позиции в конце последнего успешно записанного события. Это означает, что несколько потоков дампов теперь могут одновременно читать из файла двоичного журнала, и что потоки дампов теперь могут читать, пока клиенты записывают в двоичный журнал.
-
Поддержка наборов символов. MySQL 5.7.4 включает набор символов
gb18030, который поддерживает набор символов Китайского национального стандарта GB18030. Дополнительную информацию о поддержке наборов символов MySQL см. в Главе 10, Наборы символов, наборы правил сопоставления, Unicode. -
Изменение источника репликации без STOP SLAVE. В MySQL 5.7.4 и более поздних версиях строгое требование выполнить
STOP SLAVEперед выполнением любой командыCHANGE MASTER TOотменено. Вместо того, чтобы полагаться на остановку реплики, поведениеCHANGE MASTER TOтеперь зависит от состояния потоков репликации SQL и I/O реплики; остановка или работа этих потоков определяют, какие опции могут или не могут быть использованы с командойCHANGE MASTER TOв данный момент. Правила определения этого состояния перечислены здесь:Если поток SQL остановлен, вы можете выполнить
CHANGE MASTER TO, используя любую комбинацию параметровRELAY_LOG_FILE,RELAY_LOG_POSиMASTER_DELAY, даже если поток I/O реплики работает. Никакие другие параметры не могут быть использованы с этой командой, когда поток I/O работает.Если поток I/O остановлен, вы можете выполнить
CHANGE MASTER TO, используя любой из параметров для этой команды (в любой разрешенной комбинации) за исключениемRELAY_LOG_FILE,RELAY_LOG_POSилиMASTER_DELAY, даже когда поток SQL работает. Эти три параметра не могут быть использованы, когда поток I/O работает.Оба потока SQL и I/O должны быть остановлены перед выполнением
CHANGE MASTER TO ... MASTER_AUTO_POSITION = 1.
Вы можете проверить текущее состояние потоков репликации SQL и I/O, используя
SHOW SLAVE STATUS.Если вы используете репликацию на основе инструкций и временных таблиц, возможно, что инструкция
CHANGE MASTER TO, следующая за инструкциейSTOP SLAVE, оставит временные таблицы на реплике. В рамках этого набора улучшений, предупреждение теперь выводится всякий раз, когдаCHANGE MASTER TOвыполняется послеSTOP SLAVEпри использовании репликации на основе инструкций иSlave_open_temp_tablesостается больше 0.Дополнительную информацию см. в Разделе 13.4.2.1, «CHANGE MASTER TO Statement» и Разделе 16.3.7, «Переключение источников при отказе».
-
Набор тестов. Теперь в наборе тестов MySQL используется
InnoDBв качестве движка хранения по умолчанию. -
Теперь возможна репликация с несколькими источниками. Репликация MySQL с несколькими источниками добавляет возможность репликации с нескольких источников на реплику. Топологии репликации MySQL с несколькими источниками могут использоваться для резервного копирования нескольких серверов на один сервер, для слияния фрагментов таблиц и консолидации данных с нескольких серверов на один сервер. См. Раздел 16.1.5, «Репликация MySQL с несколькими источниками».
В рамках репликации MySQL с несколькими источниками были добавлены каналы репликации. Каналы репликации позволяют реплике открывать несколько подключений для репликации с источниками, где каждый канал представляет собой подключение к источнику. См. Раздел 16.2.2, «Каналы репликации».
-
Таблицы схемы Performance Schema для групповой репликации. MySQL 5.7 добавляет ряд новых таблиц в схему Performance Schema, чтобы предоставить информацию о группах и каналах репликации. К ним относятся следующие таблицы:
Все эти таблицы были добавлены в MySQL 5.7.2, за исключением
replication_group_membersиreplication_group_member_stats, которые были добавлены в MySQL 5.7.6. Дополнительную информацию см. в Разделе 25.12.11, «Таблицы Performance Schema для репликации». -
SQL для групповой репликации. Следующие инструкции были добавлены в MySQL 5.7.6 для управления групповой репликацией:
Дополнительную информацию см. в Разделе 13.4.3, «SQL-инструкции для управления групповой репликацией».
Функции, устаревшие в MySQL 5.7
Следующие функции устарели в MySQL 5.7 и могут быть удалены в будущей версии. В случае наличия альтернатив приложения должны быть обновлены для использования альтернатив.
Для приложений, использующих устаревшие в MySQL 5.7 функции, которые были удалены в более поздних версиях MySQL, запросы могут не выполняться при репликации из источника MySQL 5.7 в реплику более поздней версии или иметь разные эффекты на источнике и реплике. Чтобы избежать таких проблем, приложения, использующие устаревшие в 5.7 функции, должны быть переработаны для избежания их использования и замены на альтернативы, когда это возможно.
-
Режимы SQL
ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATEиNO_ZERO_IN_DATEтеперь устарели, но включены по умолчанию. В долгосрочной перспективе они планируются включить в строгий режим SQL и удалить в качестве явных режимов в будущей версии MySQL.Устаревшие режимы SQL
ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATEиNO_ZERO_IN_DATEпо-прежнему распознаются, чтобы запросы, содержащие их имена, не вызывали ошибку, но ожидается, что они будут удалены в будущей версии MySQL. Чтобы подготовиться к версиям MySQL, в которых эти имена режимов отсутствуют, приложения должны быть изменены таким образом, чтобы не ссылаться на них. См. Изменения режима SQL в MySQL 5.7. -
Эти режимы SQL теперь устарели; ожидается, что они будут удалены в будущей версии MySQL:
DB2,MAXDB,MSSQL,MYSQL323,MYSQL40,ORACLE,POSTGRESQL,NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS. Эти устаревания имеют два следствия:Назначение устаревшего режима переменной системы
sql_modeприводит к предупреждению.При включенном режиме SQL
MAXDB, использованиеCREATE TABLEилиALTER TABLEдля добавления столбца типаTIMESTAMPв таблицу приводит к предупреждению.
-
Изменения в операциях управления учетными записями делают следующие функции устаревшими. Теперь они устарели:
-
Использование
GRANTдля создания пользователей. Используйте вместо этогоCREATE USER. Следование этому правилу делает режим SQLNO_AUTO_CREATE_USERнесущественным для операторовGRANT, поэтому он тоже устарел. Использование
GRANTдля изменения свойств учетной записи, кроме назначений привилегий. Это включает аутентификацию, SSL и свойства лимитов ресурсов. Вместо этого задайте такие свойства при создании учетной записи с помощьюCREATE USERили измените их позже с помощьюALTER USER.-
IDENTIFIED BY PASSWORD 'синтаксис дляauth_string'CREATE USERиGRANT. Вместо этого используйтеIDENTIFIED WITHдляauth_pluginAS 'auth_string'CREATE USERиALTER USER, где значение'находится в формате, совместимом с указанным плагином.auth_string' -
Функция
PASSWORD()устарела и должна быть исключена из всех контекстов. Следовательно, синтаксисSET PASSWORD ... = PASSWORD('также устарел. Синтаксисauth_string')SET PASSWORD ... = 'не устарел; тем не менее,auth_string'ALTER USERтеперь является предпочтительным оператором для задания паролей. -
Переменная системы
old_passwords. Плагины аутентификации учетных записей больше не могут быть оставлены не указанными в таблице системыmysql.user, поэтому любой оператор, который устанавливает пароль из строки открытого текста, может однозначно определить метод хэширования для использования над строкой перед сохранением её в таблицеmysql.user. Это делаетold_passwordsизбыточным.
-
-
Кэш запросов устарел. Устаревание включает следующие элементы:
-
Операторы
FLUSH QUERY CACHEиRESET QUERY CACHE. -
Модификаторы
SQL_CACHEиSQL_NO_CACHEоператораSELECT. -
Эти переменные системы:
have_query_cache,ndb_cache_check_time,query_cache_limit,query_cache_min_res_unit,query_cache_size,query_cache_type,query_cache_wlock_invalidate. -
Эти переменные состояния:
Qcache_free_blocks,Qcache_free_memory,Qcache_hits,Qcache_inserts,Qcache_lowmem_prunes,Qcache_not_cached,Qcache_queries_in_cache,Qcache_total_blocks.
-
-
Ранее параметры запуска сервера
--transaction-isolationи--transaction-read-onlyсоответствовали переменным системыtx_isolationиtx_read_only. Для лучшего соответствия имен между параметром запуска и именем переменной системы были созданы алиасыtransaction_isolationиtransaction_read_onlyдляtx_isolationиtx_read_only. Переменныеtx_isolationиtx_read_onlyтеперь устарели; ожидается, что они будут удалены в MySQL 8.0. Приложения должны быть изменены для использованияtransaction_isolationиtransaction_read_onlyвместо них. -
Параметр
--skip-innodbи его синонимы (--innodb=OFF,--disable-innodbи т.д.) устарели. Эти параметры не имеют эффекта начиная с MySQL 5.7, потому чтоInnoDBотключить нельзя.
-
Клиентские параметры
--sslи--ssl-verify-server-certустарели. Используйте--ssl-mode=REQUIREDвместо--ssl=1или--enable-ssl. Используйте--ssl-mode=DISABLEDвместо--ssl=0,--skip-sslили--disable-ssl. Используйте--ssl-mode=VERIFY_IDENTITYвместо параметра--ssl-verify-server-cert. (Серверный параметр--sslне устарел.)Для C API, параметры
MYSQL_OPT_SSL_ENFORCEиMYSQL_OPT_SSL_VERIFY_SERVER_CERTсоответствуют клиентским параметрам--sslи--ssl-verify-server-certи устарели. ИспользуйтеMYSQL_OPT_SSL_MODEсо значением параметраSSL_MODE_REQUIREDилиSSL_MODE_VERIFY_IDENTITYвместо них. -
Переменная системы
log_warningsи серверный параметр--log-warningsустарели. Используйте переменную системыlog_error_verbosityвместо них. -
Серверный параметр
--temp-poolустарел. -
Переменная системы
binlog_max_flush_queue_timeне выполняет никаких действий в MySQL 5.7 и устарела начиная с MySQL 5.7.9. -
Переменная системы
innodb_support_xa, которая включает поддержкуInnoDBдвухфазного подтверждения в транзакциях XA, устарела начиная с MySQL 5.7.10. ПоддержкаInnoDBдвухфазного подтверждения в транзакциях XA всегда включена начиная с MySQL 5.7.10. -
Переменные системы
metadata_locks_cache_sizeиmetadata_locks_hash_instancesустарели. Они не выполняют никаких действий начиная с MySQL 5.7.4. -
Переменная системы
sync_frmустарела. -
Глобальные переменные системы
character_set_databaseиcollation_databaseустарели; ожидается их удаление в будущей версии MySQL.Присвоение значения сессионным переменным системы
character_set_databaseиcollation_databaseустарело и вызывает предупреждение. Ожидается, что сессионные переменные станут только для чтения в будущей версии MySQL, а присвоение значений им вызовет ошибку, хотя чтение сессионных переменных для определения набора символов базы данных и сортировки по умолчанию для базы данных по-прежнему возможно. -
Глобальный область действия переменной системы
sql_log_binустарел, и теперь эту переменную можно задавать только в рамках сессии. ОператорSET GLOBAL SQL_LOG_BINтеперь вызывает ошибку. Чтение глобального значенияsql_log_binпо-прежнему возможно, но вызывает предупреждение. Вам следует немедленно устранить любые зависимости от чтения этого значения в своих приложениях; глобальный область действияsql_log_binудален в MySQL 8.0. -
С введением словаря данных в MySQL 8.0, параметр
--ignore-db-dirи переменная системыignore_db_dirsстали избыточными и были удалены в этой версии. Следовательно, они устарели в MySQL 5.7. -
GROUP BYпо умолчанию неявно сортируется (то есть при отсутствииASCилиDESCобозначений), но полагаться на неявнуюGROUP BYсортировку в MySQL 5.7 устарело. Для достижения определенного порядка сортировки сгруппированных результатов предпочтительнее использовать явныеASCилиDESCобозначения для столбцовGROUP BYили указать предложениеORDER BY.GROUP BYсортировка — это расширение MySQL, которое может измениться в будущей версии; например, чтобы позволить оптимизатору упорядочивать группировки любым способом, который он сочтет наиболее эффективным, и чтобы избежать затрат на сортировку. -
Ключевые слова
EXTENDEDиPARTITIONSдля оператораEXPLAINустарели. Эти ключевые слова все еще распознаются, но теперь они излишни, потому что их эффект всегда включен. -
Функции шифрования
ENCRYPT(),ENCODE(),DECODE(),DES_ENCRYPT()иDES_DECRYPT()устарели. ДляENCRYPT()рассмотрите использованиеSHA2()для одностороннего хеширования вместо этого. Для других функций рассмотрите использованиеAES_ENCRYPT()иAES_DECRYPT()вместо этого. Параметр--des-key-file, переменная системыhave_crypt, параметрDES_KEY_FILEдля оператораFLUSHи параметрHAVE_CRYPTCMake также устарели. -
Пространственная функция
MBREqual()устарела. ИспользуйтеMBREquals()вместо неё. -
Функции, описанные в Разделе 12.16.4, «Функции, создающие значения геометрии из значений WKB», ранее принимали либо строки WKB, либо аргументы геометрии. Использование аргументов геометрии устарело. См. этот раздел для получения рекомендаций по миграции запросов, чтобы избежать использования аргументов геометрии.
-
Таблица
INFORMATION_SCHEMAPROFILINGустарела. Используйте вместо неё Performance Schema, см. Главу 25, MySQL Performance Schema. -
Таблицы
INFORMATION_SCHEMAINNODB_LOCKSиINNODB_LOCK_WAITSустарели, будут удалены в MySQL 8.0, предоставляя таблицы Performance Schema в качестве замены. -
Таблица Performance Schema
setup_timersустарела и удалена в MySQL 8.0, как и строкаTICKв таблицеperformance_timers. -
Вид схемы
syssys.versionустарел; ожидается его удаление в будущей версии MySQL. Затронутые приложения должны быть адаптированы для использования альтернативы. Например, используйте функциюVERSION()для получения версии сервера MySQL. -
Использование
\Nкак синонима дляNULLв операторах SQL устарело и удалено в MySQL 8.0; используйтеNULLвместо этого.Это изменение не влияет на операции импорта и экспорта текстовых файлов, выполненные с помощью оператора
LOAD DATAилиSELECT ... INTO OUTFILE, для которыхNULLпо-прежнему представлено как\N. См. Раздел 13.2.6, «Оператор LOAD DATA». -
Синтаксис
PROCEDURE ANALYSE()устарел.
-
Удаление комментариев клиентом mysql и опции для его управления (
--skip-comments,--comments) устарели. -
Поддержка mysqld_safe для
syslogвывода устарела. Используйте встроенную поддержку сервераsyslogвместо неё. См. Раздел 5.4.2, «Журнал ошибок». -
Преобразование имён баз данных до MySQL 5.1, содержащих специальные символы, в формат 5.1 с добавлением префикса
#mysql50#устарело. Из-за этого опции--fix-db-namesи--fix-table-namesдля mysqlcheck и фразаUPGRADE DATA DIRECTORY NAMEдля инструкцииALTER DATABASEтакже устарели.Обновления поддерживаются только между версиями релизов (например, 5.0 до 5.1 или 5.1 до 5.5), поэтому вряд ли останется необходимость в преобразовании имён баз данных 5.0 в текущие версии MySQL. В качестве обходного решения обновите установку MySQL 5.0 до MySQL 5.1 перед обновлением до более новой версии.
-
Функциональность mysql_install_db интегрирована в сервер MySQL, mysqld. Для использования этой возможности для инициализации установки MySQL, если вы ранее вручную вызывали mysql_install_db, вызовите mysqld с опцией
--initializeили--initialize-insecure, в зависимости от того, хотите ли вы, чтобы сервер сгенерировал случайный пароль для первоначального'root'@'localhost'аккаунта.mysql_install_db теперь устарел, как и специальная опция
--bootstrap, которую mysql_install_db передаёт в mysqld. -
Утилита mysql_plugin устарела. Альтернативы включают загрузку плагинов при запуске сервера с помощью опции
--plugin-loadили--plugin-load-add, или во время выполнения с помощью инструкцииINSTALL PLUGIN. -
Утилита resolveip устарела. Вместо неё можно использовать nslookup, host или dig.
-
Утилита resolve_stack_dump устарела. Следы стека из официальных сборок MySQL всегда символизированы, поэтому нет необходимости использовать resolve_stack_dump.
-
Функции C API, , , и устарели. То же самое касается соответствующих команд протокола клиент-сервер
COM_PROCESS_KILL,COM_FIELD_LIST,COM_PROCESS_INFOиCOM_REFRESH. Вместо этого используйте для выполнения инструкцииKILL,SHOW COLUMNS,SHOW PROCESSLISTилиFLUSH, соответственно. -
Функция C API
mysql_shutdown()устарела. Вместо этого используйте для выполнения инструкцииSHUTDOWN. -
Встроенная библиотека сервера
libmysqldустарела начиная с MySQL 5.7.19. Также устарели:Опции mysql_config
--libmysqld-libs,--embedded-libsи--embeddedОпции CMake
WITH_EMBEDDED_SERVER,WITH_EMBEDDED_SHARED_LIBRARYиINSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR(Недокументированная) опция mysql
--server-argОпции mysqltest
--embedded-server,--server-argи--server-fileТестовые программы mysqltest_embedded и mysql_client_test_embedded
Поскольку
libmysqldиспользует API, сравнимый сlibmysqlclient, путь миграции отlibmysqldпрост:Запустите автономный сервер MySQL (mysqld).
Измените код приложения, чтобы удалить API-вызовы, специфичные для
libmysqld.Измените код приложения, чтобы подключиться к автономному серверу MySQL.
Измените скрипты сборки, чтобы использовать
libmysqlclientвместоlibmysqld. Например, если вы используете mysql_config, вызовите его с опцией--libsвместо--libmysqld-libs.
-
Утилита replace устарела.
-
Поддержка DTrace устарела.
-
Функция
JSON_MERGE()устарела начиная с MySQL 5.7.22. ИспользуйтеJSON_MERGE_PRESERVE()вместо неё. -
Поддержка размещения разделов таблиц в общих
InnoDBтаблицах устарела начиная с MySQL 5.7.24. Общие таблица включаютInnoDBсистемную таблицу и общие таблицы. Для получения информации об определении разделов в общих таблицах и их перемещении в таблицы с отдельными файлами на таблицу, см. . -
Поддержка
TABLESPACE = innodb_file_per_tableиTABLESPACE = innodb_temporaryсCREATE TEMPORARY TABLEустарела начиная с MySQL 5.7.24. -
Опция
--ndbperror устарела. Используйте утилиту ndb_perror вместо неё. -
Переменная системы
myisam_repair_threadsmyisam_repair_threadsустарели начиная с MySQL 5.7.38; ожидается, что поддержка обоих будет удалена в будущей версии MySQL.Начиная с MySQL 5.7.38, значения, отличные от 1 (по умолчанию) для
myisam_repair_threads, вызывают предупреждение.
Функции, удаленные в MySQL 5.7
Следующие элементы устарели и были удалены в MySQL 5.7. В случае наличия альтернатив, приложения следует обновить, чтобы использовать их.
Для приложений MySQL 5.6, которые используют функции, удаленные в MySQL 5.7, операторы могут завершиться неудачно при репликации из источника MySQL 5.6 в реплику MySQL 5.7, или они могут иметь разные эффекты на источнике и реплике. Чтобы избежать таких проблем, приложения, которые используют функции, удаленные в MySQL 5.7, должны быть пересмотрены, чтобы избежать их и использовать альтернативы, где это возможно.
-
Поддержка паролей, использующих более старый формат хеширования паролей до версии 4.1, удалена, что влечет за собой следующие изменения. Приложения, использующие любые больше не поддерживаемые функции, должны быть изменены.
-
Плагин аутентификации
mysql_old_passwordудален. Аккаунты, использующие этот плагин, отключаются при запуске, и сервер записывает сообщение “неизвестный плагин” в журнал ошибок. Инструкции по обновлению аккаунтов, использующих этот плагин, см. в разделе 6.4.1.3, «Миграция от хеширования паролей до версии 4.1 и плагина mysql_old_password». -
Опция
--secure-authдля серверных и клиентских программ является по умолчанию, но теперь она ничем не отличается. Она устарела; ожидается, что она будет удалена в будущих выпусках MySQL. -
Опция
--skip-secure-authдля серверных и клиентских программ больше не поддерживается, и её использование приводит к ошибке. -
Система переменных сервера
secure_authразрешает только значение 1; значение 0 больше не разрешается. -
Для системной переменной
old_passwordsзначение 1 (генерировать хеши до версии 4.1) больше не разрешается. -
Функция
OLD_PASSWORD()удалена.
-
-
В MySQL 5.6.6 тип данных
YEAR(2)с двумя цифрами был устарел. ПоддержкаYEAR(2)теперь удалена. После обновления до MySQL 5.7.5 или выше, все оставшиеся столбцыYEAR(2)с двумя цифрами должны быть преобразованы в столбцыYEARс четырьмя цифрами, чтобы снова стать пригодными для использования. Стратегии преобразования см. в разделе 11.2.5, «Ограничения YEAR(2) с двумя цифрами и миграция к YEAR с четырьмя цифрами». Например, выполните mysql_upgrade после обновления. -
Система переменных
innodb_mirrored_log_groups. Единственным поддерживаемым значением было 1, поэтому она не имела смысла. -
Система переменных
storage_engine. Используйтеdefault_storage_engineвместо этого. -
Система переменных
thread_concurrency. -
Система переменных
timed_mutexes, которая не имела эффекта. -
Запрос
IGNOREдляALTER TABLE. -
INSERT DELAYEDбольше не поддерживается. Сервер распознает, но игнорирует ключевое словоDELAYED, обрабатывает вставку как обычную вставку и генерирует предупреждениеER_WARN_LEGACY_SYNTAX_CONVERTED. (“INSERT DELAYED больше не поддерживается. Оператор был преобразован в INSERT.”) Аналогично,REPLACE DELAYEDобрабатывается как обычное замещение. Ожидается, что ключевое словоDELAYEDбудет удалено в будущих выпусках.Кроме того, были удалены несколько функций или опций, связанных с
DELAYED:Опция
--delayed-insertдля mysqldump.Столбцы
COUNT_WRITE_DELAYED,SUM_TIMER_WRITE_DELAYED,MIN_TIMER_WRITE_DELAYED,AVG_TIMER_WRITE_DELAYEDиMAX_TIMER_WRITE_DELAYEDтаблицыtable_lock_waits_summary_by_tableсхемы производительности.mysqlbinlog больше не записывает комментарии, упоминающие
INSERT DELAYED.
-
Создание символических ссылок на базы данных в Windows с использованием файлов
.symбыло удалено, так как оно дублирует встроенную поддержку символических ссылок, доступную с помощью mklink. Все символические ссылки файлов.symтеперь игнорируются и должны быть заменены символическими ссылками, созданными с помощью mklink. См. раздел 8.12.3.3, «Использование символических ссылок для баз данных в Windows». -
Неиспользуемые опции
--basedir,--datadirи--tmpdirдля mysql_upgrade были удалены. -
Ранее опции программы можно было указывать полностью или в виде любого недвусмысленного префикса. Например, опция
--compressможно было передать в mysqldump как--compr, но не как--comp, потому что последнее является неоднозначным. Префиксы опций больше не поддерживаются; принимаются только полные опции. Это происходит потому, что префиксы могут создавать проблемы при реализации новых опций для программ, и префикс, который в настоящее время недвусмысленен, может стать неоднозначным в будущем. Некоторые последствия этого изменения:Опция
--key-bufferтеперь должна указываться как--key-buffer-size.Опция
--skip-grantтеперь должна указываться как--skip-grant-tables.
-
SHOW ENGINE INNODB MUTEXвывод удалён. Сопоставимая информация может быть сгенерирована путём создания представлений на таблицах схемы производительности. -
Монитор пространства таблиц
InnoDBи монитор таблицInnoDBудалены. Для монитора таблиц эквивалентная информация может быть получена из таблицInnoDBINFORMATION_SCHEMA. -
Специально именованные таблицы, используемые для включения и выключения стандартного монитора
InnoDBи монитора блокировокInnoDB(innodb_monitorиinnodb_lock_monitor) удалены и заменены двумя динамическими системными переменными:innodb_status_outputиinnodb_status_output_locks. Дополнительную информацию см. в разделе 14.18, «Мониторы InnoDB». -
Системные переменные
innodb_use_sys_mallocиinnodb_additional_mem_pool_size, устаревшие в MySQL 5.6.3, были удалены. -
Утилиты msql2mysql, mysql_convert_table_format, mysql_find_rows, mysql_fix_extensions, mysql_setpermission, mysql_waitpid, mysql_zap, mysqlaccess и mysqlbug.
-
Утилита mysqlhotcopy. Альтернативы включают mysqldump и MySQL Enterprise Backup.
-
Сценарий binary-configure.sh.
-
Опция
INNODB_PAGE_ATOMIC_REF_COUNTCMake удалена. -
Опция
innodb_create_intrinsicудалена. -
Опция
innodb_optimize_point_storageи связанные с ней внутренние типы данных (DATA_POINTиDATA_VAR_POINT) удалены. -
Опция
innodb_log_checksum_algorithmудалена. -
Системная переменная
myisam_repair_threadsначиная с MySQL 5.7.39.
© 2025 Oracle
Licensed under the GPLv2 License.