mysql 8 что нового

SPBDEV Blog

mysql 8 что нового. Смотреть фото mysql 8 что нового. Смотреть картинку mysql 8 что нового. Картинка про mysql 8 что нового. Фото mysql 8 что нового

Вышеперечисленные улучшения представляют собой лишь часть из основных моментов. Вы можете также посмотреть исходный код на github.com/mysql.

Возможности для разработчиков

Разработчики MySQL хотят новых функций, а MySQL 8.0 предоставляет множество новых и многократно запрашиваемых функций в таких областях, как SQL, JSON, регулярные выражения и ГИС. Разработчики также хотят иметь возможность хранить Emojis, поэтому UTF8MB4 теперь является стандартным набором символов в 8.0. Наконец, в Datatypes есть улучшения, с битовыми операциями с типами данными BINARY и улучшенными функциями IPv6 и UUID.

Оконные функции

MySQL 8.0 предоставляет оконные функции SQL. Подобно сгруппированным агрегатным функциям, оконные функции выполняют некоторые вычисления в наборе строк, например. COUNT или SUM. Но если сгруппированный агрегат сворачивает этот набор строк в одну строку, оконная функция будет выполнять агрегацию для каждой строки в наборе результатов.

Поддержка оконных функций (аналитические функции a.k.a.) является частым пользовательским запросом. Оконные функции уже давно являются частью стандартного SQL (SQL 2003).

Обобщенное табличное выражение

MySQL 8.0 предоставляет [рекурсивные] обобщенные выражения таблиц (CTE). Нерекурсивные CTE можно объяснить как «улучшенные производные таблицы», поскольку он позволяет ссылаться на производную таблицу более одного раза. Рекурсивный CTE представляет собой набор строк, который строится итеративно: из исходного набора строк процесс получает новые строки, которые вырабатывают набор, и эти новые строки снова загружаются в процесс, производя больше строк и т. д. до тех пор, пока процесс не создаст больше строк. CTE является часто запрашиваемой функцией SQL, например, запрос функции 16244 и 32174.

NOWAIT и SKIP LOCKED

Убывающие индексы

GROUPING

Советы оптимизатора

Мы предпочитаем новый стиль подсказок оптимизатора как предпочтительный по сравнению с старыми подсказками и настройкой значений optimizer_switch. Не смешиваясь с SQL, новые подсказки могут быть введены во многих местах в строке запроса. Они также имеют более четкую семантику в качестве подсказки (в отношении директивы).

MySQL 8.0 добавляет новые функции JSON и повышает производительность для сортировки и группировки значений JSON.

Расширенный синтаксис для диапазонов в выражениях маршрута JSON

Функции таблицы JSON

MySQL 8.0 добавляет функции таблицы JSON, которые позволяют использовать SQL-механизмы для данных JSON. JSON_TABLE () создает реляционное представление данных JSON. Он отображает результат оценки данных JSON в реляционные строки и столбцы. Пользователь может запросить результат, возвращаемый функцией, как обычную реляционную таблицу с использованием SQL, например. объединение, проект и совокупность.

Функции агрегирования JSON

MySQL 8.0 добавляет функции агрегирования JSON_ARRAYAGG () для генерации массивов JSON и JSON_OBJECTAGG () для генерации объектов JSON. Это позволяет объединить документы JSON в несколько строк в массив JSON или объект JSON.

Функции слияния JSON

Функция JSON_MERGE_PATCH () реализует семантику JavaScript (и других языков сценариев), определенных RFC7396, то есть удаляет дубликаты по приоритету второго документа. Например, JSON_MERGE (‘<"a": 1, "b": 2>‘, ‘<"a": 3, "c": 4>‘); # возвращает <"a": 3, "b": 2, "c": 4>.

