Dan Burkert has uploaded this change for review. ( http://gerrit.cloudera.org:8080/8902
Change subject: KUDU-2231: sparse column predicate can cause excessive data-block reads ...................................................................... KUDU-2231: sparse column predicate can cause excessive data-block reads When scanning with a sparsely-matching predicate, the CFileIterator can repeatedly materialize non-predicate column blocks multiple times. The result is huge amounts of CPU wasted in block decoding and poor performance. The root cause is that CFileIterator::SeekToOrdinal does not check whether the currently materialized data block contains the ordinal index being seeked to. Instead, it throws away the currently prepared blocks (in CFileIterator::PrepareForNewSeek), and re-materializes the blocks again. This commit is a very targeted fix. Since I've had some time to get familiar with this codepath in the past few days, I've found some things that I think we could improve and simplify in follow-up commits, which I've filed as KUDU-2243. Change-Id: I8eb3be4a809f882ccd80c48612099b2071306ff7 Reviewed-on: http://gerrit.cloudera.org:8080/8869 Tested-by: Kudu Jenkins Reviewed-by: Dan Burkert <danburk...@apache.org> (cherry picked from commit 36ecb300901daf4006fae0c9be5657f2f6127233) --- M src/kudu/cfile/cfile_reader.cc M src/kudu/tablet/tablet-pushdown-test.cc 2 files changed, 107 insertions(+), 24 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/02/8902/1 -- To view, visit http://gerrit.cloudera.org:8080/8902 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: branch-1.6.x Gerrit-MessageType: newchange Gerrit-Change-Id: I8eb3be4a809f882ccd80c48612099b2071306ff7 Gerrit-Change-Number: 8902 Gerrit-PatchSet: 1 Gerrit-Owner: Dan Burkert <danburk...@apache.org>