Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Group By замедляет запрос
|
|||
|---|---|---|---|
|
#18+
Есть большой запрос, в котором присутствует группировка group by Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. / Этот запрос выполняется 25 секунд на одном сервере и 4 секунды на другом. Без группировки данный запрос выполняется около 4 секунд на обоих серверах, в чём может быть проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 23:06 |
|
||
|
Group By замедляет запрос
|
|||
|---|---|---|---|
|
#18+
Имеено последний group by убираю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2017, 23:07 |
|
||
|
Group By замедляет запрос
|
|||
|---|---|---|---|
|
#18+
PavelKeИмеено последний group by убираю И получается, что группировка идет фактически по unit_availability_date.unit_id. Таблица unit_availability_date большая. Поэтому 4 секунды - это отработка куска "select unit.id from unit inner join unit_availability_date on unit_availability_date.unit_id = unit.id where (booking_date >= '2017-12-25' AND booking_date <= '2017-12-31') group by unit.id having SUM(unit_availability_date.status_id = 1) = COUNT(*)" в неверном предположении, что между 25 и 31 декабря нет строк в unit_availability_date по полю booking_date, таблица читается один раз. А на другом сервере статистика посвежее, mysql знает, что там есть 25.26.27.28.29.30 - в 6 раз больше данных, чем один заход (31-го декабря строк нет, я так думаю), и поэтому делает 6 заходов в цикле по 4 секунды и 1 секунду соединяет два условия "and unit.id IN ( " - и получаем 24 секунды плюс 1 секунда ровно 25 секунд. Вот такой вот mysql. Не любит он условие IN. Раскручивает в циклы. Делайте 2 inner join по полю unit.id. В соседней теме сегодня это уже обсуждалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 00:39 |
|
||
|
Group By замедляет запрос
|
|||
|---|---|---|---|
|
#18+
Andy_OLAP, а почему разница на разных серверах при одинаковых запросах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 09:52 |
|
||
|
Group By замедляет запрос
|
|||
|---|---|---|---|
|
#18+
PavelKeAndy_OLAP, а почему разница на разных серверах при одинаковых запросах?может потому, что сервера разные? Структуры таблиц и схемы индексации идентичны? Объемы данных соизмеримы? Аппаратная конфигурация серверов совпадает? Конфигурации MySQL одинаковы? План запроса на каждом из серверов смотреть не пробовал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 09:56 |
|
||
|
Group By замедляет запрос
|
|||
|---|---|---|---|
|
#18+
Добрый Э - ЭхPavelKeAndy_OLAP, а почему разница на разных серверах при одинаковых запросах?может потому, что сервера разные? Структуры таблиц и схемы индексации идентичны? Объемы данных соизмеримы? Аппаратная конфигурация серверов совпадает? Конфигурации MySQL одинаковы? План запроса на каждом из серверов смотреть не пробовал? Данные идентичны, структуры так же, тут скорее всего разница в конфигах mysql, но что именно может это вызывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 11:11 |
|
||
|
Group By замедляет запрос
|
|||
|---|---|---|---|
|
#18+
PavelKe тут скорее всего разница в конфигах mysql, но что именно может это вызывать? То, что на одном сервере при нехватки памяти сформировался и попал в кэш один план запросов, на другом сервере - другой. Вот если Вы настроите один в один конфиги, рестартанете серверы, почистите планы запросов, освежите статистику - и Вам выдаст разное время выполнения - тогда нужно будет копать дальше. А пока все довольно логично и непротиворечиво. Это все равно, что выдать 2 работягам лопаты и сказать, что нужно прокопать траншею. Один еще только начал, а второй уже закончил. А секрет в том, что у второго навык работы за экскаватором, рядом стоял на соседней стройке свободный, он договорился за бутылку водки, сел за штурвал и быстро все сделал. А Вы думаете, что он лопатой все это время махал. Понимаете аналогию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 11:55 |
|
||
|
Group By замедляет запрос
|
|||
|---|---|---|---|
|
#18+
Andy_OLAPPavelKe тут скорее всего разница в конфигах mysql, но что именно может это вызывать? То, что на одном сервере при нехватки памяти сформировался и попал в кэш один план запросов, на другом сервере - другой. Вот если Вы настроите один в один конфиги, рестартанете серверы, почистите планы запросов, освежите статистику - и Вам выдаст разное время выполнения - тогда нужно будет копать дальше. А пока все довольно логично и непротиворечиво. Это все равно, что выдать 2 работягам лопаты и сказать, что нужно прокопать траншею. Один еще только начал, а второй уже закончил. А секрет в том, что у второго навык работы за экскаватором, рядом стоял на соседней стройке свободный, он договорился за бутылку водки, сел за штурвал и быстро все сделал. А Вы думаете, что он лопатой все это время махал. Понимаете аналогию? понял, просто я думал, что какой-то конфиг мускуля отвечает за это, типа оставить бутылку на случай экскаватора) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 16:09 |
|
||
|
|

start [/forum/moderation_log.php?user_name=silent9]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 1112ms |
| total: | 1259ms |

| 0 / 0 |