Функция JSON_MERGE_PRESERVE () имеет семантику JSON_MERGE (), реализованную в MySQL 5.7, которая сохраняет все значения, например JSON_MERGE (‘<"a": 1, "b": 2>‘, ‘ <"a": 3, " с ": 4>‘); # возвращает <"a": [1,3], "b": 2, "c": 4>.

Существующая функция JSON_MERGE () исключена из MySQL 8.0 с целью устранения неоднозначности для операции слияния.

JSON Pretty Function

MySQL 8.0 добавляет функцию JSON_PRETTY () в MySQL. Функция принимает либо собственный тип данных JSON, либо строковое представление JSON и возвращает форматированную строку JSON с возможностью чтения человеком с новыми строками и отступом.

Функции размера JSON

MySQL 8.0 добавляет функции JSON, связанные с использованием пространства для данного объекта JSON. JSON_STORAGE_SIZE () возвращает фактический размер в байтах для типа данных JSON. JSON_STORAGE_FREE () возвращает свободное пространство двоичного типа JSON в байтах, включая фрагментацию и отступы, сохраненные для обновления inplace.

Улучшенная сортировка JSON

MySQL 8.0 обеспечивает лучшую производительность для сортировки / группировки значений JSON с помощью ключей сортировки переменной длины. Предварительные контрольные показатели показывают улучшение в сортировке в 1,2-18 раз, в зависимости от варианта использования.

Частичное обновление JSON

MySQL 8.0 добавляет поддержку частичного обновления функций JSON_REMOVE (), JSON_SET () и JSON_REPLACE (). Если обновлены только некоторые части документа JSON, мы хотим предоставить информацию обработчику о том, что было изменено, чтобы механизм хранения и репликация не нуждались в написании полного документа. В реплицированной среде не может быть гарантировано, что макет документа JSON точно совпадает на главном и подчиненном устройстве, поэтому физические различия не могут использоваться для уменьшения сетевого ввода-вывода для репликации на основе строк. Таким образом, MySQL 8.0 обеспечивает логические различия, которые репликация на основе строк может отправлять по каналу и повторно использовать на подчиненном устройстве.

MySQL 8.0 обеспечивает поддержку географии. Это включает поддержку метаданных для пространственной справочной системы (SRS), а также пространственные типы данных SRS, пространственные индексы и пространственные функции. Короче говоря, MySQL 8.0 понимает координаты широты и долготы на земной поверхности и может, например, правильно рассчитать расстояния между двумя точками на поверхности земли в любой из около 5000 поддерживаемых пространственных систем отсчета.

Пространственная справочная система (SRS)

Информационная схема ST_SPATIAL_REFERENCE_SYSTEMS предоставляет информацию о доступных пространственных системах отсчета для пространственных данных. Это представление основано на стандарте SQL / MM (ISO / IEC 13249-3). Каждая пространственная система отсчета идентифицируется номером SRID. MySQL 8.0 поставляется с около 5000 SRID из набора геодезических параметров EPSG, охватывая эллипсоиды с привязкой и 2d проекции (т. Е. Все двумерные пространственные системы отсчета).

Совместимые с SRID пространственные типы данных

Пространственные типы данных могут быть приписаны к определению пространственной системы отсчета, например, к SRID 4326 следующим образом: CREATE TABLE t1 (г GEOMETRY SRID 4326); SRID здесь является модификатором типа SQL для типа данных GEOMETRY. Значения, вставленные в столбец с свойством SRID, должны находиться в этом SRID. Попытки вставить значения с другими SRID приводят к возникновению условия исключения. Немодифицированные типы, т. е. типы без спецификации SRID, будут продолжать принимать все SRID, как и раньше.

MySQL 8.0 добавляет представление INFORMATION_SCHEMA.ST_GEOMETRY_COLUMNS, как указано в SQL / MM Part 3, Sect. 19,2. В этом представлении будут перечислены все столбцы GEOMETRY в экземпляре MySQL, и для каждого столбца он будет отображать стандартные SRS_NAME, SRS_ID и GEOMETRY_TYPE_NAME.

