Десять пунктов знания MySQL (вопросы на собеседовании), заполните пробелы, учитесь вместе, добро пожаловать в общение.
Адрес статьи:blog.Park Ruiqing.com/2019/12/08/…
Являются ли уникальные индексы быстрее, чем обычные индексы, и почему
Уникальные индексы не обязательно быстрее обычных индексов и могут быть медленнее.
- При запросе, когда не используется
limit 1
В случае , после сопоставления фрагмента данных, будет возвращен уникальный индекс, а обычный индекс будет продолжать соответствовать следующим данным, и вернется после обнаружения несоответствия.Похоже, что уникальный индекс имеет на одно совпадение меньше, а по факту этот расход минимальный. - При обновлении ситуация сложнее, обычный индекс ставит записи в
change buffer
Оператор в середине выполняется.Для уникального индекса он должен проверить уникальность.Поэтому страница данных должна быть прочитана в память, чтобы убедиться в отсутствии конфликта, а затем операция может быть продолжена.ДляПишите больше читайте меньшеВ случае нормального использования индексаchange buffer
Он эффективно уменьшает количество обращений к диску, поэтому производительность обычных индексов выше, чем у уникальных индексов.
Из каких частей состоит MySQL и для чего они используются?
-
Server
-
Коннекторы: управление подключениями, проверка разрешений.
-
Анализаторы: Лексический анализ, Синтаксический анализ.
-
Оптимизатор: генерация плана выполнения, выбор индекса.
-
Исполнитель: Запустите механизм хранения и верните результат выполнения.
-
-
Механизм хранения: храните данные, предоставляйте интерфейсы чтения и записи.
Каковы недостатки кеша запросов MySQL, при каких обстоятельствах его следует использовать и какие изменения были внесены в кеш запросов в версии 8.0.
-
Кэш запросов может быть аннулирован очень часто. Для таблицы, пока есть обновление, весь кеш запросов таблицы будет очищен. Поэтому для часто обновляемых таблиц кеш запросов может не иметь положительного эффекта.
-
Рассмотрите возможность использования кеша запросов для таблиц с гораздо большим количеством операций чтения, чем записи.
-
Функция кэширования запросов в версии 8.0 была удалена ( ̄. ̄).
MyISAMиInnoDBКаковы различия
- InnoDB поддерживает транзакции, MyISAM — нет.
- InnoDB поддерживает блокировки на уровне строк, а MyISAM поддерживает блокировки на уровне таблиц.
- InnoDB поддерживает управление параллелизмом с несколькими версиями (MVVC), а MyISAM — нет.
- InnoDB поддерживает внешние ключи, а MyISAM — нет.
- MyISAM поддерживает полнотекстовое индексирование, InnoDBчастичная версияНе поддерживается (но можно использовать плагин Sphinx)
Как MySQL восстанавливает данные полумесячной давности
Восстановление выполняется через полное резервное копирование базы данных + binlog.Предпосылкой является наличие регулярных полных резервных копий базы данных и сохранение журналов binlog.
Каковы характеристики уровня изоляции транзакций MySQL?
- Чтение незафиксированных (RU): когда транзакция не зафиксирована, ее изменения видны другим транзакциям.
- Чтение фиксации (RC): после фиксации транзакции ее изменения не будут видны другим транзакциям.
- Repeatable Read (RR): данные, видимые во время выполнения транзакции, всегда совпадают с данными, видимыми транзакцией при запуске.Конечно, при уровне изоляции Repeatable Read незафиксированные изменения не затрагиваются другими транзакциями.
- Сериализация (S): для одной и той же строки записей будут заблокированы как чтение, так и запись.Если возникает конфликт между блокировками чтения и записи, транзакция, доступ к которой осуществляется позже, должна дождаться завершения предыдущей транзакции, прежде чем продолжить выполнение.
Какие оптимизации, связанные с индексом MySQL, были выполнены?
- Максимально используйте запрос с первичным ключом: все данные хранятся в кластеризованном индексе, что снижает потребление возвращаемой таблицы по сравнению с обычным запросом индекса.
- После MySQL 5.6 была введена оптимизация индекса с проталкиванием вниз, а потребление оценки таблицы возврата было уменьшено за счет соответствующего использования объединенного индекса.
- Если вы часто запрашиваете столбец данных, вы можете рассмотреть возможность использования покрывающего индекса, чтобы избежать возврата к таблице.
- Совместные индексы помещают высокочастотные поля в крайнее левое положение.
Кратко о парадигме базы данных
-
Первая нормальная форма: атрибуты неделимы.
-
Вторая нормальная форма: на основе нормальной формы каждый экземпляр или строка в таблице базы данных должны быть однозначно различимы.Обычно в таблицу необходимо добавить столбец для хранения уникального идентификатора каждого экземпляра.Этот уникальный атрибут Столбец называется первичным ключом или первичным ключом.
-
Третья нормальная форма: на основе второй нормальной формы требуется, чтобы таблица базы данных не содержала информацию, не являющуюся первичным ключом, уже содержащуюся в других таблицах.Поэтому третья нормальная форма имеет следующие характеристики: 1) Каждый столбец имеет только одно значение. 2) Каждая строка может быть различима. 3) Каждая таблица не содержит информации, отличной от первичного ключа, которая уже содержится в других таблицах.
Таблица с 10 миллионами фрагментов данных, как разбить запрос на страницы
Когда объем данных слишком велик,limit offset
Пейджинг замедлит запрос из-за слишком большого количества отсканированных данных, его можно запросить с последним идентификатором текущей страницы,SELECT * FROM T WHERE id > #{ID} LIMIT #{LIMIT}
Конечно, в этом случае идентификаторы необходимо заказывать, что является одним из преимуществ заказных идентификаторов.
Увеличение объема данных в таблице заказов приводит к замедлению выполнения запроса, что с этим делать
Подбиблиотека и подтаблица.Поскольку коэффициент использования исторических заказов невелик, высокочастотными могут быть только недавние заказы.Поэтому таблица заказов разделена по времени, а таблица разделена по месяцам или годам в соответствии с размером объема данных Заказы Идентификатор желательно содержит время (например, он генерируется по алгоритму Снежинка), в это время запись заказа может быть получена непосредственно по идентификатору заказа, а также может запрашиваться в зависимости от времени.
Если эта статья была вам полезна, ставьте лайк ( ̄▽ ̄)"
Добро пожаловать в публичный аккаунт (код как поэзия)
Рекомендуемое чтение
- Как заблокировать опасные IP-адреса в режиме реального времени через журналы Nginx
- Практика открытия шлюза API (1) — проектирование шлюза API
- Практика Open API Gateway (2) — Повтор атаки и защита
- Практика Open API Gateway (3) — Текущее ограничение
- Kubernetes (1) Следуйте официальной документации, чтобы собрать K8S с нуля.
- Развертывание приложений Kubernetes (2)
- Kubernetes (3) Как получить доступ к сервисам извне