pgsql: Convert pg_restore's ready_list to a priority queue.
От | Nathan Bossart |
---|---|
Тема | pgsql: Convert pg_restore's ready_list to a priority queue. |
Дата | |
Msg-id | E1qiiKr-004pij-NS@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Convert pg_restore's ready_list to a priority queue. Presently, parallel restores spend a lot of time sorting this list so that we pick the largest items first. With many tables, this sorting can become a significant bottleneck. There are a couple of reports from the field about this, and it is easy to reproduce. This commit improves the performance of parallel pg_restore with many tables by converting its ready_list to a priority queue, i.e., a binary heap. We will first try to run the highest priority item, but if it cannot be chosen due to the lock heuristic, we'll do a sequential scan through the heap nodes until we find one that is runnable. This means that we might end up picking an item with a much lower priority. However, we expect that we will typically be able to pick one of the first few items, which should usually have a relatively high priority. Suggested-by: Tom Lane Tested-by: Pierre Ducroquet Reviewed-by: Tom Lane Discussion: https://postgr.es/m/3612876.1689443232%40sss.pgh.pa.us Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/9bfd44bbde4261181bf94738f3b041c629c65a7e Modified Files -------------- src/bin/pg_dump/pg_backup_archiver.c | 198 ++++++++++------------------------- 1 file changed, 58 insertions(+), 140 deletions(-)
В списке pgsql-committers по дате отправления: