Бэкенд-программисты должны: блок-схема/схема, связанная с базой данных mysql.

MySQL

предисловие

Я разобрал несколько блок-схем/схем, связанных с базой данных Mysql, и сделал несколько заметок, чтобы все могли учиться вместе.

1. Схематическая диаграмма репликации master-slave mysql

Принцип репликации master-slave в mysql — это часто задаваемый вопрос на собеседовании на бэкэнде крупных фабрик, очень важно понять принцип репликации master-slave в mysql.

Короче говоря, принцип репликации master-slave представляет собой трехэтапный процесс, а именно:

  • Основная база данных имеет двоичный файл bin-log, в котором записываются все добавления, удаления и изменения операторов SQL. (тема бинлога)
  • Скопируйте оператор sql файла bin-log основной базы данных из базы данных. (io нить)
  • Выполните эти операторы sql еще раз из файла журнала повторов relay-log базы данных. (поток выполнения SQL)

Как показано ниже:

Репликация master-slave на приведенном выше рисунке разделена на пять этапов:

Шаг 1: События обновления (обновление, вставка, удаление) основной библиотеки записываются в binlog.

Шаг 2: Инициируйте подключение из библиотеки и подключитесь к основной библиотеке.

Шаг 3: В это время основная библиотека создает поток дампа binlog и отправляет содержимое binlog в подчиненную библиотеку.

Шаг 4: После запуска подчиненной библиотеки создайте поток ввода-вывода, прочитайте содержимое binlog из основной библиотеки и запишите его в журнал реле.

Шаг 5: Также будет создан поток SQL для чтения содержимого из журнала ретрансляции, выполнения события обновления чтения из позиции Exec_Master_Log_Pos и ​​записи обновленного содержимого в базу данных подчиненного устройства.

2. Схема логической архитектуры MySQL

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

Диаграмма логической архитектуры Mysql в основном разделена на три уровня:

1) Первый уровень отвечает за обработку соединений, авторизацию и аутентификацию, безопасность и т.д.

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

2) Второй слой отвечает за компиляцию и оптимизацию SQL

  • Этот уровень включает в себя синтаксический анализ запросов, анализ, оптимизацию, кэширование и все встроенные функции.
  • Для оператора SELECT перед разбором запроса сервер проверит кеш запросов и, если в нем будет найден соответствующий результат запроса, он сразу вернет результат запроса, не выполняя разбор запроса и оптимизацию.
  • На этом уровне реализована вся функциональность механизмов хранения: хранимые процедуры, триггеры, представления.

3) Третий уровень — это механизм хранения.

  • Механизм хранения отвечает за хранение и извлечение данных в MySQL.
  • Механизм хранения взаимодействует с верхним уровнем через API, которые скрывают различия между разными механизмами хранения и делают эти различия прозрачными для процесса запроса верхнего уровня.
  • Механизм хранения не анализирует SQL, и разные механизмы хранения не взаимодействуют друг с другом, а просто отвечают на запрос сервера верхнего уровня.

3. Схема логической структуры хранилища InnoDb

Из логической структуры хранения механизма хранения InnoDb все данные логически хранятся в пространстве, называемом табличным пространством. Табличное пространство состоит из сегментов, экстентов и страниц. Страницы иногда называют блоками в некоторых документах. Схема логической структуры хранилища InnoDb выглядит следующим образом:

табличное пространство

  • Табличное пространство — это высший уровень логики механизма хранения Innodb.Все данные хранятся в табличных пространствах.
  • По умолчанию механизм хранения Innodb имеетОбщее табличное пространство ibdata1, то есть все данные хранятся в этом табличном пространстве.
  • если включеноinnodb_file_per_tableпараметров, следует отметить, что табличное пространство каждой таблицы хранится вТолько данные, индекс и буфер вставки Bitmap, другие типы данных, такие какИнформация об откате (отмене), вставка страницы извлечения буфера, информация о системной транзакции, вторичный буфер записи и т. д.Все еще размещен в исходном листе акций.

сегмент

  • Табличное пространство состоит из сегментов, общие сегментыСегмент данных, индексный сегмент, сегмент откатаЖдать.
  • Таблицы механизма хранения InnoDB организованы по индексу, поэтому данные — это индекс, а индекс — это данные.Сегмент данных — это листовой узел дерева B+, а сегмент индекса — это неиндексный узел дерева B+..
  • Сегменты управляются в механизме хранения InnoDB с помощьюделал сам двигатель, администратор базы данных не может и не должен его контролировать.

степень

  • Район состоит изпоследовательные страницысостоит из пробелов, в каждом случае размер каждой зоны1MB.
  • заГарантированная непрерывность страниц в регионе, механизм хранения InnoDBЗаявка на 4~5 областей с диска одновременно.
  • По умолчанию размер страницы механизма хранения InnoDB составляет16KB, в общей сложности64 подрядплощадь.

страница

  • Страница — это наименьшая единица управления дисками InnoDB..
  • В механизме хранения InnoDB размер каждой страницы по умолчанию равен16KB.
  • Начиная с версии InnoDB 1.2.x, вы можете передать параметрinnodb_page_sizeУстановите размер страницы 4K, 8K, 16K.
  • В механизме хранения InnoDB распространенными типами страниц являются:Страницы данных, страницы отмены, системные страницы, страницы данных транзакций, вставка страниц растрового изображения буфера, вставка страниц списка свободных буферовЖдать.

4. Схематическая диаграмма структуры страницы Innodb

Диаграмма структуры мономера страницы Innodb

Страница данных InnoDB состоит из следующих 7 частей, как показано на рисунке:

вЗаголовок файла, заголовок страницы, трейлер файлаРазмер фиксированный, соответственно38, 56, 8Байты, эти пробелы используются для обозначения некоторой информации о странице, такой какКонтрольная сумма, уровень индекса дерева B+, на котором находится страница данныхЖдать.Пользовательские записи, свободное пространство, каталог страницЭти частифактическая запись строкиместо для хранения, поэтому размер является динамическим.

Ниже мы используем таблицу, чтобы примерно описать эти 7 частей:

Блок-схема хранения, записанная на странице

Всякий раз, когда мы вставляем запись, мы будем запрашивать пространство размером с запись из части «Свободное пространство», то есть неиспользуемое пространство для хранения, и разделять его на часть «Записи пользователя».Когда все пространство в части «Свободное пространство» заменяется часть Пользовательские записи, это тоже означает, что эта страница израсходована.Если есть вставленные новые записи, вам необходимо подать заявку на новую страницу.Схема этого процесса выглядит следующим образом:

Диаграмма структуры данных, состоящая из разных страниц Innodb

В таблице могут быть тысячи записей, а размер страницы составляет всего 16 КБ, поэтому для хранения данных может потребоваться много страниц. Различные страницы фактически представляют собойДвусвязный список, Заголовок файла — это первая часть страницы InnoDB, ееFIL_PAGE_PREV и FIL_PAGE_NEXTОн представляет собой номера страниц предыдущей и следующей страниц этой страницы соответственно, то есть указатели на предыдущий и следующий узлы связанного списка.

5. Структурная схема индекса Innodb

Давайте сначала посмотрим на образец таблицы данных, предполагая, чтоCol1 — первичный ключ,следующее:

Схема структуры кластеризованного индекса дерева B+

  • Кластерный индекс — это индекс, созданный с помощью первичного ключа.
  • Кластерный индекс хранит данные в таблице на листовых узлах.

Диаграмма структуры некластеризованного индекса

Предполагая, что столбец индекса — Col3, схема структуры индекса выглядит следующим образом:

  • Некластеризованный индекс — это индекс, созданный с использованием непервичного ключа.
  • Некластеризованные индексы хранят первичные ключи и столбцы индекса в листовых узлах.
  • При использовании некластеризованного индекса для запроса данных получите первичный ключ на листе, чтобы найти нужные данные. (Процесс получения первичного ключа и последующего его нахождения называетсяформа возврата)
  • Предполагая, что запрашиваемые столбцы являются столбцами, соответствующими индексу, не болееформа возвратаПроверьте, тогда этот столбец индекса называетсяиндекс покрытия.

Карта разума типа блокировки InnoDB

запорный механизм

Оптимистическая блокировка и пессимистическая блокировка — это два типауправление параллелизмомИдея может быть использована для решения проблемы потерянных обновлений.

оптимистическая блокировка

  • Каждый раз, когда я иду за данными, я с оптимизмом смотрю на то, что проблем с параллелизмом не будет.
  • Поэтому доступ и обработка данных не блокируются каждый раз.
  • Однако при обновлении судят о наличии конфликта на основе номера версии или метки времени.

пессимистический замок

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

блокировка детализации

  • Блокировка стола:Низкие накладные расходы и быстрая блокировка; высокая надежность блокировки, высокая вероятность конфликта блокировок и низкий уровень параллелизма; отсутствие взаимоблокировок.
  • блокировка строки:Высокие накладные расходы, медленная блокировка, тупиковые ситуации, малая степень детализации блокировки, низкая вероятность конфликтов блокировок и высокий уровень параллелизма.
  • Блокировка страницы:Накладные расходы и скорость блокировки находятся между блокировками таблиц и блокировками строк; будут возникать взаимоблокировки; степень детализации блокировок находится между блокировками таблиц и блокировками строк, а степень параллелизма средняя.

совместимость

Общий замок:

  • Также известна как блокировка чтения (S-блокировка).
  • Когда транзакция получает общую блокировку, другие транзакции могут получать общие блокировки, но не могут получать монопольные блокировки, а другие транзакции могут выполнять операции чтения, но не операции записи.
  • SELECT ... LOCK IN SHARE MODE Отображает общую блокировку.

Эксклюзивный замок:

  • Также известна как блокировка записи (блокировка X).
  • Если транзакция T добавляет монопольную блокировку к данным A, другие транзакции не могут добавлять блокировку любого типа к A. Транзакции, которым предоставлены эксклюзивные блокировки, могут как читать, так и изменять данные.
  • SELECT ... FOR UPDATE отображает добавление эксклюзивной блокировки.

Режим блокировки

  • блокировка записи:Блокировка соответствующей индексной записи строки блокирует запись строки
  • щелевой замок:периодическая блокировка записей индекса, блокировка интервала
  • Блокировка следующего ключа:Это комбинация блокировки записи и блокировки промежутка перед этой индексной записью, блокирующая запись строки + интервал.
  • блокировка намеренийЭто должно поддерживать одновременное существование нескольких блокировок детализации;

Ссылка и спасибо

Личный публичный аккаунт

Приглашаем всех обратить внимание, учиться и обсуждать вместе.