aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/transam/clog.c
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2024-02-06 10:54:10 +0100
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2024-02-06 10:54:10 +0100
commitd172b717c6f436738cc8383a4e9f611ae227fd93 (patch)
tree9e0534de49aefc6ea176cf6e8c963a25cd0aa55c /src/backend/access/transam/clog.c
parentb83033c3cff556d520281aaec399e47b4f11edbe (diff)
downloadpostgresql-d172b717c6f436738cc8383a4e9f611ae227fd93.tar.gz
postgresql-d172b717c6f436738cc8383a4e9f611ae227fd93.zip
Use atomic access for SlruShared->latest_page_number
The new concurrency model proposed for slru.c to improve performance does not include any single lock that would coordinate processes doing concurrent reads/writes on SlruShared->latest_page_number. We can instead use atomic reads and writes for that variable. Author: Dilip Kumar <dilipbalaut@gmail.com> Reviewed-by: Andrey M. Borodin <x4mmm@yandex-team.ru> Discussion: https://postgr.es/m/CAFiTN-vzDvNz=ExGXz6gdyjtzGixKSqs0mKHMmaQ8sOSEFZ33A@mail.gmail.com
Diffstat (limited to 'src/backend/access/transam/clog.c')
-rw-r--r--src/backend/access/transam/clog.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/src/backend/access/transam/clog.c b/src/backend/access/transam/clog.c
index f6e7da7ffc9..06fc2989bab 100644
--- a/src/backend/access/transam/clog.c
+++ b/src/backend/access/transam/clog.c
@@ -766,14 +766,10 @@ StartupCLOG(void)
TransactionId xid = XidFromFullTransactionId(TransamVariables->nextXid);
int64 pageno = TransactionIdToPage(xid);
- LWLockAcquire(XactSLRULock, LW_EXCLUSIVE);
-
/*
* Initialize our idea of the latest page number.
*/
- XactCtl->shared->latest_page_number = pageno;
-
- LWLockRelease(XactSLRULock);
+ pg_atomic_write_u64(&XactCtl->shared->latest_page_number, pageno);
}
/*