Мысли о решении проблем на уровне базы данных
Общие идеи экстренной настройки: Для внезапного бизнеса, связанного с картоном, не удается выполнить обычную бизнес-обработку! Сцены, которые нужно решить немедленно!
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. Отрегулируйте сам индекс или инструкцию.
- Системный уровень
ЦП: 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: Общий объем записанных данных; эти единицы измерения-килобайты.
- Решения проблем на системном уровне
Как вы думаете, лучше загружать высоко или низко? В реальном производстве обычно считается, что проблема заключается не более чем в 90% процессора.
Конечно, не исключаются следующие особые обстоятельства: Проблема 1: Высокая загрузка процессора и низкая загрузка ввода-вывода недостаточно памяти
Производительность диска низкая
SQL Вопрос – –> Перейдите на уровень базы данных и продолжите изучение проблем SQL
IO вышел из строя (критический диск, плохой дизайн raid, ухудшение состояния raid, блокировка, высокий TPS в единицу времени)
Слишком высокий tps: много небольших вводов данных, много полных таблиц сканирующий
Вопрос 2: Загрузка ввода-вывода высокая, а загрузка процессора низкая, много небольших операций ввода-вывода:
Автокоммит, который производит большое количество небольших iOS
Фиксированное значение для дисков ввода-вывода/PS, максимальное количество iOS в секунду, определенное производителем при выпуске оборудования с завода.
Множество больших операций ввода – вывода для записи
Существует высокая вероятность возникновения проблем с SQL.
Вопрос 3. Как загрузка ввода-вывода, так и загрузка процессора являются высокими, недостаточно оборудования или проблемы с SQL
V. Оптимизация фундамента
- Оптимизационное мышление
Определение проблемных точек: Оборудование – > Система – > Приложение – > База данных – > Архитектура (Высокая доступность, Разделение чтения и записи, Базы данных и таблиц)
Направление обработки: Четко определите компромисс между целями оптимизации, производительностью и безопасностью
- Оптимизация аппаратного обеспечения
Сторона хоста: В зависимости от типа базы данных, выбора процессора хоста, выбора объема памяти, выбора диска
Балансировка ресурсов памяти и диска
Случайный ввод-вывод и последовательный ввод-вывод
BBU (Блок резервного питания батареи) основной RAID-карты закрыт
Выбор процессора: Два ключевых фактора процессора: количество ядер и основная частота
Выбирайте в соответствии с различными типами бизнеса:
Интенсивное использование процессора: Больше вычислений, OLTP имеет высокую основную частоту процессора, больше ядер
Интенсивный ввод-вывод: По сравнению с запросами, OLAP имеет больше ядер, и его основная частота не обязательно высока.
Выбор памяти: базе данных типа OLAP требуется больше памяти, что связано с объемом сбора данных.
Данные типа OLTP обычно имеют в два-четыре раза больше памяти, чем количество ядер процессора, и лучшей практики не существует.
Хранение: Выберите различные устройства хранения в зависимости от типа хранимых данных.
Рационально настроенные уровни RAID (raid 5, raid 10, режим горячего ожидания)
Для операционной системы нет необходимости в двух специальных вариантах выбора, лучше выполнить хорошую работу по резервированию (raid 1) (ssd, sas, sata)
Карта Raid: выбор карты raid хоста: Реализация избыточности дисков операционной системы (raid1)
Балансировка ресурсов памяти и диска
Случайный ввод-вывод и последовательный ввод-вывод
BBU (блок резервного питания батареи) RAID-карты хоста должен быть закрыт
Сетевое оборудование: Используйте трафик для поддержки сетевых устройств более высокого уровня (коммутаторы, маршрутизаторы, беспроводные сети, сетевые карты, карты HBA).
Примечание: Эти планы следует учитывать при первоначальном проектировании системы.
- Оптимизация серверного оборудования
1. Лампа физического состояния:
2. Автономное оборудование для управления: карта дистанционного управления (устройство ограждения: IPMI ILO idarc), коммутатор, мониторинг оборудования.
3. Программное обеспечение и оборудование для мониторинга сторонних производителей (snmp, агент) для мониторинга физических объектов
4. Оборудование для хранения: платформа мониторинга. EMC2 (приобретена hp), Hitachi (hds), IBM OEM hds низкого класса, высокопроизводительное хранилище-это их собственная технология, Хранилище Huawei
- оптимизация системы
Процессор: Нет необходимости настраивать выбор оборудования.
Память: Нет необходимости настраивать выбор оборудования.
ПОДКАЧКА: MySQL максимально избегает подкачки. Своп по умолчанию на сервере Алиюна равен 0
Ввод-вывод: Raid, без lvm, ext4 или xfs, ssd, стратегии планирования ввода-вывода
Регулировка подкачки (без разделения подкачки)
Этот параметр определяет, будет ли Linux использовать подкачку или освобождать кэш файловой системы. В случае ограничений памяти, чем меньше значение, тем больше вероятность освобождения кэша файловой системы. Конечно, этот параметр может только снизить вероятность использования swap и не может избежать использования swap в Linux.
Измените параметр конфигурации MySQL innodb_flush_method, чтобы открыть режим O_DIRECT. В этом случае пул буферов Innodb напрямую обходит кэш файловой системы для доступа к диску, но журнал повтора по-прежнему использует кэш файловой системы. Стоит отметить, что журналы повтора перезаписываются, и даже если вы используете кэш файловой системы, они не занимают
Стратегия планирования ввода-вывода:
- Настройка системных параметров
Оптимизация параметров ядра системы Linux:
Параметры ограничения пользователя (MySQL может не устанавливать следующую конфигурацию):
- Оптимизация приложений
Бизнес-приложения и приложения баз данных независимы, брандмауэры: iptables, SELinux и другие бесполезные службы (закрыты):
Серверы, устанавливающие графические интерфейсы, не должны запускать графический интерфейс 3 уровня выполнения. Кроме того, подумайте, действительно ли наш бизнес нуждается в MySQL или в будущем будет использовать другие типы баз данных. Самый высокий уровень использования базы данных-это не использование базы данных.
ВИ. Оптимизация базы данных Направление оптимизации SQL: План выполнения, индекс, переписывание SQL
Направление оптимизации архитектуры: Архитектура высокой доступности, Архитектура высокой производительности, Субд и таблицы
- Оптимизация параметров базы данных
Регулировка: Пример Целиком (Расширенная оптимизация, Расширение)
Уровень подключения (оптимизация основы) Настройте разумный способ подключения клиентов и заказчиков