forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commitf13b208
committed
Add auxiliary lists to GUC data structures for better performance.
The previous patch made addition of new GUCs cheap, but other GUCoperations aren't improved and indeed get a bit slower, becausehash_seq_search() is slower than just scanning a pointer array.However, most performance-critical GUC operations only needto touch a relatively small fraction of the GUCs; especiallyso for AtEOXact_GUC(). We can improve matters at the costof a bit more space by adding dlist or slist links to theGUC data structures. This patch invents lists that track(1) all GUCs with non-default "source";(2) all GUCs with nonempty state stack (implying they'vebeen changed in the current transaction);(3) all GUCs due for reporting to the client.All of guc.c's performance-critical cases can make use of one oranother of these lists to avoid searching the whole hash table.In particular, the stack list means that transaction enddoesn't take time proportional to the number of GUCs, butonly to the number changed in the current transaction.Discussion:https://postgr.es/m/2982579.1662416866@sss.pgh.pa.us1 parent3057465 commitf13b208
2 files changed
+169
-98
lines changed0 commit comments
Comments
(0)