|
|
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
hi all Дано: таблица ts(x int), 95 млн строк. FB в режиме SuperClassic'a. var-1: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. var-2. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Во втором варианте ФБ должен сформировать окно и затолкать во все его строки результат count(*)over() - т.е. выполнить сначала проход по таблице, а затем по "строкам" окна. Статистику манипуляций с окном - её можно где-то увидеть ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 20:05:31 |
|
||
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
Хм. У меня под Windows вот этой строчки в статистике нет Код: plaintext Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 21:48:14 |
|
||
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
ТаблоидСтатистику манипуляций с окном - её можно где-то увидеть ? нет, нельзя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 21:49:08 |
|
||
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисУ меня под Windows вот этой строчки в статистике нетДык переходи быстрее на линух, тут гораздо больше инфы выдается! :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 22:35:08 |
|
||
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
dimitrТаблоидСтатистику манипуляций с окном - её можно где-то увидеть ?нет, нельзяЛадно. Но почему такое различие во времени ? Окно не влезло в память (TempCacheLimit ?) и он его засвопил, или причина в другом ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 22:38:24 |
|
||
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисУ меня под Windows вот этой строчки в статистике нет Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 23:21:53 |
|
||
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
hvlad, раз так то не особо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 23:34:17 |
|
||
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
ТаблоидНо почему такое различие во времени ? Окно не влезло в память (TempCacheLimit ?) и он его засвопил, или причина в другом ? а как 800МБ могло влезть в TempCacheLimit? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 08:48:42 |
|
||
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
dimitrТаблоидНо почему такое различие во времени ? Окно не влезло в память (TempCacheLimit ?) и он его засвопил, или причина в другом ? а как 800МБ могло влезть в TempCacheLimit? :-)Что-то не взлетает каменный цветок. Вот статистика при дефолтном TempCacheLimit (у мну Super Classic, так что это будет 8М): 294" Код: plaintext 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. 37. 38. 39. А вот что происходит при TempCacheLimit = 1024M: 446" Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 12:42:58 |
|
||
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
А нельзя ли в статистике добавить насколько заполнен этот TempCache? Тогда было бы понятно попадают ли сортировки, хэш таблицы или материализованные таблицы в ОП или идут на диск. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 12:56:01 |
|
||
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
Для tempCacheLimit = 768M результат тот же, что для 1024М. Для 384М - около 380 сек. Есть смутное сомнение, что временные данные для over()-функций храняется вообще не в TCL, а в какой-то области, размер которой уменьшается при увеличении TCL. Ибо увеличение TCL не просто бестолку, а приводит к ухудшению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 13:19:18 |
|
||
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, да, это будет в статистике Таблоид, а если TempBlockSize увеличить раз в 10? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 14:30:30 |
|
||
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
dimitrа если TempBlockSize увеличить раз в 10?Время перестало увеличиваться при увеличении TempCacheLimit. Но и не уменьшилось, застряло на одном значении :-( var-1. Код: plaintext 1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. var-2. Код: plaintext 1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 15:23:25 |
|
||
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
ТаблоидНо и не уменьшилось, застряло на одном значении значит, так дорого обходится постоянное копирование записей в/из temp space ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 15:26:59 |
|
||
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
ну и конечно же не надо сравнивать с count(*), сам знаешь почему. count(x) будет честнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 15:28:54 |
|
||
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
dimitrТаблоидНо и не уменьшилось, застряло на одном значениизначит, так дорого обходится постоянное копирование записей в/из temp spaceмда, печалько :( На SS тоже самое, около 285 сек (при TempCacheLimit=1024m, TempBlockSize=10m). А ведь по сути, он должен делать вот это: Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 15:59:32 |
|
||
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
я понял. ему надо более 2.3 Гб для окна, и еще для сортировки 120 Мб. Вот этот скрипт-логгер: Код: plaintext 1. 2. 3. 4. 5. 6. Код: sql 1. следующее: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 2 dimitr: какое макс. значение TempCacheLimit понимает ФБ на 64-разрядной арх-ре ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 16:50:15 |
|
||
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
Поставил TempCacheLimit = 2047M, логгер temp-свопа показал, ес-сно, уменьшение на почти 2 Гб: Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 16:57:55 |
|
||
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
В общем, макс. скорость получилась при: 1) установке TempCacheLimit = 4096M (да, он "понимает" это; fb_rec_buf & fb_sort-файлов не создаётся) 2) переназначению TempDirectories на виртуальный диск tmpfs = /dev/shm емкостью 16Гб При этом получилось: Код: plaintext 1. 2. 3. ЗЫ. Так и не понял: 1) зачем вообще в запросе count(distinct x), что с over() что без, применять сортировку, которая жрёт 120 мегов. Можно ведь просто накапливать разные значения в некоторой структуре типа hashset и выдать затем число её элементов. 2) почему увеличение TempCacheLimit с 2 до 4 Гб приводит к такому уменьшению времени, если времянки всё равно создаются в оперативной памяти, на tmpfs емкостью 16 Гб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 20:24:50 |
|
||
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
Да, и вот еще (из серии "мотай на ус / хозяйке на заметку"). На этой таблице есть два индекса: Код: plaintext 1. 2. Решил сравнить count(distinct x)over() с эквивалентным ему dense_rank()over(order by x)+dense_rank()over(order by x desc)-1. В логе скрипта, смотрящего на появление файлов в /dev/shm, появилось вот это: Код: plaintext 1. 2. 3. 4. 5. На вторую сортировку у него ушло 5.37 гб - при том, что общий размер базы = 5.9 гб, а в таблице 100 млн int-чисел... Многовато жрёт, КМК. Затраты по времени, ес-сно, оказались хуже плинтуса: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 20:50:20 |
|
||
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
ТаблоидМноговато жрёт, КМК там вполне сознательный и необходимый оверхед, причем он фиксирован. Посортируй 10 интов или что еще подлиннее и увидишь это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 22:37:52 |
|
||
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
Таблоидзачем вообще в запросе count(distinct x), что с over() что без, применять сортировку, которая жрёт 120 мегов. Можно ведь просто накапливать разные значения в некоторой структуре типа hashset и выдать затем число её элементов. агрегирование хэшированием в FB пока увы нет (хотя я не уверен что здесь тот случай). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 23:12:55 |
|
||
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, тут вопрос в селективности X. При низкой хеш-таблица или дерево могут быть хороши. А при высокой сортировка переиграет вас в разы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 23:54:32 |
|
||
|
Статистика затрат на манипуляции с окнами OVER()-функций: как её увидеть ?
|
|||
|---|---|---|---|
|
#18+
dimitr, ну так оптимизатор может ведь выбрать оптимальный вариант агрегирования, если соответствующие сведения доступны в статистике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2014, 00:00:59 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=104&tid=1563941]: |
0ms |
get settings: |
7ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
280ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 573ms |

| 0 / 0 |
