|
Оптимизация (курсор и динамический sql)
|
|||
---|---|---|---|
#18+
Добрый день пишу практически первый раз:) можно ли ускорить работу функции. Код: 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. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2018, 09:27 |
|
Оптимизация (курсор и динамический sql)
|
|||
---|---|---|---|
#18+
starry07, Так вы сначала найдите что тормозит. Сколько оно времени занимает и дальше уже задавайте вопрсы. А гадать до бесконечности можно иначе. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru [/quot] ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2018, 10:06 |
|
Оптимизация (курсор и динамический sql)
|
|||
---|---|---|---|
#18+
Maxim Boguk, tablenamefor = 1000 записей 1. Тест курсор перебор в цикле Result (cost=0.00..0.26 rows=1 width=4) (actual time=1992.710..1992.711 rows=1 loops=1) Planning time: 0.034 ms Execution time: 1993.686 ms (3 rows) 2. Тест с вычислением (1е из четырех) без insert и update Result (cost=0.00..0.26 rows=1 width=4) (actual time=36424.263..36424.263 rows=1 loops=1) Planning time: 0.038 ms Execution time: 36426.690 ms (3 rows) 3. 2. Тест с вычислением (1,2 из четырех) без insert и update Result (cost=0.00..0.26 rows=1 width=4) (actual time=55419.014..55419.014 rows=1 loops=1) Planning time: 0.037 ms Execution time: 55421.158 ms (3 rows) 3. Тест с вычислениями без insert и update Result (cost=0.00..0.26 rows=1 width=4) (actual time=93319.081..93319.081 rows=1 loops=1) Planning time: 0.035 ms Execution time: 93321.916 ms (3 rows) 4. Тест итоговый Result (cost=0.00..0.26 rows=1 width=4) (actual time=92150.946..92150.947 rows=1 loops=1) Planning time: 0.039 ms Execution time: 92153.387 ms (3 rows) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2018, 11:09 |
|
Оптимизация (курсор и динамический sql)
|
|||
---|---|---|---|
#18+
начал копать в сторону PREPARE но пока не пойму как переделать ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2018, 13:31 |
|
Оптимизация (курсор и динамический sql)
|
|||
---|---|---|---|
#18+
starry07начал копать в сторону PREPARE но пока не пойму как переделать prepare не будет работать в pl/pgsql т.е. это путь не туда. Надо смотреть индивидуальные запросы и изучать почему они так долго работают. Может индексов не хватает. PS: включите track_io_timing и делайте explain (analyze, costs, buffers, timing) чтобы проверить а не диски ли у вас тормозят. Так как если диски то надо диски чинить а не хранимку. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru [/quot] ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2018, 14:28 |
|
Оптимизация (курсор и динамический sql)
|
|||
---|---|---|---|
#18+
Maxim Bogukstarry07начал копать в сторону PREPARE но пока не пойму как переделать prepare не будет работать в pl/pgsql execute 'prepare ....'; => execute 'execute ....' таки будут. но в данном случае пользы с гулькин шиш. .но придумать случай скажем партиечек с массовым исполнением динавмо--препареда удавалось Maxim Bogukт.е. это путь не туда. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2018, 15:19 |
|
Оптимизация (курсор и динамический sql)
|
|||
---|---|---|---|
#18+
спасибо за наводку) как то криво создал индексы, пересоздал в цикле Код: plaintext
Result (cost=0.00..0.26 rows=1 width=4) (actual time=51686.846..51686.847 rows=1 loops=1) Buffers: shared hit=1145979 read=900146 dirtied=91 written=21 I/O Timings: read=34651.877 write=2.984 Planning time: 0.072 ms Execution time: 51690.967 ms (5 rows) это обновляемые данные буду частично пересоздавать индексы в зависимости от заданного интервала времени приближаюсь к истине..., копаю дальше ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2018, 16:19 |
|
Оптимизация (курсор и динамический sql)
|
|||
---|---|---|---|
#18+
starry07спасибо за наводку) как то криво создал индексы, пересоздал в цикле Код: plaintext
Result (cost=0.00..0.26 rows=1 width=4) (actual time=51686.846..51686.847 rows=1 loops=1) Buffers: shared hit=1145979 read=900146 dirtied=91 written=21 I/O Timings: read=34651.877 write=2.984 Planning time: 0.072 ms Execution time: 51690.967 ms (5 rows) это обновляемые данные буду частично пересоздавать индексы в зависимости от заданного интервала времени приближаюсь к истине..., копаю дальше Вы не индексы а бред сделали. Неподходящие под этот запрос в принципе. Вам надо индекс просто по timestamp и тогда будет скорее всего лучше работать. Ну и убрать парные запросы по условию а делать 1 запрос с group by side или через filter подсчитать сразу запросом нужные вам разницы (чтобы 2 раза по таблице не ходить). PS: как вы видите у вас 2/3 времени работы уже уходит на работу с дисками.... :( это оптимизировать куда сложнее. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru [/quot] ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2018, 00:23 |
|
Оптимизация (курсор и динамический sql)
|
|||
---|---|---|---|
#18+
Индекс по timestamp Execution time: 3465.04 ms ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 08:19 |
|
Оптимизация (курсор и динамический sql)
|
|||
---|---|---|---|
#18+
starry07Индекс по timestamp Execution time: 3465.04 ms А вот дальше если еще надо ускорить - тут уже смотреть надо (смотря на что время уходит так как тогда разные действия нужны). -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 10:22 |
|
|
start [/forum/topic.php?fid=53&gotonew=1&tid=1995525]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
12ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 165ms |
0 / 0 |