Совместимые с SRID пространственные индексы

Пространственные индексы могут быть созданы на пространственных типах данных. Столбцы в пространственных индексах должны быть заявлены как NOT NULL. Например, например: CREATE TABLE t1 (g GEOMETRY SRID 4326 NOT NULL, ПРОСТРАНСТВЕННЫЙ ИНДЕКС (g));

Столбцы с пространственным индексом должны иметь модификатор типа SRID, чтобы оптимизатор мог использовать индекс. Если пространственный индекс создается в столбце, который не имеет модификатора типа SRID, выдается предупреждение.

Совместимые с SRID пространственные функции

MySQL 8.0 расширяет пространственные функции, такие как ST_Distance () и ST_Length (), чтобы обнаружить, что его параметры находятся в географическом (эллипсоидальном) SRS и вычислять расстояние на эллипсоиде. В данное время ST_Distance и пространственные отношения, такие как ST_Within, ST_Intersects, ST_Contains, ST_Crosses и т. д. поддерживают географические вычисления. Поведение каждой функции ST определено в SQL / MM Part 3 Spatial.

Наборы символов

MySQL 8.0 делает UTF8MB4 набором символов по умолчанию. Производительность SQL, такая как сортировка строк UTF8MB4, была улучшена в 20 раз в 8,0 по сравнению с 5.7. UTF8MB4 является доминирующей кодировкой символов для Интернета, и этот шаг облегчит жизнь большинству пользователей MySQL.

Типы данных

Битовые операции с бинарными типами данных

MySQL 8.0 расширяет битовые операции (поразрядный AND и др.) чтобы также работать с [VAR] BINARY / [TINY | MEDIUM | LONG] BLOB. Поразрядные операции до версии 8.0 поддерживались только для целых чисел. Если вы использовали битовые операции над двоичными файлами, аргументы были неявно переданы BIGINT (64 бит) перед операцией, что, возможно, привело к потере бит. Начиная с версии 8.0 поразрядные операции работают для всех типов данных BINARY и BLOB, применяя аргументы таким образом, чтобы бит не терялся.

IPV6-манипуляция

UUID-манипуляции

MySQL 8.0 улучшает удобство манипуляций UUID, реализуя три новые функции SQL: UUID_TO_BIN (), BIN_TO_UUID () и IS_UUID (). Первая преобразует UUID форматированный текст в VARBINARY (16), вторая из VARBINARY (16) в текст в формате UUID, а последняя проверяет достоверность текста в формате UUID. UUID, хранящийся как VARBINARY (16), может быть проиндексирован с использованием функциональных индексов. Функции UUID_TO_BIN () и UUID_TO_BIN () также могут перемешивать связанные с временем биты и перемещать их в начало, делая его дружественным к индексу и избегая случайных вставок в Б-дереве, таким образом уменьшая время вставки. Отсутствие такой функциональности упоминалось как один из недостатков использования UUID.

Модель стоимости

Оптимизатор запросов учитывает буферизацию данных

MySQL 8.0 выбирает планы запросов на основе знаний о том, хранятся ли данные в памяти или на диске. Это происходит автоматически, как видно из конечного пользователя, нет никакой конфигурации. Исторически сложилось так, что модель стоимости MySQL предполагала, что данные будут находиться на вращающихся дисках. Константы стоимости, связанные с поиском данных в памяти и на диске, теперь различны, поэтому оптимизатор будет выбирать более оптимальные методы доступа для двух случаев, основываясь на знании местоположения данных.

Гистограммы оптимизатора

MySQL 8.0 реализует статистику гистограммы. С помощью гистограмм пользователь может создавать статистику распределения данных для столбца в таблице, как правило, для неиндексированных столбцов, которые затем будут использоваться оптимизатором запросов при поиске оптимального плана запроса. Основным вариантом использования статистики гистограмм является вычисление селективности (эффекта фильтра) предикатов формы “COLUMN operator CONSTANT”.

