MySQL 8 был выпущен с улучшениями, включая улучшенную поддержку мобильных устройств, усиленную поддержку Unicode и поддержку JSON без схемы.
В новом выпуске также добавлен словарь транзакционных данных, и он работает вдвое быстрее, чем 5.7. MySQL 8 также предлагает новое хранилище документов с поддержкой NoSQL.
Это основной выпуск, и для разработчиков некоторые из наиболее полезных улучшений касаются общей поддержки SQL. Для начала, теперь вы можете использовать функции SQL Windows. Они похожи на сгруппированные агрегатные функции, но там, где сгруппированная агрегатная функция возвращает одну строку, оконные функции выполняют агрегирование для каждой строки в наборе результатов. Добавленные функции начинаются с возможности использования «стандартных» агрегатных функций SQL (Count, Max, Avg и т. Д.) В качестве оконных функций. Кроме того, существуют специализированные оконные функции, в частности Rank, Dense_Rank, Percent_Rank, Cume_Dist, Ntile, Row_Number и First_Value.
Следующее полезное изменение — добавление поддержки рекурсивных общих табличных выражений (CTE). CTE похож на производную таблицу, на которую можно ссылаться несколько раз, а рекурсивный CTE — это набор строк, который строится итеративно. Вы начинаете с набора строк, применяете некоторый процесс, который создает новые строки, а затем повторно применяете процесс к новым строкам. Каждый раз, когда создаются и обрабатываются новые строки, пока вы не достигнете точки, в которой новые строки не будут добавлены.
В другом месте в «основных» областях SQL теперь можно использовать NoWait и Skip Locked в предложении блокировки SQL; поддерживаются индексы в порядке убывания; и была добавлена новая функция Grouping (), которая отличает сверхагрегированные строки от обычных сгруппированных строк.
Хотя улучшения SQL, вероятно, являются наиболее полезным улучшением, улучшения JSON впечатляют благодаря новым функциям и повышению производительности при сортировке и группировке значений JSON. Дополнительные функции — это таблица JSON и агрегатные функции.
Табличные функции означают, что вы можете использовать методы SQL с данными JSON, поэтому вы можете создать реляционное представление с помощью JSON_TABLE. Это отображает результат оценки данных JSON в реляционные строки и столбцы, которые затем можно запрашивать с помощью SQL, как если бы это была обычная реляционная таблица, включая возможность присоединения к другим таблицам.
Помимо обработки данных как стандартной таблицы SQL, была добавлена поддержка функций агрегирования JSON, в частности JSON_ARRAYAGG для создания массивов JSON и JSON_OBJECTTAGG для создания объектов JSON. Также есть пара функций слияния JSON, одна из которых удаляет дубликаты из слияния, а другая сохраняет все значения, включая дубликаты.
Повышена производительность сортировки для JSON и добавлена поддержка частичного обновления функций JSON Remove, Set и Replace. Это означает, что если обновляются только части документа JSON, реплики остаются согласованными, даже если полный документ не передается повторно.
Добавлена поддержка ГИС, включая поддержку метаданных для системы пространственной привязки (SRS), а также пространственные типы данных, поддерживающие SRS, пространственные индексы и пространственные функции. Это означает, что MySQL 8 может работать с координатами широты и долготы для выполнения таких операций, как вычисление расстояний между двумя точками на поверхности земли.
Другие изменения включают улучшения в операторах DDL, чтобы они были атомарными и безопасными при сбоях, поскольку метаданные хранятся в едином словаре транзакционных данных на базе InnoDB; и поддержка удаленного управления и новый мгновенный DDL.
Безопасность также была улучшена за счет улучшений OpenSSL, новой аутентификации по умолчанию и поддержки ролей SQL.