| От | Atsushi Ogawa |
|---|---|
| Тема | Space management for PGresult |
| Дата | |
| Msg-id | 613787150511222321u75c657c5i@mail.gmail.com обсуждение исходный текст |
| Ответы |
Re: Space management for PGresult
Re: Space management for PGresult |
| Список | pgsql-patches |
In space management for PGresult of libpq, the block size of PGresult is always PGRESULT_DATA_BLOCKSIZE(2048bytes). Therefore, when a large result of query is received, malloc is executed many times. My proposal is to enlarge the size of the block whenever the block is allocated. The size of first block is PGRESULT_DATA_BLOCKSIZE. And the size of the following blocks will be doubled until it reaches PGRESULT_MAX_DATA_BLOCKSIZE. PGRESULT_MAX_DATA_BLOCKSIZE is new constants. I think that 2Mbytes is good enough for this constants. The test result is the following: Test SQL: select * from accounts; (It is pgbench's table. scale factor is 10.) The number of malloc calls at pqResultAlloc: 8.1.0 : 80542 patched: 86 Execution time: 8.1.0 : 6.80 sec patched: 6.73 sec regards, --- Atsushi Ogawa
В списке pgsql-patches по дате отправления:
Сайт использует файлы cookie для корректной работы и повышения удобства. Нажимая кнопку «Принять» или продолжая пользоваться сайтом, вы соглашаетесь на их использование в соответствии с Политикой в отношении обработки cookie ООО «ППГ», в том числе на передачу данных из файлов cookie сторонним статистическим и рекламным службам. Вы можете управлять настройками cookie через параметры вашего браузера