Пользователь создает гистограмму с помощью синтаксиса ANALYZE TABLE, который был расширен, чтобы принять два новых условия: UPDATE HISTOGRAM ON столбец [, столбец] [WITH n BUCKETS] и DROP HISTOGRAM ON column [, column]. Количество бакетов не является обязательным, по умолчанию равно 100. Статистика гистограмм хранится в таблице словаря «column_statistics» и доступна через view information_schema.COLUMN_STATISTICS. Гистограмма хранится как объект JSON из-за гибкости типа данных JSON. ANALYZE TABLE автоматически определяет, следует ли выбирать базовую таблицу или нет, исходя из размера таблицы. Он также примет решение о том, следует ли строить синглтон или гистограмму эквидистанта на основе распределения данных и количества указанных бакетов.

Регулярные выражения

MySQL 8.0 поддерживает регулярные выражения для UTF8MB4, а также новые функции, такие как REGEXP_INSTR (), REGEXP_LIKE (), REGEXP_REPLACE () и REGEXP_SUBSTR (). Для управления выполнением были добавлены системные переменные regexp_stack_limit (по умолчанию 8000000 байт) и regexp_time_limit (по умолчанию 32 шага). Функция REGEXP_REPLACE () является одной из наиболее востребованных функций сообщества MySQL, например, см. запрос функции, сообщенный Гангом Гинзелем как ошибка № 27389.

Возможности Dev Ops

Dev Ops заботится об операционных аспектах базы данных, как правило, о надежности, доступности, производительности, безопасности, наблюдаемости и управляемости. Высокая доступность поставляется с MySQL InnoDB Cluster и репликацией групп MySQL. Здесь приведено, что версия 8.0 дает таблице в других категориях.

Надежность

MySQL 8.0 повышает общую надежность MySQL, потому что:

Эта работа выполняется в контексте нового словаря транзакционных данных.

Наблюдаемость

Информационная схема (ускорение)

MySQL 8.0 обновляет Информационную схему. В новой реализации таблицы Information Schema представляют собой простые представления таблиц словаря данных, хранящихся в InnoDB. Это намного эффективнее старой реализации с ускорением в 100 раз. Это делает Информационную схему практически применимой с помощью внешнего инструментария.

Схема производительности (ускорение)

MySQL 8.0 ускоряет выполнение запросов схемы производительности, добавляя более 100 индексов таблиц схемы производительности. Индексы таблиц схемы производительности предопределены. Они не могут быть удалены, добавлены или изменены. Индекс схемы производительности реализуется как отфильтрованное сканирование по существующим табличным данным, а не обход через отдельную структуру данных. Нет Б-деревьев или хеш-таблиц, которые должны быть сконструированы, обновлены или управляться иным образом. Индексы таблиц производительности ведут себя как хэш-индексы в отношении быстрого извлечения нужных строк и того, что они не обеспечивают упорядочивание строк, оставляя сервер сортировать результирующий набор, если это необходимо. Однако, в зависимости от запроса, индексы устраняют необходимость полного сканирования таблицы и возвращают значительно меньший набор результатов. Показатели схемы производительности видимы благодаря SHOW INDEXES и представлены в выводе EXPLAIN для запросов, которые ссылаются на индексированные столбцы.

Переменные конфигурации

MySQL 8.0 добавляет полезную информацию о переменных конфигурации, таких как имя переменной, значения min / max, откуда поступило текущее значение, кто внес изменения и когда оно был сделано. Эта информация содержится в новой таблице схем производительности, называемой variable_info.

MySQL 8.0 позволяет просматривать агрегированные количества сообщений об ошибках клиента, отправляемых сервером. Пользователь может просматривать статистику из 5 разных таблиц: глобальный подсчет, сводку по потоку, сводную информацию для каждого пользователя, сводку на хост или сводку для каждой учетной записи. Для каждого сообщения об ошибке пользователь может увидеть количество поднятых ошибок, количество ошибок, исправленных обработчиком исключений SQL, отметки времени «first seen» и «last seen». Учитывая правильные привилегии, пользователь может выбрать SELECT из этих таблиц или TRUNCATE для сброса статистики.

