You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by 谢良 <xi...@xiaomi.com> on 2013/01/31 04:59:09 UTC
答复: question about the scanner ordering for gets/scans
IMHO, this sorting is not necessary, to be honest, i had tried to exchange the order of sfScanners&memStoreScanners several days before just out of curiosity, and passed all the test cases:)
Regards,
Liang
________________________________________
发件人: Sergey Shelukhin [sergey@hortonworks.com]
发送时间: 2013年1月31日 8:44
收件人: dev@hbase.apache.org
主题: question about the scanner ordering for gets/scans
Hi. When we build the scanner for scan or get, we make sure to add scanners
in sorted order.
// First the store file scanners
>
> // TODO this used to get the store files in descending order,
> // but now we get them in ascending order, which I think is
> // actually more correct, since memstore get put at the end.
> List<StoreFileScanner> sfScanners = StoreFileScanner
> .getScannersForStoreFiles(storeFilesToScan, cacheBlocks, isGet,
> isCompaction, matcher);
> List<KeyValueScanner> scanners =
> new ArrayList<KeyValueScanner>(sfScanners.size()+1);
> scanners.addAll(sfScanners);
> // Then the memstore scanners
> scanners.addAll(memStoreScanners);
>
I have read the code for scanning/around this area and have a question,
does order of scanners actually matter? It looks like we insert them into
heap structure and seek/peek them all anyway, and compare separately by
seqNum in KeyValueHeap::KVScannerComparator.
Is sorting really needed for this particular place (above code)?