🔥Пытка для души от часто задаваемых вопросов на собеседовании в MySQL

Java
🔥Пытка для души от часто задаваемых вопросов на собеседовании в MySQL

Десять пунктов знания MySQL (вопросы на собеседовании), заполните пробелы, учитесь вместе, добро пожаловать в общение.

Адрес статьи:blog.Park Ruiqing.com/2019/12/08/…

Являются ли уникальные индексы быстрее, чем обычные индексы, и почему

Уникальные индексы не обязательно быстрее обычных индексов и могут быть медленнее.

  1. При запросе, когда не используетсяlimit 1В случае , после сопоставления фрагмента данных, будет возвращен уникальный индекс, а обычный индекс будет продолжать соответствовать следующим данным, и вернется после обнаружения несоответствия.Похоже, что уникальный индекс имеет на одно совпадение меньше, а по факту этот расход минимальный.
  2. При обновлении ситуация сложнее, обычный индекс ставит записи вchange bufferОператор в середине выполняется.Для уникального индекса он должен проверить уникальность.Поэтому страница данных должна быть прочитана в память, чтобы убедиться в отсутствии конфликта, а затем операция может быть продолжена.ДляПишите больше читайте меньшеВ случае нормального использования индексаchange bufferОн эффективно уменьшает количество обращений к диску, поэтому производительность обычных индексов выше, чем у уникальных индексов.

Из каких частей состоит MySQL и для чего они используются?

  1. Server

    • Коннекторы: управление подключениями, проверка разрешений.

    • Анализаторы: Лексический анализ, Синтаксический анализ.

    • Оптимизатор: генерация плана выполнения, выбор индекса.

    • Исполнитель: Запустите механизм хранения и верните результат выполнения.

  2. Механизм хранения: храните данные, предоставляйте интерфейсы чтения и записи.

Каковы недостатки кеша запросов MySQL, при каких обстоятельствах его следует использовать и какие изменения были внесены в кеш запросов в версии 8.0.

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

  • Рассмотрите возможность использования кеша запросов для таблиц с гораздо большим количеством операций чтения, чем записи.

  • Функция кэширования запросов в версии 8.0 была удалена ( ̄. ̄).

MyISAMиInnoDBКаковы различия

  • InnoDB поддерживает транзакции, MyISAM — нет.
  • InnoDB поддерживает блокировки на уровне строк, а MyISAM поддерживает блокировки на уровне таблиц.
  • InnoDB поддерживает управление параллелизмом с несколькими версиями (MVVC), а MyISAM — нет.
  • InnoDB поддерживает внешние ключи, а MyISAM — нет.
  • MyISAM поддерживает полнотекстовое индексирование, InnoDBчастичная версияНе поддерживается (но можно использовать плагин Sphinx)

Как MySQL восстанавливает данные полумесячной давности

Восстановление выполняется через полное резервное копирование базы данных + binlog.Предпосылкой является наличие регулярных полных резервных копий базы данных и сохранение журналов binlog.

Каковы характеристики уровня изоляции транзакций MySQL?

  1. Чтение незафиксированных (RU): когда транзакция не зафиксирована, ее изменения видны другим транзакциям.
  2. Чтение фиксации (RC): после фиксации транзакции ее изменения не будут видны другим транзакциям.
  3. Repeatable Read (RR): данные, видимые во время выполнения транзакции, всегда совпадают с данными, видимыми транзакцией при запуске.Конечно, при уровне изоляции Repeatable Read незафиксированные изменения не затрагиваются другими транзакциями.
  4. Сериализация (S): для одной и той же строки записей будут заблокированы как чтение, так и запись.Если возникает конфликт между блокировками чтения и записи, транзакция, доступ к которой осуществляется позже, должна дождаться завершения предыдущей транзакции, прежде чем продолжить выполнение.

Какие оптимизации, связанные с индексом MySQL, были выполнены?

  • Максимально используйте запрос с первичным ключом: все данные хранятся в кластеризованном индексе, что снижает потребление возвращаемой таблицы по сравнению с обычным запросом индекса.
  • После MySQL 5.6 была введена оптимизация индекса с проталкиванием вниз, а потребление оценки таблицы возврата было уменьшено за счет соответствующего использования объединенного индекса.
  • Если вы часто запрашиваете столбец данных, вы можете рассмотреть возможность использования покрывающего индекса, чтобы избежать возврата к таблице.
  • Совместные индексы помещают высокочастотные поля в крайнее левое положение.

Кратко о парадигме базы данных

  • Первая нормальная форма: атрибуты неделимы.

  • Вторая нормальная форма: на основе нормальной формы каждый экземпляр или строка в таблице базы данных должны быть однозначно различимы.Обычно в таблицу необходимо добавить столбец для хранения уникального идентификатора каждого экземпляра.Этот уникальный атрибут Столбец называется первичным ключом или первичным ключом.

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

Таблица с 10 миллионами фрагментов данных, как разбить запрос на страницы

Когда объем данных слишком велик,limit offsetПейджинг замедлит запрос из-за слишком большого количества отсканированных данных, его можно запросить с последним идентификатором текущей страницы,SELECT * FROM T WHERE id > #{ID} LIMIT #{LIMIT}Конечно, в этом случае идентификаторы необходимо заказывать, что является одним из преимуществ заказных идентификаторов.

Увеличение объема данных в таблице заказов приводит к замедлению выполнения запроса, что с этим делать

Подбиблиотека и подтаблица.Поскольку коэффициент использования исторических заказов невелик, высокочастотными могут быть только недавние заказы.Поэтому таблица заказов разделена по времени, а таблица разделена по месяцам или годам в соответствии с размером объема данных Заказы Идентификатор желательно содержит время (например, он генерируется по алгоритму Снежинка), в это время запись заказа может быть получена непосредственно по идентификатору заказа, а также может запрашиваться в зависимости от времени.

Если эта статья была вам полезна, ставьте лайк ( ̄▽ ̄)"

Добро пожаловать в публичный аккаунт (код как поэзия)

代码如诗(poetic_code)

Рекомендуемое чтение