Гистограммы времени ожидания

MySQL 8.0 предоставляет гистограммы схемы производительности времени ожидания с целью лучшего отслеживания времени ответа на запрос. Эта работа также вычисляет процентили «P95», «P99» и «P999» из собранных гистограмм. Эти процентили могут использоваться в качестве показателей качества обслуживания.

График зависимости блокировки данных
MySQL 8.0 предоставляет инструментарий блокировки данных в схеме производительности. Когда транзакция A является блокировкой строки R, а транзакция B ожидает в этой самой строке, B фактически блокируется A. Добавленный инструментарий раскрывает, какие данные заблокированы (R), кто владеет блокировкой (A), и кто ждет данные (B).

Пример запроса Digest

В MySQL 8.0 внесены некоторые изменения в таблицу схем показателей events_statements_summary_by_digest, чтобы получить полный примерный запрос и некоторую ключевую информацию об этом примере запроса. Столбец QUERY_SAMPLE_TEXT добавлен для захвата образца запроса, чтобы пользователи могли запускать EXPLAIN в реальном запросе и получать план запроса. Добавлен столбец QUERY_SAMPLE_SEEN для захвата временной метки образца запроса. Добавлен столбец QUERY_SAMPLE_TIMER_WAIT для захвата времени выполнения выборки запроса. Колонки FIRST_SEEN и LAST_SEEN были изменены для использования дробных секунд.

Метаданные о инструментах

MySQL 8.0 добавляет метаданные, такие как свойства, волатильность и документацию в таблицу настроек производительности setup_instruments. Это метаданные только для чтения в качестве онлайн-документации для инструментов, которые будут просматриваться пользователями или инструментами.

Регистрация ошибок

MySQL 8.0 обеспечивает тщательную обработку журнала ошибок MySQL. С точки зрения архитектуры программного обеспечения, журнал ошибок становится компонентом новой инфраструктуры сервиса. Это означает, что продвинутые пользователи могут при необходимости создать собственную версию журнала ошибок. Большинство пользователей не хотят писать собственную версию журнала ошибок, но все же хотят иметь некоторую свободу относительно того, что и где писать. Следовательно, 8.0 предлагает пользователям возможность добавлять емкости (где) и фильтры (что). MySQL 8.0 реализует службу фильтрации (API) и реализацию (компонент) службы фильтрации по умолчанию. Фильтрация здесь означает подавление определенных сообщений журнала (выбор) и / или полей в пределах данного сообщения журнала (проецирования). MySQL 8.0 реализует службу записи журнала (API) и реализацию (компонент) службы записи журнала по умолчанию. Утилиты записи журналов принимают событие журнала и записывают его в журнал. Этот журнал может быть классическим файлом, syslog, EventLog и новой утилитой записи журнала JSON.

По умолчанию, без какой-либо конфигурации, MySQL 8.0 предоставляет множество готовых ошибок журнала ошибок, таких как:

Это то, что записывается в журнал ошибок в 8.0 GA после запуска:

2018-03-08T10:14:29.289863Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.5) starting as process 8063

2018-03-08T10:14:29.745356Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.

2018-03-08T10:14:29.765159Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: ‘8.0.5’ socket: ‘/tmp/mysql.sock’ port: 3306 Source distribution.

2018-03-08T10:16:51.343979Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.5) Source distribution.

Введение нумерации ошибок в журнале ошибок позволяет MySQL улучшать текст ошибки в предстоящих версиях обслуживания (при необходимости), сохраняя при этом номер ошибки (ID) без изменений. Номера ошибок также служат основой для фильтрации / блокировки и интернационализации / локализации.

Управляемость

