Hi, all. I wrote a performance report to conclude what I've done so far.
https://docs.google.com/document/d/16A6rfJnQSTkd0SHK-2XzDiLj7aZ5nC189jGPcfVdhMQ/edit?usp=sharing



Three patch are attached. I used the benchmark below to test the performance.
https://github.com/liumx10/pg-bench
It requires golang (>= 1.6) if you want to reproduce the code. 


NOTE:
1. The reason why hash table or skip list didn't improve the performance is that
maintaining the conflict list became slower even though conflict tracking was 
faster.
So far, skip list is the most promising way. But the code is a little tricky.


BTW, if there is a case in which inserting an conflict element is rare but 
conflict checking is common,
my patch may be better. 


2. Reducing contention on global lock has a better performance in this 
evaluation.
But two weeks ago when I used another machine, it has a worse performance. 
It's hard to explain why... 


You can reply directly if you have any questions or comments. 

--

Sincerely


Mengxing Liu






Attachment: HTAB-for-conflict-tracking.patch
Description: Binary data

Attachment: skip-list-for-conflict-tracking.patch
Description: Binary data

Attachment: reduce-contention-on-FinishedListLock.patch
Description: Binary data

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to