--- aliases: - MySQL tags: - type/zero-link zero-link: - "[[00 Базы Данных]]" --- - [Репликация в MySQL](Репликация%20в%20MySQL.md) - [libslave](libslave.md) - [Бекап в MySQL](Бекап%20в%20MySQL.md) - [Индексы в MySQL](Индексы%20в%20MySQL.md) - [Журналы в MySQL](Журналы%20в%20MySQL.md) - [Explain в MySQL](Explain%20в%20MySQL.md) ## Архитектура MySQL ![](Pasted%20image%2020240613195204.png) Есть логический слой под названием MySQL, который занимается общими и изолированными от хранения данных операциями: кэширование, построение плана запроса и так далее. А есть конкретный физический слой, который отвечает за хранение данных. Он использует интерфейс подключения, то есть реализации хранилищ могут быть разными. Логический слой, общий для всех движков: - В управлении подключением происходит авторизация. Каждый клиент работает в своем независимом потоке. Каждый поток может кэшироваться сервером. - Кэш запросов. Представлен одним общим потоком для всех клиентов. Может оказаться узким местом. - Парсер. Проверяет синтаксис запроса. Проверяет наличие прав доступа. Проверяет наличие ответов в кэше запросов. - Оптимизатор. Составляет план запроса. Из хранилища запрашивается статистика запросов. - Исполнитель. Обращается за данными в хранилище согласно плану запроса. Обновляет значения в кэше запросов. Индексы реализуются на уровне движка хранилища, и каждый движок может предоставлять свою реализацию одного и того же индекса. ![](Pasted%20image%2020240528082025.png) - [Журналы в MySQL](Журналы%20в%20MySQL.md) ## Идентификация транзакций До версии 5.5 идентифицировать транзакцию можно было только по имени файла и позиции в этом файле. Потом появились GTID, но надо явно включить gtid_mode =ON. C 5.6.5 GTID используется по умолчанию. binary log position: - Пример: mysql-bin.00078:44 - Локальный для сервера - Обязательно сломается GTID: - Пример: 7F33BC78-56CA-44B3-5E33-B34CC7689333:44 - Глобален, генерируется автоматически при коммите - Бесплатная трассировка - Простой slave promotion - ==Используйте его== ## Заметки - MySQL пишет на диск в три места – хранилище (tablespace), журнал (undo/redo log), и Binary Log - mariadb -Форк Mysql, который пытается исправить архитектурные ошибки MySQL