Невидимые индексы

MySQL 8.0 добавляет возможность переключения видимости индекса (видимый / невидимый). Оптимизатор не учитывает невидимый индекс при выполнении плана выполнения запроса. Тем не менее, индекс по-прежнему поддерживается в фоновом режиме, поэтому выгодно сделать его видимым снова. Цель этого заключается в том, чтобы DBA / DevOp определял, можно ли отменить индекс или нет. Если вы подозреваете, что индекс не используется, вы сначала делаете его невидимым, затем контролируете производительность запросов и, наконец, удаляете индекс, если не происходит замедление запросов. Эта функция была предложена многими пользователями, например, с помощью Bug # 70299.

Гибкое управление табличными пространствами Undo

MySQL 8.0 дает пользователю полный контроль над табличными пространствами Undo, т. е. количества табличных пространств, мест их размещения, и числа сегментов отката в каждом.

SET PERSIST для глобальных переменных

MySQL 8.0 позволяет сохранять глобальные динамические переменные сервера. Многие серверные переменные являются GLOBAL и DYNAMIC и могут быть переконфигурированы во время работы сервера. Например: SET GLOBAL sql_mode = ‘STRICT_TRANS_TABLES’; Однако такие параметры теряются при перезагрузке сервера.

Существует также команда RESET PERSIST, которая имеет семантику удаления переменной конфигурации из конфигурации persist, таким образом, ее преобразование имеет аналогичное поведение, как SET GLOBAL.

MySQL 8.0 позволяет SET PERSIST устанавливать большинство переменных только для чтения, новые значения вступают в силу при следующем перезапуске сервера. Обратите внимание, что небольшое подмножество переменных только для чтения оставляется намеренно недоступным.

Удаленное управление

MySQL 8.0 реализует команду SQL RESTART. Целью является дистанционное управление сервером MySQL через соединение SQL, например, для установки нединамической переменной конфигурации SET PERSIST, за которой следует RESTART.

Переименование табличного пространства (SQL DDL)

MySQL 8.0 реализует ALTER TABLESPACE s1 RENAME TO s2; Поделенное / общее табличное пространство является объектом, видимым пользователем, к которому пользователи могут применять CREATE, ALTER и DROP. См. также «Ошибка № 26949», «Ошибка № 32497» и «Ошибка № 58006».

Переименование столбца (SQL DDL)

Функции безопасности

Новый плагин аутентификации по умолчанию

MySQL 8.0 изменяет плагин аутентификации по умолчанию с mysql_native_password на caching_sha2_password. Соответственно, libmysqlclient также будет использовать caching_sha2_password в качестве механизма аутентификации по умолчанию. Новый caching_sha2_password сочетает лучшую безопасность (алгоритм SHA2) с высокой производительностью (кэширование). Общее направление состоит в том, что мы рекомендуем всем пользователям использовать TLS / SSL для всей их сетевой связи.

OpenSSL по умолчанию в Community Edition

MySQL 8.0 объединяет OpenSSL как стандартную библиотеку TLS / SSL для MySQL Enterprise Edition и MySQL Community Edition. Ранее MySQL Community Edition использовала YaSSL. Поддержка OpenSSL в MySQL Community Edition была одной из наиболее часто запрашиваемых функций.

OpenSSL динамически связан

MySQL 8.0 динамически связан с OpenSSL. С точки зрения пользователей MySQL репозитория пакеты MySQL зависят от файлов OpenSSL, предоставляемых системой Linux под рукой. Благодаря динамической привязке обновления OpenSSL могут применяться при доступности без необходимости обновления или патча MySQL. См. Сообщение в блоге от Frédéric Descamps.

Шифрование журнала UNDO и REDO

MySQL 8.0 реализует шифрование данных в режиме останова в журналах UNDO и REDO. В 5.7 было введено табличное шифрование таблиц InnoDB, хранящихся в табличных пространствах файлов за таблицей. Эта функция обеспечивает шифрование при отключении для файлов данных физического табличного пространства. В 8.0 это распространяется на включение журналов UNDO и REDO.

