
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
19.11.2018, 10:32
|
|||
|---|---|---|---|
|
|||
Запрос не выполняется за долгое время. |
|||
|
#18+
Всем привет! Имеется таблица 17 млн записей (3,5 Gb), возникли проблемы с выборкой по этой таблице. Суть вот в чем, данный запрос отрабатывает приемлемо быстро, около 1 сек. SELECT count(DISTINCT(card)) FROM `visits_razdel` WHERE card != 0 AND cat IN ('cat_1','cat_2','cat_3','cat_4','cat_5','cat_6','cat_7','cat_8','cat_9') AND `date_short` >= '2018-10-18' AND `date_short` < '2018-11-16' Но при добавлении любой десятой категории в условие запрос начинает выполнение и дождаться его результата не получается, приходится прерывать выполнение. Складывается впечатление что не хватает буфера для выполнения запроса. К сожалению конфигурировать настройки сервера еще не приходилось и даже поиграться с настройками достаточно сложно т.к. сервер удаленный и все настройки выполняются сторонними администраторами хостинга. Подскажите в какой области копать. По поисковику упоминается важность параметра innodb buffer pool size, сейчас его значение 2 Гб, что при таблице в 3,5 Гб явно мало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.11.2018, 12:17
|
|||
|---|---|---|---|
Запрос не выполняется за долгое время. |
|||
|
#18+
Показывайте DDL таблицы, запросы и планы обоих случаев - быстрого и медленного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.11.2018, 13:58
|
|||
|---|---|---|---|
|
|||
Запрос не выполняется за долгое время. |
|||
|
#18+
Структура таблицы Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Запрос который прерывал спустя 2 минуты выполнения: Код: sql 1. 2. 3. 4. Код: plaintext 1. Запрос который отрабатывает за 1 секунду, в нем указано на одну категорию меньше чем в верхнем запросе: Код: sql 1. 2. 3. 4. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.11.2018, 14:00
|
|||
|---|---|---|---|
Запрос не выполняется за долгое время. |
|||
|
#18+
alsudnik, Форматирование смогу поправить только вечером, но даже так видно, что используется другой индекс. Попробуйте пересобрать статистику по таблице или явно указать в запросе какой индекс использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.11.2018, 14:51
|
|||
|---|---|---|---|
|
|||
Запрос не выполняется за долгое время. |
|||
|
#18+
miksoft, Спасибо вам за подсказку, при явном указании индекса test тяжелый запрос тоже выполнился очень быстро. Огорчает лишь то что данный составной индекс создавался для решения конкретно этой задачи. А задач может быть множество, вытянуть данные по разделу, категории, бренду, характеристикам, различные вариации раздел + бренд, категория + бренд, раздел + бренд + характеристика и тд. Как поступают в этом случае? И может подскажете на какие параметры сервера все же стоит обратить внимание для оптимизации, тот же innodb buffer pool size с 2Гб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.11.2018, 20:30
|
|||
|---|---|---|---|
Запрос не выполняется за долгое время. |
|||
|
#18+
alsudnik Код: sql 1. Кстати, использовать строковые идентификаторы групп не выглядит хорошим решением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.11.2018, 20:33
|
|||
|---|---|---|---|
Запрос не выполняется за долгое время. |
|||
|
#18+
alsudnikА задач может быть множество, вытянуть данные по разделу, категории, бренду, характеристикам, различные вариации раздел + бренд, категория + бренд, раздел + бренд + характеристика и тд. Как поступают в этом случае?По-разному. Вообще этот вопрос надо задавать архитектору БД. Бывают разные варианты: как ваш, с кучей полей и индексов на них EAV фасетные идексы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.11.2018, 20:40
|
|||
|---|---|---|---|
Запрос не выполняется за долгое время. |
|||
|
#18+
alsudnikИ может подскажете на какие параметры сервера все же стоит обратить внимание для оптимизации, тот же innodb buffer pool size с 2Гб.Буферный пул InnoDB в идеале должен вмещать все таблицы и индексы с запасом в 5-10%. На практике обычно достаточно, если в него влезают все "горячие" (которые часто читаются) фрагменты таблиц и индексов. Кроме увеличения буферного пула помогает и обратное действие - уменьшение объема данных. В данном случае индентификаторы групп явно имеет смысл заменить на числовые, тогда хватит 2-4 байт. Да и вообще все varchar-ы вызывают сомнение в этой таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&tablet=1&tid=1829468]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
| others: | 11ms |
| total: | 144ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...