[kudu-CR](branch-1.6.x) KUDU-2231: sparse column predicate can cause excessive data-block reads
Jean-Daniel Cryans has posted comments on this change. ( http://gerrit.cloudera.org:8080/8902 ) Change subject: KUDU-2231: sparse column predicate can cause excessive data-block reads .. Patch Set 1: Code-Review+2 -- 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: comment Gerrit-Change-Id: I8eb3be4a809f882ccd80c48612099b2071306ff7 Gerrit-Change-Number: 8902 Gerrit-PatchSet: 1 Gerrit-Owner: Dan BurkertGerrit-Reviewer: Jean-Daniel Cryans Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Todd Lipcon Gerrit-Comment-Date: Fri, 22 Dec 2017 20:08:20 + Gerrit-HasComments: No
[kudu-CR](branch-1.6.x) KUDU-2231: sparse column predicate can cause excessive data-block reads
Jean-Daniel Cryans has submitted this change and it was merged. ( 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(cherry picked from commit 36ecb300901daf4006fae0c9be5657f2f6127233) Reviewed-on: http://gerrit.cloudera.org:8080/8902 Reviewed-by: Jean-Daniel Cryans --- M src/kudu/cfile/cfile_reader.cc M src/kudu/tablet/tablet-pushdown-test.cc 2 files changed, 107 insertions(+), 24 deletions(-) Approvals: Kudu Jenkins: Verified Jean-Daniel Cryans: Looks good to me, approved -- 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: merged Gerrit-Change-Id: I8eb3be4a809f882ccd80c48612099b2071306ff7 Gerrit-Change-Number: 8902 Gerrit-PatchSet: 2 Gerrit-Owner: Dan Burkert Gerrit-Reviewer: Jean-Daniel Cryans Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Todd Lipcon
[kudu-CR](branch-1.6.x) KUDU-2231: sparse column predicate can cause excessive data-block reads
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(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