Роли SQL

Предоставление и отмена полномочий

MySQL 8.0 вводит обязательные роли конфигурации, которые могут использоваться для автоматического назначения и предоставления ролей по умолчанию при создании новых пользователей. Пример: role1 @%, role2, role3, role4 @ localhost. Все указанные роли всегда считаются предоставленными каждому пользователю и не могут быть отменены. Эти роли по-прежнему требуют активации, если они не включены в роли по умолчанию. Когда новая переменная конфигурации сервера activate-all-roles-on-login устанавливается на «ON», все предоставленные роли всегда активируются после аутентификации пользователя.

Дробление супер привилегий

MySQL 8.0 определяет набор новых детализированных привилегий для различных аспектов того, что SUPER используется в предыдущих выпусках. Цель состоит в том, чтобы ограничить права доступа пользователей к тому, что необходимо для работы под рукой, и не более того. Например, BINLOG_ADMIN, CONNECTION_ADMIN и ROLE_ADMIN.

Модель авторизации для управления XA-транзакциями

MySQL 8.0 представляет новую системную привилегию XA_RECOVER_ADMIN, которая контролирует возможность выполнения оператора XA RECOVER. Попытка выполнить XA RECOVER пользователем, которому не была предоставлена ​​новая системная привилегия XA_RECOVER_ADMIN, приведет к ошибке.

Политика ротации пароля

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

Медленная атака грубой силы на пароли пользователей

MySQL 8.0 вводит задержку в процессе аутентификации на основе последовательных неудачных попыток входа в систему. Цель состоит в том, чтобы замедлить атаки грубой силы на пароли пользователей. Можно задать количество последовательных безуспешных попыток до введения задержки и ввести максимальную величину задержки.

skip-grant-tables

Добавление функциональности mysqld_safe на сервер

Производительность

MySQL 8.0 поставляется с лучшей производительностью для рабочих нагрузок Read / Write, рабочих нагрузок с привязкой IO и высокой рабочей нагрузки критических участков кода. Кроме того, новая функция Resource Group предоставляет пользователям возможность оптимизировать определенные рабочие нагрузки на конкретном оборудовании путем сопоставления пользовательских потоков с процессорами.

Масштабирование рабочих нагрузок чтения / записи

MySQL 8.0 хорошо масштабируется для RW и больших загрузок. На интенсивных рабочих нагрузках RW мы наблюдаем более высокую производительность уже от 4 одновременных пользователей и более чем в 2 раза более высокую производительность при высоких нагрузках по сравнению с MySQL 5.7. Можно сказать, что в то время как 5.7 значительно улучшила масштабируемость для рабочих нагрузок только для чтения, 8.0 значительно улучшает масштабируемость для рабочих нагрузок чтения / записи. Эффект заключается в том, что MySQL улучшает аппаратное использование (эффективность) для стандартного оборудования на стороне сервера (например, системы с 2 гнездами процессора). Это улучшение связано с перестройкой, как InnoDB пишет в журнал REDO. В отличие от исторической реализации, когда пользовательские потоки постоянно борются за регистрацию своих изменений данных, в новом решении журнала REDO пользовательские потоки теперь блокируются, REDO-запись и очистка управляются выделенными фоновыми потоками, а вся обработка REDO становится управляемой событиями.

Использование емкости ввода-вывода (быстрое хранение)

MySQL 8.0 позволяет пользователям использовать все устройства хранения в полной мере. Например, при тестировании с помощью флеш-устройств Intel Optane разработчики MySQL смогли выйти из 1M Point-Select QPS в полной нагрузке с привязкой к IO. (Привязка IO означает, что данные не кэшируются в пуле буферов, а должны быть получены из вторичного хранилища). Это улучшение связано с избавлением от глобальной блокировки fil_system_mutex.

