Галерея диаграмм связей Энциклопедия медленной обработки SQL
Энциклопедия обработки MySQL ~ все необходимые вам знания находятся здесь. Медленный SQL может привести к нарушению бесперебойной работы служб и является самой большой скрытой опасностью, которая часто вызывает дрожание приложений в повседневной разработке.
Отредактировано в 2023-10-11 14:05:10Руководство по медленной обработке SQL
вопрос
Медленный SQL может привести к нарушению бесперебойной работы служб и является самой большой скрытой опасностью, которая часто вызывает дрожание приложений в повседневной разработке.
Устранение неполадок и решение медленного SQL
Скрытые опасности медленного SQL
Влияние на бесперебойную работу служб
Распространенные проблемы в повседневной разработке
Способы избежать медленного SQL
Оптимизация SQL-запросов
Разделить сложный SQL
Определение сложного SQL
Определение сложных структур, таких как подзапросы, связанные запросы и агрегатные функции в SQL.
Определение многотабличных соединений, сортировки, группировки и других операций в SQL.
Разобрать сложный SQL
Разбейте сложный SQL на несколько простых запросов к одной таблице.
Сократите количество таких операций, как объединение нескольких таблиц, сортировка и группировка.
Оптимизация запроса к одной таблице
Использовать индекс
Уменьшите объем данных
Оптимизировать условия запроса
Объединить результаты запроса одной таблицы
Используйте такие операции, как UNION и UNION ALL, для объединения результатов запроса одной таблицы.
Избегайте использования операций JOIN для объединения результатов.
Оптимизация результатов слияния
Уменьшите объем данных в объединенных результатах
Оптимизировать сортировку, группировку и другие операции объединенных результатов;
Проанализируйте проблему и используйте EXPLAIN.
Используйте команду ОБЪЯСНИТЬ
Посмотреть план выполнения
Анализ использования индекса
Проверьте распределение данных
избегать проблемных факторов
Сложный SQL по историческим причинам
Рост объема данных
Идеи для решения медленного SQL
Соблюдайте SQL
Понимание бизнес-сценариев
Разберитесь в отношениях
проанализировать проблему
Используйте оператор EXPLAIN
Индикаторы анализа (тип, возможные_ключи, ключ, строки, дополнительно)
Укажите план
Преобразовано в пейджинговый запрос
Непосредственно получить полный объем данных и отсортировать их в памяти.
Подзапрос изменен на связанный запрос
Используйте Force_index, чтобы указать индекс или изменить метод сортировки.
Используйте LIMIT и пейджинг, чтобы избежать полного сканирования таблицы.
Оптимизация ситуаций, когда асимметрия данных является серьезной
Используйте ES для запроса или ограничения глубины подкачки.
Принципы оптимизации
Создайте соответствующие индексы
Понимание типов индексов
Обычный индекс
Подходит для большинства сценариев
уникальный индекс
Применяется к полям уникальных значений.
составной индекс
Подходит для нескольких комбинаций полей
пространственный индекс
Подходит для пространственных данных
Полнотекстовый указатель
Подходит для текстового поиска
Выберите индексное поле
Выберите часто запрашиваемые поля
Выбирайте хорошо различимые поля
Выбирайте поля подходящей длины
Оцените производительность индекса
Используйте команду ОБЪЯСНИТЬ
Посмотреть план выполнения
Анализ использования индекса
Оптимизировать стратегию индексации
Регулярно поддерживать индекс
Удалить лишние индексы
индекс слияния
Отрегулируйте порядок индексов;
Уменьшите ненужный доступ к столбцам
Использовать индекс покрытия
Что такое индекс покрытия
Покрытие индекса означает, что в операторе запроса все необходимые данные могут быть получены из индекса без необходимости обратного запроса к таблице.
Преимущества: сокращение количества запросов к таблице и повышение эффективности запросов.
Недостатки: индекс может стать слишком большим, что повлияет на производительность записи.
Как создать покрывающий индекс
Выберите соответствующий столбец индекса
Выберите часто используемые столбцы в операторах запроса в качестве столбцов индекса.
Выберите столбцы с высоким различием в качестве индексных столбцов.
Создать составной индекс
Объединение нескольких столбцов в составной индекс
Составные индексы могут повысить эффективность запросов и сократить количество индексов.
На что следует обратить внимание при использовании покрывающих индексов
Избегайте функциональных операций с индексированными столбцами
Функциональные операции могут привести к сбою индекса
Избегайте преобразования типов в индексированных столбцах
Преобразование типов может привести к сбою индекса
Избегайте вычислений с индексированными столбцами
Вычисление может привести к сбою индекса
Избегайте нечетких запросов к индексированным столбцам
Нечеткие запросы могут привести к сбою индекса
Избегайте сортировки по индексированным столбцам
Сортировка может привести к сбою индекса
Избегайте подкачки в столбцах индекса
Пагинация может привести к сбою индекса
Избегайте агрегирования по индексированным столбцам
Агрегация может привести к сбою индекса;
Переписывание операторов
Оптимизация операторов запроса
Использовать индекс
Убедитесь, что поля критериев запроса проиндексированы.
Избегайте использования функций или операторов, которые могут привести к сбою индекса.
Уменьшите объем данных
Используйте LIMIT, чтобы ограничить объем возвращаемых данных.
Фильтрация данных с помощью предложения WHERE
Избегайте использования подзапросов
Используйте оператор JOIN вместо подзапроса
Используйте предложение EXISTS вместо подзапроса.
Оптимизация условий операционной
Используйте UNION вместо условия OR
Используйте IN вместо условий OR
Оптимизация оператора обновления
Пакетное обновление
Использование транзакций для пакетных обновлений
Использование хранимых процедур для пакетных обновлений
Уменьшите конфликты блокировок
Не держите замки в течение длительного времени.
Более низкий уровень изоляции транзакций
Удалить оптимизацию операторов
Используйте LIMIT, чтобы ограничить объем удаляемых данных.
Использовать транзакции для массового удаления
Используйте хранимые процедуры для пакетного удаления;
Перенос данных
Что такое перенос данных
Перенос данных — это перемещение данных из одного места в другое.
Причины переноса данных
Объем данных слишком велик
Формат данных несовместим
Данные необходимо обработать
Как передаются данные
Копировать напрямую
Вывоз ввоз
Возможность подключения к базе данных
Оптимизация переноса данных
Выберите подходящий метод переноса данных
Прямое копирование подходит для небольших объемов данных.
Экспорт и импорт подходят для больших объемов данных.
Соединение с базой данных работает с данными в реальном времени.
Оптимизация скорости переноса данных
Увеличение пропускной способности сети
Оптимизировать запросы к базе данных
Оптимизировать формат данных
Примечания по переносу данных
Обеспечьте безопасность ваших данных
Используйте зашифрованную передачу
Ограничить доступ
Обеспечьте целостность данных
Использовать обработку транзакций
Регулярно создавайте резервные копии данных;
Выберите соответствующий столбец для сортировки
Избегайте использования строковых типов для сортировки
Производительность сортировки строковых типов низкая.
Для сортировки рекомендуется использовать числовые типы.
Избегайте использования выражений для сортировки
Низкая производительность сортировки выражений
Для сортировки рекомендуется использовать значения столбцов
Избегайте использования нескольких столбцов для сортировки
Плохая производительность сортировки по нескольким столбцам
Для сортировки рекомендуется использовать один столбец.
Избегайте использования столбцов сортировки для группировки
Низкая производительность сортировки и группировки столбцов
Для группировки рекомендуется использовать другие столбцы;
Правильная избыточность столбцов
Избыточность столбцов может уменьшить количество объединений таблиц.
Чем больше подключений, тем медленнее будет скорость запроса.
Избыточность столбцов может уменьшить количество соединений и увеличить скорость запросов.
Избыточность столбцов уменьшает количество операций ввода-вывода на диске.
Чем больше операций ввода-вывода на диске, тем медленнее скорость запроса.
Избыточность столбцов может уменьшить количество дисковых операций ввода-вывода и увеличить скорость запросов.
Избыточность столбцов может снизить сложность запроса.
Чем выше сложность запроса, тем медленнее скорость запроса.
Избыточность столбцов может снизить сложность запросов и повысить их скорость.
Избыточность столбцов повышает производительность запросов.
Чем выше производительность запроса, тем выше скорость запроса.
Избыточность столбцов может повысить производительность и скорость запросов;
SQL-разделение
Причина раскола
Повышение эффективности запросов
Уменьшите конфликты блокировок
Улучшение ремонтопригодности
Метод разделения
разделить вертикально
Разделение по бизнес-функциям
Может поддерживаться независимо после разделения
Уменьшите сцепление
разделить горизонтально
Разделить по диапазону данных
Улучшение производительности запросов
Уменьшите избыточность данных
Принцип разделения
Минимизируйте расколы
Избегайте чрезмерного разделения
Сокращение затрат на техническое обслуживание
Максимальное использование аппаратных ресурсов
Улучшение производительности запросов
Сократите затраты на оборудование
Минимизируйте избыточность данных
Уменьшите несогласованность данных
Повысьте точность данных
Максимальная независимость данных
Уменьшите связанность данных
Улучшение удобства обслуживания данных;
Соответствующее применение ES