Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
опять оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Andrey DaeronБыло бы очень интересно посмотреть на результат такого перехода, на сколько стало лучше и за счет чего. Впрочем на ответ из мейллиста Постгреса тоже. Кстати, никто не посоветует нормальной тулзы для мигрирования, переноса данных с Postgres на другие базы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 21:31 |
|
||
|
опять оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
akimovp Andrey DaeronБыло бы очень интересно посмотреть на результат такого перехода, на сколько стало лучше и за счет чего. Впрочем на ответ из мейллиста Постгреса тоже. Кстати, никто не посоветует нормальной тулзы для мигрирования, переноса данных с Postgres на другие базы. EMSовский export - может поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 10:36 |
|
||
|
опять оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
akimovp LeXa NalBatcreate index dealerpayment_agent_paymentid on dealerpayment ( agent, paymentid );Такой индекс pg начинает использовать. Но результат только немного лучше первоначального. Bitmap Heap Scan on dealerpayment comissions1_ - занимает очень много времени. Похоже что он этот индекс только для фильтра agent='xxx' использует pg , а для comissions1_.paymentid=payment0_.id не использует.Что вы имеете в виду? Как индекс может использоваться при соединении двух наборов? При подготовке набора comissions1_ методом bitmapscan индекс dealerpayment_agent_paymentid используется только для фильтрации по agent. Поэтому для выполнения последующего mergejoin требуется sort. Попробуйте выключить bitmapscan: set enable_bitmapscan to off. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 10:59 |
|
||
|
опять оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Кста, есть еще вариант - примутить данные, что бы они не содержали конфиденциальных данных и выложить дамп архыва за пару месяцев, что бы можно было поковыряться большему кол-ву народу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 12:09 |
|
||
|
опять оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Andrey Daeron akimovp Andrey DaeronБыло бы очень интересно посмотреть на результат такого перехода, на сколько стало лучше и за счет чего. Впрочем на ответ из мейллиста Постгреса тоже. Кстати, никто не посоветует нормальной тулзы для мигрирования, переноса данных с Postgres на другие базы. EMSовский export - может поможет. А для линукса что-нить посоветуете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 15:06 |
|
||
|
опять оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat При подготовке набора comissions1_ методом bitmapscan индекс dealerpayment_agent_paymentid используется только для фильтрации по agent. Поэтому для выполнения последующего mergejoin требуется sort. Попробуйте выключить bitmapscan: set enable_bitmapscan to off. Сегодня экспериментировал с Merge Join vs. Hash Join никакой разницы не заметил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 15:28 |
|
||
|
опять оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
akimovpСегодня экспериментировал с Merge Join vs. Hash Join никакой разницы не заметил.Опубликуйте пожалуйста выдачу explain analyze. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 16:37 |
|
||
|
опять оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat akimovpСегодня экспериментировал с Merge Join vs. Hash Join никакой разницы не заметил.Опубликуйте пожалуйста выдачу explain analyze. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 16:59 |
|
||
|
опять оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
akimovp Код: plaintext 1. 2. 3. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 17:35 |
|
||
|
опять оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat akimovp Код: plaintext 1. 2. 3. Код: plaintext 1. Я не знаю как заставить Postgresql его использовать в этом SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 20:09 |
|
||
|
опять оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
akimovp LeXa NalBatВ этих планах не используется индекс по dealerpayment(agent,paymentid). Попробуйте добиться такого плана.Я не знаю как заставить Postgresql его использовать в этом SQL.Удалите все индексы на таблицу dealerpayment кроме (agent,paymentid). Далее с помощью команд set enable_... to off/on. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2007, 09:49 |
|
||
|
опять оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat akimovp LeXa NalBatВ этих планах не используется индекс по dealerpayment(agent,paymentid). Попробуйте добиться такого плана.Я не знаю как заставить Postgresql его использовать в этом SQL.Удалите все индексы на таблицу dealerpayment кроме (agent,paymentid). Далее с помощью команд set enable_... to off/on. Для HashJoin он все равно этот индекс не хочет использовать Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Для MergeJoin использует - но результат хужее. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2007, 20:05 |
|
||
|
опять оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
akimovpДля HashJoin он все равно этот индекс не хочет использоватьHashjoin не нужен. akimovpДля MergeJoin использует - но результат хужее.Избавиьтесь в этом плане от bitmapscan-ов: set enable_bitmapscan to off. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2007, 11:02 |
|
||
|
опять оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat akimovpДля HashJoin он все равно этот индекс не хочет использоватьHashjoin не нужен. akimovpДля MergeJoin использует - но результат хужее.Избавиьтесь в этом плане от bitmapscan-ов: set enable_bitmapscan to off. если сделать set enable_bitmapscan = off - тогда он опять не использует этот индекс Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2007, 21:01 |
|
||
|
опять оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
akimovpесли сделать set enable_bitmapscan = off - тогда он опять не использует этот индекс Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2007, 23:59 |
|
||
|
опять оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat akimovpесли сделать set enable_bitmapscan = off - тогда он опять не использует этот индекс Код: plaintext 1. 2. 3. Сейчас помогло, и запрос значительно быстрее выполняется, раза в 2 визуально. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Хотя мне от этого не легче потому что индекс ON dealerpayment USING btree (paymentid) мне тоже нужен для других запросов, где не используется поле agent, а при его создании уже другой план: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2007, 19:44 |
|
||
|
опять оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
akimovpХотя мне от этого не легче потому что индекс ON dealerpayment USING btree (paymentid) мне тоже нужен для других запросов, где не используется поле agent, а при его создании уже другой планПостгрес серьезно ошибается в оценке сложности различных способов сканирования dealerpayment. В идеале отношение предсказания cost_last_row к реальному времени actual_time_last_row должно быть одинаковым для ЛЮБЫХ запросов. Удивительно, что в вашем случае он ошибается очень сильно: 507412.29/1466.032=346 и 40246.59/10335.160=4. :-( Мы боролись с подобной ошибкой (но она составляла не, как у вас, сто раз, а лишь несколько) изменением параметров оптимизатора . Изменение этих параметров влияет на планирование всех запросов, поэтому изменив их, можно "починить" один запрос, но "сломать" другой. ИМХО, требуемые оптимальные значения этих параметров зависят например от того, в каком режиме работает ваша база. Например если она почти целиком лежит в оперативной памяти благодаря кэшированию ос, то надо выбрать одни значения, наоборот если большинство запросов интенсивно дергают данные с hdd, то - совсем другие. У нас установлены значения effective_cache_size = 8192, random_page_cost = 2. Взгляните на темы, в которых упоминается random_page_cost . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2007, 10:29 |
|
||
|
опять оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat akimovpХотя мне от этого не легче потому что индекс ON dealerpayment USING btree (paymentid) мне тоже нужен для других запросов, где не используется поле agent, а при его создании уже другой планПостгрес серьезно ошибается в оценке сложности различных способов сканирования dealerpayment. В идеале отношение предсказания cost_last_row к реальному времени actual_time_last_row должно быть одинаковым для ЛЮБЫХ запросов. Удивительно, что в вашем случае он ошибается очень сильно: 507412.29/1466.032=346 и 40246.59/10335.160=4. :-( Мы боролись с подобной ошибкой (но она составляла не, как у вас, сто раз, а лишь несколько) изменением параметров оптимизатора . Изменение этих параметров влияет на планирование всех запросов, поэтому изменив их, можно "починить" один запрос, но "сломать" другой. ИМХО, требуемые оптимальные значения этих параметров зависят например от того, в каком режиме работает ваша база. Например если она почти целиком лежит в оперативной памяти благодаря кэшированию ос, то надо выбрать одни значения, наоборот если большинство запросов интенсивно дергают данные с hdd, то - совсем другие. У нас установлены значения effective_cache_size = 8192, random_page_cost = 2. Взгляните на темы, в которых упоминается random_page_cost . Спасибо за помощь, но все это напоминает какие-то танцы c бубном, можно потратить на это время изменить что-то в одном месте , настроить более менее один запрос, а потом окажется что в другом месте стало плохо. Сейчас я добился более менее приемлемого результата путем CLUSTER payment по id и dealerpayment по paymentid и еще создал индексы для каждой части даты extract. Ну и естественно каждой ночью VACUUM, CLUSTER, REINDEX. Жду большого увеличения данных и поэтому сейчас буду тратить время не на непредсказуемый tuning postgres а на миграцию и тестирование на других базах. Может кто посоветует стоит ли пробовать InnoDB или еще что-то, или сразу на oracle все пытаться перенести. С последним меня пугает чуство чего-то глобального и сложного и малое знакомство в области администрирования Oracle. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2007, 20:13 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34271307&tid=2005780]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
87ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 265ms |
| total: | 469ms |

| 0 / 0 |
