| From: | Fabien COELHO <coelho(at)cri(dot)ensmp(dot)fr> |
|---|---|
| To: | PostgreSQL Developers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
| Subject: | pgbench - add pseudo-random permutation function |
| Date: | 2018-07-28 14:03:49 |
| Message-ID: | alpine.DEB.2.21.1807280944370.5142@lancre |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Hello,
This patch adds a pseudo-random permutation function to pgbench. It allows
to mix non uniform random keys to avoid trivial correlations between
neighboring values, hence between pages.
The function is a simplistic form of encryption adapted to any size, using
a few iterations of scramble and scatter phases. The result is not
cryptographically convincing, nor even statistically, but it is quite
inexpensive and achieves the desired result. A computation costs 0.22 µs
per call on my laptop, about three times the cost of a simple function.
Alternative designs, such as iterating over an actual encryption function
or using some sbox, would lead to much more costly solutions and complex
code.
I also join a few scripts I used for testing.
--
Fabien.
| Attachment | Content-Type | Size |
|---|---|---|
| pgbench-prp-func-1.patch | text/plain | 11.1 KB |
| prp_init.sql | application/x-sql | 245 bytes |
| prp_analyse.sql | application/x-sql | 264 bytes |
| prp_gen_vals.sql | application/x-sql | 348 bytes |
| prp_test_2.sql | application/x-sql | 243 bytes |
| prp_test_3.sql | application/x-sql | 245 bytes |
| prp_test_4.sql | application/x-sql | 284 bytes |
| prp_test_5.sql | application/x-sql | 324 bytes |
| prp_test_6.sql | application/x-sql | 381 bytes |
| prp_test_n.sql | application/x-sql | 274 bytes |
| prp_perf.sql | application/x-sql | 303 bytes |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Ioseph Kim | 2018-07-28 14:56:36 | modify: request for new parameter for disable promote (slave only mode) |
| Previous Message | Fabien COELHO | 2018-07-28 13:44:21 | Re: Removing useless \. at the end of copy in pgbench |