• A
    Add few optimizations in async_io for short scans (#10140) · 8353ae8b
    Akanksha Mahajan 提交于
    Summary:
    This PR adds few optimizations for async_io for shorter scans.
    1.  If async_io is enabled, seek would create FilePrefetchBuffer object to fetch the data asynchronously. However `FilePrefetchbuffer::num_file_reads_` wasn't taken into consideration if it calls Next after Seek and would go for Prefetching.  This PR fixes that and Next will go for prefetching only if `FilePrefetchbuffer::num_file_reads_` is greater than 2 along with if blocks are sequential. This scenario is only for implicit auto readahead.
    2. For seek, when it calls TryReadFromCacheAsync to poll it makes async call as well because TryReadFromCacheAsync flow wasn't changed. So I updated to return after poll instead of further prefetching any data.
    
    Pull Request resolved: https://github.com/facebook/rocksdb/pull/10140
    
    Test Plan:
    1. Added a unit test
                      2. Ran crash_test with async_io = 1 to make sure nothing crashes.
    
    Reviewed By: anand1976
    
    Differential Revision: D37042242
    
    Pulled By: akankshamahajan15
    
    fbshipit-source-id: b8e6b7cb2ee0886f37a8f53951948b9084e8ffda
    8353ae8b
block_based_table_reader.h 32.2 KB