On Tue, Jun 27, 2023 at 5:20 PM Masahiko Sawada <sawada.m...@gmail.com> wrote: > > On Fri, Jun 23, 2023 at 6:54 PM John Naylor > <john.nay...@enterprisedb.com> wrote: > > > > > > I wrote: > > > I cleaned up a few things and attached v34 so you can do that if you like. > > > > Of course, "clean" is a relative term. While making a small bit of progress > > working in tidbitmap.c earlier this week, I thought it useful to prototype > > some things in the tidstore, at which point I was reminded it no longer > > compiles because of my recent work. I put in the necessary incantations so > > that the v32 tidstore compiles and passes tests, so here's a patchset for > > that (but no vacuum changes). I thought it was a good time to also condense > > it down to look more similar to previous patches, as a basis for future > > work. > > > > Thank you for updating the patch set. I'll look at updates closely > early next week. >
I've run several benchmarks for v32, where before your recent change starting, and v35 patch. Overall the numbers are better than the previous version. Here is the test result where I used 1-byte value: "select * from bench_load_random(10_000_000)" * v35 radix tree leaves: 192 total in 0 blocks; 0 empty blocks; 0 free (0 chunks); 192 used radix tree node 256: 13697472 total in 205 blocks; 0 empty blocks; 52400 free (25 chunks); 13645072 used radix tree node 125: 86630592 total in 2115 blocks; 0 empty blocks; 7859376 free (6102 chunks); 78771216 used radix tree node 32: 94912 total in 0 blocks; 10 empty blocks; 0 free (0 chunks); 94912 used radix tree node 15: 9269952 total in 1136 blocks; 0 empty blocks; 168 free (1 chunks); 9269784 used radix tree node 3: 1915502784 total in 233826 blocks; 0 empty blocks; 6560 free (164 chunks); 1915496224 used mem_allocated | load_ms ---------------+--------- 2025194752 | 3011 (1 row) * v32 radix tree node 256: 192 total in 0 blocks; 0 empty blocks; 0 free (0 chunks); 192 used radix tree node 256: 13487552 total in 205 blocks; 0 empty blocks; 51600 free (25 chunks); 13435952 used radix tree node 125: 192 total in 0 blocks; 0 empty blocks; 0 free (0 chunks); 192 used radix tree node 125: 86630592 total in 2115 blocks; 0 empty blocks; 7859376 free (6102 chunks); 78771216 used radix tree node 32: 192 total in 0 blocks; 0 empty blocks; 0 free (0 chunks); 192 used radix tree node 32: 94912 total in 0 blocks; 10 empty blocks; 0 free (0 chunks); 94912 used radix tree node 15: 192 total in 0 blocks; 0 empty blocks; 0 free (0 chunks); 192 used radix tree node 15: 9269952 total in 1136 blocks; 0 empty blocks; 168 free (1 chunks); 9269784 used radix tree node 3: 241597002 total in 29499 blocks; 0 empty blocks; 3864 free (161 chunks); 241593138 used radix tree node 3: 1809039552 total in 221696 blocks; 0 empty blocks; 5280 free (110 chunks); 1809034272 used mem_allocated | load_ms ---------------+--------- 2160118410 | 3069 (1 row) As you mentioned, the 1-byte value is embedded into 8 byte so 7 bytes are unused, but we use less memory since we use less slab contexts and save fragmentations. I've also tested some large value cases (e.g. the value is 80-bytes) and got a similar result. Regarding the codes, there are many todo and fixme comments so it seems to me that your recent work is still in-progress. What is the current status? Can I start reviewing the code or should I wait for a while until your recent work completes? Regards, -- Masahiko Sawada Amazon Web Services: https://aws.amazon.com