When profiling skiplists, I discovered that reading from variable-length column stores is over 100x slower than row stores for the TokyoCabinet workload:
Profiling shows that is because we do a full scan of the leaf page on every search:
One way to fix this would be to use the same trick we use for row leaf pages: instead of maintaining an array of offsets to cells, keep an array of pointers, some on-page and some off page. Keep the record number in expanded cells and expand the binary search points.
vlcs-read-profile.png (49.8 kB) Michael Cahill, 08/04/2011 12:07 am