• L
    Move the index readers out of the block cache (#5298) · 1e355842
    Levi Tamasi 提交于
    Summary:
    Currently, when the block cache is used for index blocks as well, it is
    not really the index block that is stored in the cache but an
    IndexReader object. Since this object is not pure data (it has, for
    instance, pointers that might dangle), it's not really sharable. To
    avoid the issues around this, the current code uses a dummy unique cache
    key for each TableReader to store the IndexReader, and erases the
    IndexReader entry when the TableReader is closed. Instead of doing this,
    the new code moves the IndexReader out of the cache altogether. In
    particular, instead of the TableReader owning, or caching/pinning the
    IndexReader based on the customer's settings, the TableReader
    unconditionally owns the IndexReader, which in turn owns/caches/pins
    the index block (which is itself sharable and thus can be safely put in
    the cache without any hacks).
    
    Note: the change has two side effects:
    1) Partitions of partitioned indexes no longer affect the read
    amplification statistics.
    2) Eviction statistics for index blocks are temporarily broken. We plan to fix
    this in a separate phase.
    Pull Request resolved: https://github.com/facebook/rocksdb/pull/5298
    
    Differential Revision: D15303203
    
    Pulled By: ltamasi
    
    fbshipit-source-id: 935a69ba59d87d5e44f42e2310619b790c366e47
    1e355842
可在Tags中查看这些版本中当前仓库的状态.
HISTORY.md 79.2 KB