Лучшая производительность при высоких конкурирующих нагрузках («горячие строки»)

MySQL 8.0 значительно улучшает производительность для высоких конкурирующих рабочих нагрузок. Высокая рабочая нагрузка возникает, когда несколько транзакций ждут блокировки в той же строке в таблице, что вызывает очереди ожидающих транзакций. Многие реальные рабочие нагрузки не являются гладкими, например, днем, и могут иметь всплески в определенные часы (распространение Парето). MySQL 8.0 гораздо лучше работает с такими пакетами как с точки зрения транзакций в секунду, средней латентностью, так и с задержкой 95-го процентиля. Преимуществом конечного пользователя является лучшее использование аппаратного обеспечения (эффективность), поскольку система нуждается в меньшей запасной емкости и, таким образом, может работать с более высокой средней нагрузкой. Вы также можете изучить алгоритм планирования условных транзакций (CATS).

Группы ресурсов

Другие преимущества

Улучшенные значения по умолчанию

Команда MySQL уделяет пристальное внимание настройке MySQL по умолчанию и стремится к тому, чтобы пользователи могли брать все самое лучшее из имеющихся возможностей. MySQL 8.0 изменил более 30 значений по умолчанию на то, что их команда посчитала лучшим.

Протокол

MySQL 8.0 добавляет возможность отключать генерацию и передачу метаданных для наборов результатов. В метаданных для создания / разбора и отправки / получения результатов используются ресурсы сервера, клиента и сети. В некоторых случаях размер метаданных может быть намного больше, чем фактический размер данных результата, и метаданные просто не нужны. Есть возможность значительного ускорения передачи результатов запроса, полностью отключив генерацию и хранение этих данных. Клиенты могут установить флаг CLIENT_OPTIONAL_RESULTSET_METADATA, если они не хотят возвращать метаданные с помощью набора результатов.

C Client API

MySQL 8.0 расширяет API C libmysql со стабильным интерфейсом для получения событий репликации с сервера в виде потока пакетов. Цель состоит в том, чтобы избежать необходимости вызывать недокументированные API и упаковывать внутренние файлы заголовков для реализации программ на основе binlog, таких как MySQL Applier for Hadoop.

Memcached

MySQL 8.0 улучшает функциональность InnoDB Memcached с несколькими операциями получения и поддержкой запросов диапазона. Была добавлена поддержка операции множественного ввода для дальнейшего улучшения производительности чтения, то есть пользователь может получить несколько пар значений ключа в одном запросе memcached. С запросами диапазона пользователь может указать конкретный диапазон и получить все допустимые значения в этом диапазоне. Обе функции могут значительно сократить количество обращений между клиентом и сервером.

Устойчивые счетчики Autoinc

MySQL 8.0 хранит счетчики AUTOINC, записывая их в журнал повтора. Это исправление для очень старой ошибки # 199. Процесс восстановления MySQL будет воспроизводить журнал повтора и обеспечить правильные значения счетчиков AUTOINC. Откат счетчиков AUTOINC не будет. Это означает, что восстановление базы данных восстановит последнее известное значение счетчика после сбоя. Он поставляется с гарантией того, что счетчик AUTOINC не может получить одно и то же значение дважды. Счетчик монотонно увеличивается, но обратите внимание, что могут быть пробелы (неиспользуемые значения). Отсутствие постоянного AUTOINC было замечено как проблематичное в прошлом.

Резюме

Как показано выше, MySQL 8.0 поставляется с большим набором новых функций и улучшением производительности. Загрузите его с dev.mysql.com и испытайте!

Вы также можете обновить существующий MySQL 5.7 до MySQL 8.0. Вы можете попробовать новый Upgrade Checker, который поставляется с новой оболочкой MySQL (mysqlsh). Эта утилита проанализирует ваш существующий сервер 5.7 и расскажет вам о потенциальной несовместимости 8.0.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *