Разница между MySQL 8 и MySQL 5.7

задняя часть база данных MySQL
  1. NoSql-хранилище

Mysql предоставляет функции хранения NoSQL с версии 5.7, и эта часть была изменена в 8.0, но на практике это используется редко.

image.png

2. Скрыть индекс Функция скрытого индекса очень полезна для отладки производительности. В версии 8.0 индексы можно скрывать и отображать. Когда индекс скрыт, он не будет использоваться оптимизатором запросов.

image.png

То есть вы можете скрыть индекс, а затем наблюдать за воздействием на базу данных. Если производительность падает, это означает, что индекс действителен, поэтому его можно «восстановить и отображать»; если производительность базы данных не меняется , это означает, что индекс слишком много да, он может быть удален

синтаксис для скрытия индекса

ALTER TABLE t ALTER INDEX i INVISIBLE;

Синтаксис восстановления индекса для отображения:

ALTER TABLE t ALTER INDEX i VISIBLE;

Когда индекс скрыт, мы можем видеть из сводки выходных данных команды show index, что значение атрибута visible индекса равно No.

**Примечание.** Когда индекс скрыт, его содержимое по-прежнему обновляется в режиме реального времени, как и в обычном индексе. Сама эта функция специально используется для оптимизации отладки. Если вы скрываете индекс на долгое время, лучше его убить. это, т.к. наличие индекса влияет на функциональность вставки\обновления и удаления данных

3. Установите постоянство Настройки MySQL можно изменить во время выполнения с помощью команды SET GLOBAL, но это изменение вступит в силу только временно, и база данных будет считана из файла конфигурации при следующем запуске. MySQL 8 добавляет команду SET PERSIST, например:

SET PERSIST max_connections = 500;

MySQL сохранит конфигурацию команды в каталог данныхmysqld-auto.cnfфайл, файл будет прочитан при следующем запуске, и файл конфигурации по умолчанию будет перезаписан содержащейся в нем конфигурацией.

4. Кодировка UTF-8 Начиная с MySQL 8 кодировка базы данных по умолчанию будет изменена на utf8mb4, которая включает все символы эмодзи. На протяжении многих лет мы использовали MySQL, чтобы быть осторожными в кодировании, опасаясь забыть изменить латиницу по умолчанию и вызвать искажение символов. Не беспокойтесь с этого момента.

5. Общие табличные выражения В сложных запросах используются встроенные таблицы, например:

SELECT t1.*, t2.* FROM
	 (SELECT col1 FROM table1) t1,
	 (SELECT col2 FROM table2) t2;

И с CTE мы можем написать:

WITH
    t1 AS (SELECT col1 FROM table1),
    t2 AS (SELECT col2 FROM table2)
SELECT t1.*, t2.* 
FROM t1, t2;

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

1.235 Функции окна (функции окна) Одной из самых обсуждаемых особенностей MySQL является отсутствиеrank() 函数, когда вам нужно достичь ранжирования в запросе, вы должны написать переменную @. Но начиная с версии 8.0 в MySQL была добавлена ​​концепция оконной функции, которую можно использовать для реализации нескольких новых методов запросов. Оконная функция немного похожа наSUM(),COUNT()Подобные функции агрегирования, но вместо объединения нескольких строк результатов запроса в один, он помещает результаты обратно в несколько строк. То есть оконная функция не требуетсяGROUP BYиз.

Предположим, у нас есть таблица «Количество учеников в классе»:

Если вы хотите ранжировать размер класса от маленького к большому, вы можете использовать оконную функцию следующим образом:

Объяснение: Здесь создается окно с именем w, и предусмотрено, что оно сортирует поле stu_count, а затем выполняет метод rank() для w в предложении select и выводит результат в виде поля rank. Эта функция также является новой функцией Oracle11g и также играет важную роль в оптимизации.