Оптимизировать запросы, структуру бд Mysql и настройки инстанса в цело

Цена договорная
23 сентября 2021, 22:40 • 5 откликов • 36 просмотров
Добрый день.
У нас есть довольно нагруженный сервер mysql на базе физического сервера
Nvme-диски в RAID1, 48 ядер(AMD процессор), 512Гб ОЗУ.
Бд около 0,5Тб
mysql на базе форка Percona-Server-server-57.
Необходимо:
1. Проанализировать структуру БД и дать рекомендации по её оптимизации
2. Проверить настройки БД и дать рекомендации по их оптимизации.
3. установить мониторинг медленный запросов и анализировать в течение долгого времени (пара недель), чтобы выявить именно закономерности в работе запросов и пути их улучшения. Идеально бы получить удобный инструмент для наблюдения и анализа медленных запросов - удобный интерфейс приветствуется.
4. Получить список таблиц/индексов/процедур, с которыми работаем редко. После анализа списка вполне возможно что их можем удалить.
5. Пример возможных вопросов
Запрос без сортировки выполняется 200-400 мс, а с сортировкой 3-4 секунды. Необходимо настроить БД для наилучшей работы с запросами с сортировкой
SELECT o.*, od.*,
(CASE
WHEN o.archiv = 1 THEN 5
WHEN xsSort.active = 1 AND xsSort.date_last != 0 THEN 1
WHEN cxuoSort.uiz IS NOT NULL THEN 2
WHEN o.pay_done >= 2 OR packetSort.date_activate != 0 THEN 4
ELSE 3
END
) AS scheduleSort
FROM orders o
INNER JOIN orders_data od ON od.uiz = o.uiz
INNER JOIN theme_breadcrumbs t ON o.theme_id = t.id
LEFT JOIN xml_schedule xsSort ON xsSort.uiz = o.uiz AND xsSort.id = (SELECT MAX(xsSort2.id) FROM xml_schedule AS xsSort2 WHERE xsSort2.uiz = o.uiz)
LEFT JOIN clients_xml_uploads_orders cxuoSort ON cxuoSort.uiz = o.uiz
LEFT JOIN packet_orders packetSort ON packetSort.id = o.packet_id
WHERE
o.client_id = <XX> AND t.root_parent_id = <XX>
AND ((cxuoSort.upload_id=(SELECT MAX(cxuoSortMax.upload_id) FROM clients_xml_uploads_orders cxuoSortMax WHERE cxuoSortMax.uiz = o.uiz) or cxuoSort.upload_id IS NULL))
ORDER BY o.archiv ASC, scheduleSort ASC, o.id DESC Почему? как решить эту проблему?
или
Приложил скриншоты, где нагрузка на CPU выросла в 1,5раза в один момент и продолжает расти.
Одновременно выросло и количество Innodb Buffer Pool request per second. при этом разработчики утверждают, что ничего не меняли, настройки бд также не менялись. Как это объяснить и пофиксить.
Вообщем вопросы не простые, требуется опытный DBA.
В отклике прошу указывать возможные причины проблем, которые я описал выше(два последних вопроса). Стоимость работ.





Файлы