Re: Make printtup a bit faster - Mailing list pgsql-hackers
| From | Andy Fan |
|---|---|
| Subject | Re: Make printtup a bit faster |
| Date | |
| Msg-id | 87ik81p7c0.fsf@163.com Whole thread |
| In response to | Re: Make printtup a bit faster (Andy Fan <zhihuifan1213@163.com>) |
| List | pgsql-hackers |
Andy Fan <zhihuifan1213@163.com> writes: Hi, > Andres Freund <andres@anarazel.de> writes: >> Here's a very rough prototype for how it could look like. This clearly needs >> more helpers that I introduced, but I thought this should be enough to show >> the idea. > > Yes, so optional context is really elegant. Thanks for sharing! I continue to use optional context as the way for this optimize. Here is the result: Port 7432 is the optimized version and port 7433 is the master. We can see the noticeable improvement. (feature_data-va1)> PGBENCH_RESULT_FORMAT=binary ./run.sh 7432 7433 transactions=1000 database=postgres clients=1 jobs=1 protocol=extended result_format=binary pgbench=./src/bin/pgbench/pgbench script port latency_ms tps lat_ratio tps_ratio int2_bench.sql 7432 3.419 292.476681 - - int2_bench.sql 7433 4.399 227.311939 1.287 0.777 int4_bench.sql 7432 3.519 284.153068 - - int4_bench.sql 7433 4.487 222.853492 1.275 0.784 int8_bench.sql 7432 4.525 220.970547 - - int8_bench.sql 7433 4.574 218.632615 1.011 0.989 float4_bench.sql 7432 3.663 273.008770 - - float4_bench.sql 7433 4.660 214.610005 1.272 0.786 float8_bench.sql 7432 3.775 264.907820 - - float8_bench.sql 7433 4.798 208.409012 1.271 0.787 numeric_bench.sql 7432 5.715 174.968484 - - numeric_bench.sql 7433 6.628 150.879014 1.160 0.862 text_bench.sql 7432 4.249 235.374976 - - text_bench.sql 7433 5.275 189.576982 1.241 0.805 date_bench.sql 7432 4.870 205.342604 - - date_bench.sql 7433 5.010 199.599045 1.029 0.972 time_bench.sql 7432 4.018 248.861954 - - time_bench.sql 7433 5.114 195.555072 1.273 0.786 timestamp_bench.sql 7432 4.179 239.273546 - - timestamp_bench.sql 7433 5.194 192.526840 1.243 0.805 timestamptz_bench.sql 7432 4.285 233.351970 - - timestamptz_bench.sql 7433 5.264 189.958959 1.228 0.814 (feature_data-va1)> PGBENCH_RESULT_FORMAT=text ./run.sh 7432 7433 transactions=1000 database=postgres clients=1 jobs=1 protocol=extended result_format=text pgbench=./src/bin/pgbench/pgbench script port latency_ms tps lat_ratio tps_ratio int2_bench.sql 7432 3.643 274.498587 - - int2_bench.sql 7433 4.461 224.154031 1.225 0.817 int4_bench.sql 7432 3.684 271.442388 - - int4_bench.sql 7433 4.482 223.111396 1.217 0.822 int8_bench.sql 7432 3.839 260.464961 - - int8_bench.sql 7433 4.878 204.981207 1.271 0.787 float4_bench.sql 7432 5.482 182.425027 - - float4_bench.sql 7433 5.977 167.320695 1.090 0.917 float8_bench.sql 7432 6.596 151.607586 - - float8_bench.sql 7433 7.116 140.535931 1.079 0.927 numeric_bench.sql 7432 6.762 147.878199 - - numeric_bench.sql 7433 6.830 146.411705 1.010 0.990 text_bench.sql 7432 4.271 234.110510 - - text_bench.sql 7433 4.904 203.915171 1.148 0.871 date_bench.sql 7432 5.473 182.707235 - - date_bench.sql 7433 6.397 156.323668 1.169 0.856 time_bench.sql 7432 4.903 203.953267 - - time_bench.sql 7433 5.939 168.389232 1.211 0.826 timestamp_bench.sql 7432 6.300 158.732981 - - timestamp_bench.sql 7433 7.244 138.038000 1.150 0.870 timestamptz_bench.sql 7432 8.464 118.152459 - - timestamptz_bench.sql 7433 9.370 106.724987 1.107 0.903 Patches and test scripts are attached. Patch 001 and 002 comes from Andres, patch 003 uses the same way to optimize more data type and some helper function and a bugfix for binary format. patch 004 make pgbench support binary format, just for test purpose. I also attached the test scripts I used in test.tar.gz. -- Best Regards Andy Fan
Attachment
pgsql-hackers by date: