FastScan

    警告

    该功能目前是实验性功能,其形式和使用方法可能会在未来版本中发生变化。

    本文档介绍通过使用 FastScan 来加速 Online Analytical Processing (OLAP) 场景中查询的方法。

    某些 OLAP 对查询结果精度可以容忍一定误差。如果对查询性能有更高要求,可以在 session 级别或 global 级别开启 FastScan 功能,你可以通过修改变量 的值来选择是否启用 FastScan 功能。

    默认情况下,session 和 global 级别的变量 tiflash_fastscan=OFF,即没有开启 FastScan 功能。你可以通过以下语句来查看对应的变量信息。

    1. +------------------+-------+
    2. | Variable_name | Value |
    3. +------------------+-------+
    4. +------------------+-------+
    1. +------------------+-------+
    2. | Variable_name | Value |
    3. +------------------+-------+

    变量 tiflash_fastscan 支持 session 级别和 global 级别的修改。如果需要在当前 session 中启用 FastScan 功能,可以通过以下语句设置:

    可以用下面语句禁用 FastScan:

    实现机制

    TiFlash 存储层的数据主要存放在 Delta 层和 Stable 层。

    在默认状态下(即未开启 FastScan 功能),TableScan 算子过程整体包括了以下步骤:

    1. Read data:在 Delta 层和 Stable 层分别建立数据流,进行各自数据的读取。
    2. Sort Merge:将步骤 1 中建立的数据流进行合并,并且将数据按照 (handle, version) 顺序排列返回。
    3. Range Filter:根据读取范围限制,对步骤 2 中的数据进行过滤筛选并返回。
    4. MVCC + Column Filter:对步骤 3 中的数据进行 MVCC 过滤,同时过滤掉不需要的列并返回。