Рубрики
Uncategorized

Оптимизация MySQL

Автор оригинала: David Wong.

Мысли о решении проблем на уровне базы данных

Общие идеи экстренной настройки: Для внезапного бизнеса, связанного с картоном, не удается выполнить обычную бизнес-обработку! Сцены, которые нужно решить немедленно!

1、show processlist

2、explain select id ,name from stu where name='clsn'; # ALL id name age sex
Select id, name from stu where id = 2-1 function result set > 30;
show index from table;

3. Judging by execution plan, indexing (whether or not it is reasonable) or statement itself

4. show status like'% lock%'; # query lock status
Kill SESSION_ID;  Kill the session in question

Рутинные идеи настройки: Например, для бизнес-циклической коробки, бизнес особенно медленный в 10-11 часов в день, но его все равно можно использовать, после этого промежуток времени будет хорошим.

1. Просмотрите медленный журнал, проанализируйте медленный журнал и проанализируйте медленные операторы запросов.

2. Проверьте все медленные операторы один за другим в соответствии с определенным приоритетом.

3. Анализируйте верхний sql, отлаживайте инструкции и проверяйте время выполнения инструкций.

4. Отрегулируйте сам индекс или инструкцию.

  1. Системный уровень

ЦП: vmstat,sar top,htop,nmon,mpstat

Память: бесплатная ,ps -aux 、

Устройства ввода-вывода (диски, сети): iostat , ss , netstat , iptraf,iftop,lsof、

Команда vmstat гласит: Procs: r показывает, сколько процессов ожидает процессорного времени. B Отображает количество процессов, находящихся в режиме непрерывного бездействия. Ожидание ввода-вывода

Память: swpd показывает количество блоков данных, которыми обмениваются на диске. Неиспользуемые блоки данных, буферизованные пользователем блоки данных, количество блоков данных, используемых в операционной системе

Подкачка: количество блоков данных, которые операционная система меняет местами с диска на память и с памяти на диск в секунду. S1 и S0 лучше всего 0

Ввод-вывод: Количество блоков данных, считываемых с устройства B1 на устройство B0 в секунду. Отражает диск Ввод-вывод

Система: Показывает количество прерываний в секунду (in) и переключение контекста (cs).

ЦП: Отображает время процессора для выполнения кода пользователя, системного кода, простоя, ожидания ввода-вывода

Описание команды Iostat Команда экземпляра: iostat-dk 15 Iostat-d-k-x 5 (просмотр использования устройства (% использования) и времени отклика (ожидание))

Tps: количество передач устройства в секунду. “Одна передача “означает” одна Запрос ввода-вывода”. Несколько логических запросов могут быть объединены в “один Запрос ввода-вывода”.

IOps: Когда оборудование выходит с завода, производитель определяет максимальное количество iOS в секунду, и размер запроса на “одноразовую передачу” неизвестен.

KB_read/с: объем данных, считываемых с устройства (выраженный на диске) в секунду;

KB_wrtn/с: Количество данных, записанных на устройство (выраженное на диске) в секунду;

KB_read: Общий объем считанных данных;

KB_wrtn: Общий объем записанных данных; эти единицы измерения-килобайты.

  1. Решения проблем на системном уровне

Как вы думаете, лучше загружать высоко или низко? В реальном производстве обычно считается, что проблема заключается не более чем в 90% процессора.

Конечно, не исключаются следующие особые обстоятельства: Проблема 1: Высокая загрузка процессора и низкая загрузка ввода-вывода недостаточно памяти

Производительность диска низкая

SQL Вопрос – –> Перейдите на уровень базы данных и продолжите изучение проблем SQL

IO вышел из строя (критический диск, плохой дизайн raid, ухудшение состояния raid, блокировка, высокий TPS в единицу времени)

Слишком высокий tps: много небольших вводов данных, много полных таблиц сканирующий

Вопрос 2: Загрузка ввода-вывода высокая, а загрузка процессора низкая, много небольших операций ввода-вывода:

Автокоммит, который производит большое количество небольших iOS

Фиксированное значение для дисков ввода-вывода/PS, максимальное количество iOS в секунду, определенное производителем при выпуске оборудования с завода.

Множество больших операций ввода – вывода для записи

Существует высокая вероятность возникновения проблем с SQL.

Вопрос 3. Как загрузка ввода-вывода, так и загрузка процессора являются высокими, недостаточно оборудования или проблемы с SQL

V. Оптимизация фундамента

  1. Оптимизационное мышление

Определение проблемных точек: Оборудование – > Система – > Приложение – > База данных – > Архитектура (Высокая доступность, Разделение чтения и записи, Базы данных и таблиц)

Направление обработки: Четко определите компромисс между целями оптимизации, производительностью и безопасностью

  1. Оптимизация аппаратного обеспечения

Сторона хоста: В зависимости от типа базы данных, выбора процессора хоста, выбора объема памяти, выбора диска

Балансировка ресурсов памяти и диска

Случайный ввод-вывод и последовательный ввод-вывод

BBU (Блок резервного питания батареи) основной RAID-карты закрыт

Выбор процессора: Два ключевых фактора процессора: количество ядер и основная частота

Выбирайте в соответствии с различными типами бизнеса:

Интенсивное использование процессора: Больше вычислений, OLTP имеет высокую основную частоту процессора, больше ядер

Интенсивный ввод-вывод: По сравнению с запросами, OLAP имеет больше ядер, и его основная частота не обязательно высока.

Выбор памяти: базе данных типа OLAP требуется больше памяти, что связано с объемом сбора данных.

Данные типа OLTP обычно имеют в два-четыре раза больше памяти, чем количество ядер процессора, и лучшей практики не существует.

Хранение: Выберите различные устройства хранения в зависимости от типа хранимых данных.

Рационально настроенные уровни RAID (raid 5, raid 10, режим горячего ожидания)

Для операционной системы нет необходимости в двух специальных вариантах выбора, лучше выполнить хорошую работу по резервированию (raid 1) (ssd, sas, sata)

Карта Raid: выбор карты raid хоста: Реализация избыточности дисков операционной системы (raid1)

Балансировка ресурсов памяти и диска

Случайный ввод-вывод и последовательный ввод-вывод

BBU (блок резервного питания батареи) RAID-карты хоста должен быть закрыт

Сетевое оборудование: Используйте трафик для поддержки сетевых устройств более высокого уровня (коммутаторы, маршрутизаторы, беспроводные сети, сетевые карты, карты HBA).

Примечание: Эти планы следует учитывать при первоначальном проектировании системы.

  1. Оптимизация серверного оборудования

1. Лампа физического состояния:

2. Автономное оборудование для управления: карта дистанционного управления (устройство ограждения: IPMI ILO idarc), коммутатор, мониторинг оборудования.

3. Программное обеспечение и оборудование для мониторинга сторонних производителей (snmp, агент) для мониторинга физических объектов

4. Оборудование для хранения: платформа мониторинга. EMC2 (приобретена hp), Hitachi (hds), IBM OEM hds низкого класса, высокопроизводительное хранилище-это их собственная технология, Хранилище Huawei

  1. оптимизация системы

Процессор: Нет необходимости настраивать выбор оборудования.

Память: Нет необходимости настраивать выбор оборудования.

ПОДКАЧКА: MySQL максимально избегает подкачки. Своп по умолчанию на сервере Алиюна равен 0

Ввод-вывод: Raid, без lvm, ext4 или xfs, ssd, стратегии планирования ввода-вывода

Регулировка подкачки (без разделения подкачки)

Этот параметр определяет, будет ли Linux использовать подкачку или освобождать кэш файловой системы. В случае ограничений памяти, чем меньше значение, тем больше вероятность освобождения кэша файловой системы. Конечно, этот параметр может только снизить вероятность использования swap и не может избежать использования swap в Linux.

Измените параметр конфигурации MySQL innodb_flush_method, чтобы открыть режим O_DIRECT. В этом случае пул буферов Innodb напрямую обходит кэш файловой системы для доступа к диску, но журнал повтора по-прежнему использует кэш файловой системы. Стоит отметить, что журналы повтора перезаписываются, и даже если вы используете кэш файловой системы, они не занимают

Стратегия планирования ввода-вывода:

  1. Настройка системных параметров

Оптимизация параметров ядра системы Linux:

Параметры ограничения пользователя (MySQL может не устанавливать следующую конфигурацию):

  1. Оптимизация приложений

Бизнес-приложения и приложения баз данных независимы, брандмауэры: iptables, SELinux и другие бесполезные службы (закрыты):

Серверы, устанавливающие графические интерфейсы, не должны запускать графический интерфейс 3 уровня выполнения. Кроме того, подумайте, действительно ли наш бизнес нуждается в MySQL или в будущем будет использовать другие типы баз данных. Самый высокий уровень использования базы данных-это не использование базы данных.

ВИ. Оптимизация базы данных Направление оптимизации SQL: План выполнения, индекс, переписывание SQL

Направление оптимизации архитектуры: Архитектура высокой доступности, Архитектура высокой производительности, Субд и таблицы

  1. Оптимизация параметров базы данных

Регулировка: Пример Целиком (Расширенная оптимизация, Расширение)

Уровень подключения (оптимизация основы) Настройте разумный способ подключения клиентов и заказчиков