|
|
|
Сильно различное время выполнения запросов через PHPPgAdmin и Doctrine
|
|||
|---|---|---|---|
|
#18+
Столкнулся с проблемой сильно различного времени выполнения запросов через фрэймворк (Symfony + Doctrine для базы) и phppgadmin. Если через PHPPgAdmin запрос выполняется 90мс, то через Symfony он выполняется 30 секунд. В чем тут может быть дело ? Сам запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Parameters: ['77', москва] [Display runnable query] Time: 32969.89 ms В PHPPgAdmin он же выполняется 90мс. Есть один момент, в таблице которую представляет VIEW object_name (это view) используется партиционирование по regioncode. Если из панели Symfony посмотреть QUERY PLAN, то план запроса правильный, но там только EXPLAIN, а не EXPLAIN ANALYZE. Но даже если предположить, что когда запрос выполняется через Symfony партиционирование не учитывается, то это всё равно долго! Без партиционирования с проходом по всем дочерним таблицам (около 90), речь идёт о времени менее 2-х секунд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2012, 22:42 |
|
||
|
Сильно различное время выполнения запросов через PHPPgAdmin и Doctrine
|
|||
|---|---|---|---|
|
#18+
explain + ddl таблиц в студию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 02:19 |
|
||
|
Сильно различное время выполнения запросов через PHPPgAdmin и Doctrine
|
|||
|---|---|---|---|
|
#18+
Вот что показывает QUERY PLAN в Symfony Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Вот что показывает отладчик в Symfony, 135.20мс должен выполняться запрос по предварительной оценке EXPLAIN, что чуть больше чем реальное выполнение запроса. Однако через фрэймворк сам запрос выполняется 30 секунд, как показывает отладчик! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 16:30 |
|
||
|
Сильно различное время выполнения запросов через PHPPgAdmin и Doctrine
|
|||
|---|---|---|---|
|
#18+
Сейчас замерил производительность через PDO, и нашёл уязвимую в плане производительности точку. Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Если параметры (77 и москва) написать прямо в SQL коде запрос отстреливает за 1.4 секунды, это конечно все равно много, но уже ближе к теме! И внимание, если передать параметры через execute, т.е. вот так Код: php 1. 2. 3. 4. То время запроса будет уже 35 секунд! 35! Что тут не так ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 16:51 |
|
||
|
Сильно различное время выполнения запросов через PHPPgAdmin и Doctrine
|
|||
|---|---|---|---|
|
#18+
Я сначала подумал что если передать параметры в execute() то он во что-то их кодирует, но я оставил только 77, а второй параметр убрал. Но различия по времени сохранились! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 16:59 |
|
||
|
Сильно различное время выполнения запросов через PHPPgAdmin и Doctrine
|
|||
|---|---|---|---|
|
#18+
ты планы наконец то покажешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2012, 01:01 |
|
||
|
Сильно различное время выполнения запросов через PHPPgAdmin и Doctrine
|
|||
|---|---|---|---|
|
#18+
Knyzev, Как в продакшене себя ведёт? Проблема сохраняется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2012, 01:46 |
|
||
|
Сильно различное время выполнения запросов через PHPPgAdmin и Doctrine
|
|||
|---|---|---|---|
|
#18+
Спасибо, уже решил проблему. Вот тут описание проблемы http://www.sql.ru/forum/actualthread.aspx?tid=987547 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2012, 01:54 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38061438&tid=1464367]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 354ms |

| 0 / 0 |
