5 mysql: MySQL :: Download MySQL Community Server
Содержание
Основные направления улучшений в MySQL 5.7
Мы изучили презентации, заявления и выступления ведущих специалистов компании Oracle, участвовавших в разработке и тестировании продукта, и решили поделиться с вами полученными результатами. В версии MySQL 5.7 проделана значительная работа по улучшению производительности и масштабируемости системы для высоконагруженных проектов. Управление системой стало проще и безопаснее. Добавлены новые возможности, благодаря которым вы сможете работать с базами данных на совершенно ином уровне!
Основные улучшения:
- В 2 раза быстрее MySQL 5.6
- Улучшенный InnoDB
- Улучшена репликация
- Новая модель стоимостного оптимизатора. Улучшена производительность запросов.
- Улучшение схемы производительности
- MySQL SYS Schema
- Повышенный уровень безопасности
- Поддержка JSON
Показатели производительности MySQL 5.7 vs MySQL 5.
6
Выжимка из презентации продуктового менеджера Oracle Мэтта Лорда, посвященной выходу версии MySQL 5.7 и презентации разработчика MySQL Алексей Копытова на DevConf. На рисунке ниже команда Oracle провела тест производительности систем 5.5, 5.6 и 5.7 с помощью утилиты sysbench на read-only нагрузках. В результате теста MySQL версии 5.7 показал в несколько раз большую производительность, чем его предшественники.
Также была выполнена оптимизация скорости соединения. В версии 5.7 скорость создания соединения в сравнении с версией 5.6 стала значительно быстрее, в особенности, при большом количестве клиентов.
Одним из основных направлений по улучшению в версии 5.7 была оптимизация в работе движка InnoDB. На графике ниже вы можете наблюдать результат сделанных улучшений на примере связки InnoDB и Memcached плагина.
В несколько раз выросло и количество соединений в секунду, которое способен обрабатывать MySQL.
Новые возможности в MySQL 5.
7
Ниже приведена выжимка основных улучшений от представителей Oracle, из официального письма Geir Høydalsvik — старшего директора по разработке MySQL и выступления разработчика MySQL Дмитрия Ленева на DevConf 2016
Добавление поддержки JSON в MySQL
Благодаря недавно добавленной поддержке JSON в MySQL теперь вы можете сочетать гибкость NoSQL с мощью реляционной базы данных.
Оптимизированный бинарный формат позволяет серверу эффективно хранить, извлекать и искать данные JSON. Это расширяет возможности CREATE TABLE и ALTER TABLE, чтобы они могли создавать столбцы JSON, и расширяет функцию Field, разрешая INSERT и SELECT из полей с типом JSON.
Преимущества столбцов JSON
- Улучшенный бинарный формат хранения (быстрый доступ по ключам и к элементам массивов)
- Оптимизирован для чтения
- Кодировка Utf8mb4
- Валидация JSON при вставке
- Поддержка JSON элементов, таких как числа, строки, объекты, массивы.
Набор встроенных функций для взаимодействий с JSON
Позволяет пользователям создавать значения данных JSON из других реляционных данных, извлекать реляционные данные из значений данных JSON, анализировать структуру значений и текста JSON (валидность, длина, глубина, ключи), выполнять поиск внутри данных JSON и управлять ими.
- JSON_EXTRACT()/оператор ->, JSON_SEARCH(), JSON_CONTAINS(),….
- JSON_SET(), JSON_INSERT(), JSON_REMOVE(),….
- JSON_VALID(), JSON_LENGHT(), JSON_DEPTH(),…
- JSON_ARRAY(), JSON_OBJECT()
- JSON_QUOTE(), JSON_UNQUOTE()
Доступен компаратор для сравнения в SQL запросах, аналогичный компаратору DATE / TIME / DATETIME, который позволяет сравнивать скаляры JSON с константами SQL и скаляры JSON с скалярами JSON. Компаратор полагается на поддержку DOM. Компаратор преобразует константу SQL в скаляр JSON, а затем сравнивает значения.
Упорядочивание скалярных значений JSON
Функция создает ключи сортировки, которые необходимы внутренней функции файловой сортировки для правильной сортировки значений JSON. При упорядочивании скалярных значений JSON с помощью ORDER BY они будут возвращены в порядке, определенном компаратором JSON.
Анализатор выражений для сгенерированных столбцов.
Позволяет оптимизаторам находить возможности для использования любых индексов, определенных для сгенерированных столбцов. Один из предполагаемых вариантов использования этой функции — создание и автоматическое использование индексов для документов JSON.
Генерируемые столбцы
В операторах CREATE TABLE и ALTER TABLE доступна поддержка спецификации генерируемых столбцов. Из выражения, указанного при создании столбца вычисляются значения сгенерированного столбца.
Cтолбцы могут быть VIRTUAL (вычисление при чтении строк) или STORED (вычисление при вставке или обновлении строк), при этом индексы вы можете создать для обоих типов. Анализируя выражения, оптимизатор, кстати, старается использовать наилучший «функциональный» индекс.
Генерируемые столбцы: STORED vs VIRTUAL
STORED
→ Может быть PRIMARY KEY
→ BTREE, FULLTEXT, GIS
→ Добавление колонки требует перестроения таблицы и блокирует обновления
→ Добавление индекса in-place/не блокирует обновления
VIRTUAL
→ Не может быть PRIMARY KEY
→ Только BTREE
→ Добавление колонки мгновенно
→ Добавление индекса in-place/не блокирует обновления
Улучшения при выполнении запросов и в оптимизаторе.
Функция оценки затрат расширяет модель стоимостного оптимизатора, позволяет использовать оценки механизмов хранения: сколько строк и индексов таблицы присутствует в памяти. Оптимизатор использует различные константы затрат для расчета стоимости доступа к данным, которые находятся в памяти, и данным, которые необходимо прочитать с диска. В первоначальной реализации эти две константы стоимости имеют одинаковое значение по умолчанию, но могут быть изменены администратором сервера, чтобы оптимизатор использовал разные затраты на данные в буфере памяти и данные, необходимые для чтения с диска. Обратите внимание, что в настоящее время оценки того, находятся ли данные в памяти или их необходимо прочитать с диска, основываются только на эвристике. Точность этих оценок будет значительно улучшена, если поддержка этих оценок будет реализована отдельными механизмами хранения.
Другие оптимизации:
- Более умный учет условий при выборе порядка таблиц в join;
- Подзапросы из FROM обрабатываются как view;
- UNION ALL не требует временных таблиц;
- Полностью cost-based выбор индекса для ORDER BY . .. LIMIT N;
- Более оптимальное использование sort-buffer для несортируемых полей.
X plugin
Добавляет возможность оптимизации базы данных за счёт обновлённого протокола связи с веб-сервером, который способен производить асинхронные запросы. Также доступна новая утилита для более эффективной работы с веб-сервером и новый NoSQL API, который делает акцент на JSON, CRUD, а также document store.
EXPLAIN FOR CONNECTION
• Улучшения в EXPLAIN JSON (общая стоимость, по таблицам, кол-во обработанных данных)
• Улучшен режим ONLY_FULL_GROUP_BY и включен по умолчанию
• IN поддерживает кортежи [выражения вида («a», «b»)]
Новый механизм подсказок оптимизатору /*+ … */:
– MAX_EXECUTION_TIME, BKA, MRR, ICP,
NO_RANGE_OPTIMIZATION,SEMIJOIN, SUBQUERY
Query Rewrite Plugin
Работает после обработки парсером перед оптимизацией и выполнением и позволяет изменить проблемный запрос без изменения приложения:
– Добавить подсказок оптимизатору
– Поменять порядок в join
– Решает проблему «плохих» запросов от ORM, сторонних приложений
– Больше не нужно использовать proxy в этих случаях
Улучшения в InnoDB
Производительность/масштабируемость
- Поддержка native partitioning
- Быстрее, меньше ресурсов
- Поддержка trasportable tablespaces
- General tablespaces
Улучшения Fulltext
Поддержка parser plugin
CJK и MeCab парсеры
Поддержка GIS индексов
Быстрый ALTER TABLE для VARCHAR
Оптимизация создания индексов (create index bulk load)
Изменение размера buffer pool без рестарта
Сохранение горячих страниц из buffer pool для прогрева (—innodb-buffer- pool-dump-pct=)
Поддержка 32k и 64k страниц
Управление MERGE_THRESHOLD
Оптимизация работы с временными табличками (пользовательскими и intrisic)
Transparent Page Compression (punch-hole)
Репликация
GTID
– Включение GTID без downtime и перезапусков
– Slave без binlog
Поддержка репликации из многих источников
Изменение настроек фильтрации без перезапуска
Улучшения в полу-синхронной репликации
– Ожидание подтверждения от нескольких slave
– Фиксация транзакции только после подтверждения (корректный failover, решение проблемы с видимостью изменений)
– Отдельные потоки для отсылки и получения подтверждений
Безопасность
Безопасность по умолчанию
– Автогенерация пароля root@localhost при инсталляции
– Нет анонимов
– Простое и безопасное создание БД через mysqld —initialize
SSL
– Включен по умолчанию
– —ssl на клиенте его требует
– Автоматическое обнаружение и генерация ключей
– —require-secure-trasport на сервере
Поддержка политик смены паролей
Временная блокировка и разблокировка пользователей
Режимы AES шифрования
Расширена поддержка PROXY пользователей
– Теперь и при аутентификации через встроенные механизмы сервера
– Можно использовать для эмуляции ролей
Максимальная длина имени пользователя теперь 32
CREATE/DROP USER IF EXIST
PERFORMANCE_SCHEMA и SYS
Добавлена инструментация для:
– Блокировок метаданных (MDL)
– Транзакций
– Хранимых процедур и prepared statements
– Использования памяти
Аггрегированная статистика по:
– типам памяти/пользователям/хостам/соединениям
Включает данные:
– объем, количество выделений, high/low watermarks
Добавлены P_S таблицы для:
– Состояния slave (аналог SHOW SLAVE STATUS)
– Пользовательских переменные
– Статусных и системных переменных
Оптимизировано использование памяти
Многочисленные настройки (фильтрация по пользователям, включение/выключение истории для соединений)
SYS schema (ps_helper) теперь доступен по умолчанию
GIS
– Выкинули старый код и перешли на Boost. Geometry !
– Для вычислений и операций
– Меньше ошибок, больше функциональности
Импорт/экспорт из/в
– GeoHash
– GeoJSON
Новые вспомогательные функции ST_Distance_Sphere(), ST_MakeEnvelope(),…
Реализовали поддержку R-tree в InnoDB
– Транзакции/ACID/MVCC при работе с GIS
MySQL Document Store
Использует новый JSON тип и индексы на генерируемые столбцы
Оперирует коллекциями JSON объектов
Новый MySQL Shell
— JavaScript, Python, SQL
Коннекторы с новым CRUD API:
– Java, NodeJS, Net, Python
– Поддерживают работу с коллекциями и таблицами
– Цепочки методов (method chaining)
– Асинхронное выполнение
– Поддерживает parameter binding
С полным списком улучшений вы можете ознакомиться по ссылкам на официальный сайт:
- Что нового в MySQL 5.7 — https://dev.mysql.com/doc/refman/5.7/en/mysql-nutshell. html
- Изменения в версии MySQL 5.7.8 — https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-8.html
Кстати говоря, нашим клиентам уже доступен хостинг с MySQL 5.7! Вы можете абсолютно бесплатно протестировать работу вашего сайта на новой базе MySQL 5.7 в течение 14 дней с момента регистрации.
1С-Битрикс Разработчикам — MySQL, InnoDB, Монитор производительности
Приветствую.
Хочу поделится радостью: удалось оптимизировать работу MySQL.
В БУС монитор производительности на мощном сервере показывал следуюшее:
База данных MySQL (запись) 72 5 600 количество запросов на запись в секунду База данных MySQL (чтение) 5 869 7 800 количество запросов на чтение в секунду База данных MySQL (изменение) 4 251 5 800 количество запросов на изменение в секунду |
Чего я только с настройками мускуля не крутил, ничего сильно ощутимого результата не давало.
Но нашлась все-таки одна настроечка, которая ну очень сильно меня обрадовала: innodb_flush_log_at_trx_commit=2
После того как я ее прописал, получил следующие циферки:
База данных MySQL (запись) 4 395 5 600 количество запросов на запись в секунду База данных MySQL (чтение) 6 220 7 800 количество запросов на чтение в секунду База данных MySQL (изменение) 4 643 5 800 количество запросов на изменение в секунду |
Увелечение скорости записи в 60 раз меня ну очень обрадовало.
innodb_flush_log_at_trx_commit — Вам кажется, что InnoDB в сто раз медленнее MyISAM? Вероятно, вы забыли изменить значение этого параметра. Значение по умолчанию 1 означает, что после каждой завершенной транзакции (или после изменения состояния транзакции) лог должен быть сброшен на диск. Это достаточно дорогая операция, особенно если у вас нет Battery backed up cache. Многие приложения, особенно те, в которых раньше использовался MyISAM будут хорошо работать при значении 2, который означает, что не надо сбрасывать буфер на диск, а следует отправить его в кэш операционной системы. Лог по-прежнему будет сбрасываться на диск каждую секунду и максимум, что вы можете потерять — это 1-2 секунды записей. Значение 0 обеспечивает более высокую скорость, но и более низкую надежность. Есть вероятность потерять транзакции даже при падении mysql-сервера. При значении равном 2 единственная возможность потерять данные — это фатальный сбой операционной системы. |
Ссылки по теме
http://www.mysqlperformanceblog.com/
англ
http://habrahabr.ru/blogs/mysql/49929/
перевод
Благодарность
- Огромное спасибо Петру Невенчанному за помощь в ковыряниях настроек.
- Монитору производительности (P.S.: Сергей Рыжиков, да он помогает диагностировать проблемы (это я к Вашему выступлению на highload).
- Теме на форуме http://dev.1c-bitrix.ru/community/for…opic21767/
Немного передохнем и продолжим оптимизировать. Надеюсь тема не баян, и будет полезна.
Обновление
Руководство по настройке и установке
уже рекомендует ставить innodb_flush_log_at_trx_commit=0
MySQL :: Справочное руководство по MySQL 5.7 :: 5 Администрирование сервера MySQL
Перейти к основному содержанию
Самая популярная в мире база данных с открытым исходным кодом
версия 5.7
8,0
Текущий
5.6
8,0
Японский
5.6
Японский
СОДЕРЖАНИЕ
- 5. 1 MySQL Server
- 5.1.1 Настройка сервера
- 5.1.2 Defauturation Defaulation Defaulation
- 5.1.3 Вариант сервера, Variable и Staterable STAUCTION
- 5.1.3. 5.1.4 Справочник по системным переменным сервера
- 5.1.5 Ссылка на переменную состояния сервера
- 5.1.6 Опции команд сервера
- 5.1.7 Системные переменные сервера
- 5.1.8 Использование системных переменных
- 5.1.9 Переменные состояния сервера
- 5. Режим SQL
- 5.1.11 Управление соединениями
- 5.1.12 Поддержка IPv6
- 5.1.13 Поддержка часового пояса сервера MySQL
- 5.1.14 Справка на стороне сервера Поддержка
- 5.1.15 Отслеживание сервером состояния сеанса клиента
Серверы 19
- 8 5 Процесс выключения сервера
- 5.2 Справочник по данным MySQL
- 5.3 Системная база данных MySQL
- 5.4 MySQL Server Logs
- 5.4.1 Выбрать журнал общего запроса и логический журнал Mlow Query
- 5. 4.2. .3 Общий журнал запросов
- 5.4.4 Двоичный журнал
- 5.4.5 Журнал медленных запросов
- 5.4.6 Журнал DDL
- 5.4.7 Обслуживание журнала сервера
- 5.5 MySQL Server Plugins 5.
- 5.5.1 Установка и удаление плагинов
- 5.5.2 6 Службы подключаемых модулей MySQL
- 5.6 Загружаемые функции сервера MySQL
- 5.6.1 Установка и удаление загружаемых функций
- 5.6.2 Получение информации о загружаемых функциях
- 5.7 Запуск нескольких экземпляров MySQL на одном компьютере
- 5.7.1 Настройка нескольких каталогов данных
- 5.7.2 Запуск нескольких экземпляров MySQL в Windows
- 5.5.7.3 Запуск нескольких экземпляров MySQL
- 5.5019 4 Использование клиентских программ в среде с несколькими серверами
- 5.8 Отладка MySQL
- 5.8.1 Отладка сервера MySQL
- 5.8.2 Отладка клиента MySQL
- 5. 8.3 Пакет DBUG
- 5.8.4 Трассировка mysqld с помощью DTrace
Конфигурация сервера
Каталог данных, особенно
mysql
системная база данныхФайлы журнала сервера
Управление несколькими серверами на одной машине
Дополнительную информацию по административным темам см. также:
Глава 6, Безопасность
Глава 7, Резервное копирование и восстановление
Глава 16, 90 162 Репликация 90 163
НАЗАД
ДОМ
ВВЕРХ
СЛЕДУЮЩИЙ
Загрузить сервер сообщества MySQL (архивные версии)
Архивы продуктов MySQL
Обратите внимание, что это старые версии. В новых релизах будет недавняя ошибка
исправления и особенности!
Чтобы загрузить последнюю версию
Сервер сообщества MySQL, пожалуйста, посетите
MySQL
Загрузки.
Версия продукта:
8.0.308.0.288.0.278.0.268.0.258.0.248.0.238.0.228.0.218.0.208.0.198.0.188.0.178.0.168.0.158.0.148.0.138.0.128.0.2mdm.0.8 rc8.0.0.3 dmr8.0.0 dmr5.7.395.7.385.7.375.7.365.7.355.7.345.7.335.7.325.7.315.7.305.7.295.7.285.7.275.7.265.7.255.7.245.7.235.7.225.7.215.7.205.7.195.7.185.7.175 .7.165.7.155.7.145.7.135.7.125.7.115.7.105.7.95.7.8 рк5.7.7 рк5.7.6 м165.7.5 м155.7.4 м145.7.3 м135.7.2 м125.7.1 м115.6.515.6.505.6.495.6.485.6.475.6.465.6.455.6.0445.6.435.6.425.6 6.395.6.385.6.375.6.365.6.355.6.345.6.335.6.325.6.315.6.305.6.295.6.285.6.275.6.265.6.255.6.245.6.235.6.225.6.215.6.205.6.195.6.175.6.165.6.155.6.145. 6.135.6.125.6.115.6.105.6.9 rc5.6.8 rc5.6.7 rc5.6.6 m95.6.5 m85.6.4 m75.6.3 m65.6.2 m55.5.625.5.615.5.605.5.595.5.585.5.575.5.565.5.5.45 5.535.5.525.5.515.5.505.5.495.5.485.5.475.5.465.5.455.5.445.5.435.5.425.5.415.5.405.5.395.5.385.5.375.5.365.5.355.5.345.5.335.5.325.5.315.5.305.5.295.5.285.5.275.5.25а5.5.245.5.235.5.225.5.215.5.205.5. 5.5.4.7.1.185.5.5.5. 5.135.5.125.5.115.5.105.5.95.5.85.5.7 rc5.5.6 rc5.5.5 м35.5.3 м35.5.4 м35.5.2 м25.5.1 м25.5.0 м25.1.735.1.725.1.715.1.705.1.695.1.685. 1.665.1.655.1.635.1.625.1.615.1.605.1.595.1.585.1.575.1.565.1.555.1.545.1.535.1.525.1.515.1.505.1.495.1.485.1.475.1.465.1.455.1.445.1.435.1.425.1.415. 1.405.1.395.1.385.1.375.1.365.1.355.1.345.1.335.1.325.1.315.1.305.1.5а альфа5.0.965.0.955.0.925.0.915.0.905.0.895.0.885.0.875.0.865.0.855.0.845.0.835.0.825.0.815.0.775.0.755.0.675.0.51b5.0.51a5.0.5.45b.0.35.45b.0.0.45 0.275.0.24a5.0.245.0.235.0.225.0.215.0.20a5.0.205.0.195.0.185.0.17a5.0.175.0.16a5.0.165.0.15a5.0.15
Операционная система:
Выберите операционную систему…Microsoft WindowsUbuntu LinuxDebian LinuxSUSE Linux Enterprise ServerRed Hat Enterprise Linux / Oracle LinuxFedoraLinux — GenericOracle SolarismacOSSИсходный код
Версия ОС:
AllLinux — универсальный (glibc 2.12) (x86, 32-разрядная версия)Linux — универсальный (glibc 2.12) (x86, 64-разрядная версия) Linux — универсальный (glibc 2. 17) (x86, 64-разрядная версия)
Generic Linux Минимальные tar-архивы исключают отладочные двоичные файлы, а обычные двоичные файлы удаляются
Linux — Generic (glibc 2.12) (x86, 32-разрядная версия), сжатый архив TAR | 7 июля 2022 г. | 514.0М | Скачать |
(mysql-8.0.30-linux-glibc2.12-i686.tar.xz) | МД5: 33044c4c33f5e43dd5647f7b4295ad65 |Подпись | ||
Linux — универсальный (glibc 2.12) (x86, 64-разрядная версия), сжатый архив TAR | 7 июля 2022 г. | 571.6M | Скачать |
(mysql-8.0.30-linux-glibc2.12-x86_64. tar.xz) | MD5: 2469b1ae79e98110277d9b5bee301135 |Подпись | ||
Linux — универсальный (glibc 2.12) (x86, 32-разрядная версия), сжатый архив TAR Test Suite | 7 июля 2022 г. | 267.1М | Скачать |
(mysql-test-8.0.30-linux-glibc2.12-i686.tar.xz) | МД5: b76a45dc7aca7c66a32421e050a934d1 |Подпись | ||
Linux — универсальный (glibc 2.12) (x86, 64-разрядная версия), сжатый архив TAR Test Suite | 7 июля 2022 г. | 267,5М | Скачать |
(mysql-тест-8.0.30-linux-glibc2.12-x86_64. tar.xz) | МД5: ff35090bc157f7e349bed4efb120c170 |Подпись | ||
Linux — универсальный (glibc 2.12) (x86, 32-разрядная версия), TAR | 7 июля 2022 г. | 795.5M | Скачать |
(mysql-8.0.30-linux-glibc2.12-i686.tar) | MD5: e3c7564adb7ad41f1d40686ff1d470c2 |Подпись | ||
Linux — универсальный (glibc 2.12) (x86, 64-разрядная версия), TAR | 7 июля 2022 г. | 853.0M | Скачать |
(mysql-8.0.30-linux-glibc2.12-x86_64.tar) | MD5: d15062ceaa4c198992d1a6bff82d9fc1 |Подпись | ||
Linux — универсальный (glibc 2. 17) (x86, 64-разрядная версия), сжатый архив TAR Минимальная установка | 7 июля 2022 г. | 52,5М | Скачать |
(mysql-8.0.30-linux-glibc2.17-x86_64-минимальный.tar.xz) | MD5: aa8ee8618832627d036cd234b769761d |Подпись | ||
Linux — Универсальный (glibc 2.17) (x86, 64-разрядная версия), сжатый архив TAR Тестовый набор для минимальной установки | 7 июля 2022 г. | 243.3М | Скачать |
(mysql-test-8.0.30-linux-glibc2.17-x86_64-minimal.tar.xz) | MD5: 240dc542f4e8e1a0ec97b03a80446555 |Подпись | ||
Linux — универсальный (glibc 2. |