pgsql: Improve ResourceOwners' behavior for large numbers of owned obje
От | Tom Lane |
---|---|
Тема | pgsql: Improve ResourceOwners' behavior for large numbers of owned obje |
Дата | |
Msg-id | E1aOA6b-0005U2-Kt@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Improve ResourceOwners' behavior for large numbers of owned objects. The original coding was quite fast so long as objects were always released in reverse order of addition; otherwise, it degenerated into O(N^2) behavior due to searching for the array element to delete. Improve matters by switching to hashed storage when the number of objects of a given type exceeds 64. (The cutover point is open to discussion, of course, but some simple performance testing suggests that hashing has enough overhead to be a loser below there.) Also, refactor resowner.c so that we don't need N copies of the array management code. Since all the resource IDs the code currently needs to deal with are either pointers or integers, it seems sufficient to create a one-size-fits-all infrastructure in which everything is converted to a Datum for storage. Aleksander Alekseev, reviewed by Stas Kelvich, further fixes by me Branch ------ master Details ------- http://git.postgresql.org/pg/commitdiff/cc988fbb0bf60a83b628b5615e6bade5ae9ae6f4 Modified Files -------------- src/backend/access/hash/hashfunc.c | 3 + src/backend/utils/resowner/resowner.c | 955 +++++++++++++++------------------ 2 files changed, 446 insertions(+), 512 deletions(-)
В списке pgsql-committers по дате отправления: