Оптимизация mysql сервера и ускорение запросов типа select
Имеется база данных размером 13.4Гб. Диск ssd размером 60Гб и 32RAM. Это облачный сервер serverpilot.io
Максимальный вес одной таблицы 1.2Гб, всего их около 30.
Работа mysql в основном построена на select/insert/delete, update не используется вообще.
Поэтому быстродействие запроса типа select должно быть на феноменальном уровне.
Запрос типа:
select * from api_orders where bonus_card = "00510051100156";
Выполняется за:
Без индекса
4 rows in set, 6 warnings (2.52 sec)
С индексом bonus_card (BTREE)
4 rows in set, 6 warnings (2.14 sec)
Существенного прироста скорости нет.
Это самый простой запрос, который выполняется очень долго, по одной из таблиц. Если взять запрос на выбор клиентов по периоду покупок с присвоением inner join в этом случаи мы получим отработку в лучшем случаи за 20-30 минут. Что откровенно говоря не поддается ни какому объяснению. Запросы довольно просты.
Для понимая происходящего прикладываю текущую конфигурацию сервера с дебагом.
Конфигурат:
key_buffer_size = 16M
sort_buffer_size = 32K
max_allowed_packet = 512M
read_buffer_size = 128K
read_rnd_buffer_size = 512K
thread_stack = 128K
max_heap_table_size = 16M
tmp_table_size = 16M
query_cache_size = 0
query_cache_type = 0
thread_cache_size = 128K
table_open_cache_instances = 16
open_files_limit = 500000
table_open_cache = 512
join_buffer_size = 64K
max_connections = 1000
net_read_timeout = 3600
net_write_timeout = 3600
wait_timeout = 120
interactive_timeout = 120
innodb_open_files = 4000
innodb_file_per_table = 1
innodb_flush_method=O_DIRECT
innodb_flush_log_at_trx_commit=2
innodb_log_file_size = 4G
innodb_log_buffer_size = 32M
innodb_log_files_in_group = 16
innodb_buffer_pool_size=24G
innodb_buffer_pool_instances=24
innodb_buffer_pool_chunk_size = 50M
innodb_thread_concurrency = 4
innodb_read_io_threads = 4
innodb_write_io_threads = 4
innodb_stats_on_metadata = 0
innodb_io_capacity=2000
innodb_io_capacity_max=4000
innodb_purge_threads=4
innodb_data_file_path=ibdata1:200M:autoextend
innodb_page_cleaners=4
innodb_adaptive_hash_index=0
Дебаг:
-------- Performance Metrics -------------------------------------------------
[--] Up for: 5s (9 q [1.800 qps], 7 conn, TX: 17K, RX: 1K)
[--] Reads / Writes: 100% / 0%
[--] Binary logging is disabled
[--] Total buffers: 24.1G global + 832.0K per thread (500 max threads)
[OK] Maximum reached memory usage: 24.1G (76.58% of installed RAM)
[OK] Maximum possible memory usage: 24.5G (77.84% of installed RAM)
[OK] Slow queries: 0% (0/9)
[OK] Highest usage of available connections: 0% (1/500)
[!!] Aborted connections: 14.29% (1/7)
[!!] Query cache is disabled
[OK] Temporary tables created on disk: 0% (0 on disk / 2 total)
[OK] Thread cache hit rate: 85% (1 created / 7 connections)
[!!] Table cache hit rate: 9% (10 open / 109 opened)
[OK] Open file limit used: 0% (7/1M)
[OK] Table locks acquired immediately: 100% (100 immediate / 100 locks)
-------- InnoDB Metrics -----------------------------------------------------
[--] InnoDB is enabled.
[OK] InnoDB buffer pool / data size: 24.0G/13.4G
[OK] InnoDB buffer pool instances: 24
[!!] InnoDB Used buffer: 0.62% (9804 used/ 1572768 total)
[!!] InnoDB Read buffer efficiency: 13.50% (1525 hits/ 11295 total)
[!!] InnoDB Write buffer efficiency: 0.00% (0 hits/ 1 total)
[OK] InnoDB log waits: 0.00% (0 waits / 1 writes)
Интересует профессиональный взгляд на проблему с учетом ее решения.
Новичков прошу даже не отвечать на проект, тем более не писать менеджерам, которые не понимаю, что такое оптимизация конфигурации mysql.
Я надеюсь, что вы полностью прочитали описание задачи и можете ответить в предложении к проекту начав предложение со слов: MySQL. Предложения без этого будут отклонены даже без рассмотрения вашего профиля.
Итоговая цель задачи ускорить быстродействие запроса, который связывает 7 таблиц и делает where по ним максимум до 2-3х минут. Т.е. в 10 раз.
Спасибо за уделенное время на вникание в суть задачи!
-
2130 199 1 4 MySQL - такая штука... :)
В общем нужно смотреть. Обещать ничего не получится - пока маловато вводных. Нужно смотреть на систему в целом.
Опыт администрирования 17 лет.
__________
С уважением, Дмитрий Лаврик
WWW: https://dl.sm.ua
Facebook: https://www.facebook.com/dmytro.lavryk
E-mail: [email protected]
Skype: dmytro.lavryk
… Telegram: dlsumy
Тел. (viber): +380506037953
-
62 1 0 Добрый день.
Имею опыт оптимизации баз mysql с сотнями миллионов записей.
Готов посмотреть схему, запросы и планы. Возможно, что-то из моих работавших ранее методов подойдет. Для этого нужен некий срез данных, чтобы пробовать, самые частые запросы, которые нужно оптимизировать, рассмотреть разбиение данных на составляющие (возможно, составные ключи спасут ситуацию), возможно, нужно прибегнуть к агрегатным таблицам, что-то еще.
Хотел бы посмотреть на вашу базу и данные в условиях, приближенных к боевым.
Для своего проекта на выросших данных достигал увеличения скорости запросов до 100 раз, зная всю их статистику и методы заполнения таблиц.
-
привет.
на одном из моих проектов для заказчика я делал партицирование таблиц, что дало существенный прирост производительности для селектов...
вы в данном направлении не думали?
-
привіт
тут і справді потрібен полігон для тестів....
варіантів є декілька, від оптимізвції структури самої БД і до підбору параметрів самої СУБД...
конфіденційність інформації на совісті виконаців, звичайно... або можна модифікувати дані, які не беруть прямої участі у запитах
готовий спробувати, досвід є
-
Актуальные фриланс-проекты в категории Базы данных и SQL
CRM система для ЖД ЛогистикиСоздание CRm системы для Логистической компании в основном ЖД перевозки и автотранспорт , 1) Фин отчётность 2) обрабатывания Заявки 3) контрагенты 4) автоматическое выдача инвойсов актов по закрытию , можно сделать упращенную систему 1С-а ниже… Базы данных и SQL, Управление клиентами и CRM ∙ 7 часов 21 минута назад ∙ 25 ставок |
Устранить проблему неполного импорта данных из Excel-файлов спецификаций Новой Почты в 1С:
2000 UAH
Цель: Есть обработка в 1с по загрузке спецификации Новой почти. По непонятнім причинам перестало подгружать некоторіе табличніе данніе Нужно найти причину и Устранить проблему неполного импорта данных из Excel-файлов спецификаций Новой Почты в 1С: Малый Бизнес. Текущее… Администрирование систем и сетей, Базы данных и SQL ∙ 3 дня 2 часа назад ∙ 16 ставок |
Система учета, планирования и продажи для грибной фермы
27 000 UAH
Это полный, финальный текст Технического задания (ТЗ). Он объединяет все ваши требования: 16 камер, 20 контрагентов, расписание по дням, учет тары, расчет рентабельности и обязательное деление на три сорта грибов. Вы можете полностью скопировать этот текст и отправлять… Базы данных и SQL, Управление клиентами и CRM ∙ 5 дней 6 часов назад ∙ 56 ставок |
Внешний отчет 1С 8.3 — прогноз остатков товаров
1000 UAH
Нужен внешний отчет (.erf) для 1С:Предприятие 8.3 (конфигурация уточняется). Что должно делать: Извлекать остатки товаров из базы Анализировать историю продаж за последние 30 дней Считать средний темп продаж по каждому товару Определять через сколько дней товар закончится… Базы данных и SQL, Управление клиентами и CRM ∙ 5 дней 6 часов назад ∙ 13 ставок |
Аудит безопасности веб-приложения и базы данных для пользовательской CRM — специалист по BaaS / Database-as-API (пентест)Обзор проекта Мы управляем индивидуально разработанной платформой управления взаимоотношениями с клиентами (CRM), которая обслуживает два сервисных бизнеса на одной системе. Это современное веб-приложение на JavaScript, поддерживаемое базой данных как сервис (BaaS) и развернутое… Базы данных и SQL, Тестирование и QA ∙ 5 дней 19 часов назад ∙ 10 ставок |