访问计划缓存

    目前 SequoiaDB 提供多个访问计划的缓存级别,可以通过 SequoiaDB 的 —plancachelevel 参数进行设置:

    没有使用缓存。

    使用缓存,匹配符必须完全匹配才可重用。

    示例

    使用缓存,匹配符经过排序、剪枝、合并后一致。

    示例

    查询 db.foo.bar.find( { a : { $gt : 100 }, b : { $et : 'a' } } )db.foo.bar.find( { b : { $et : 'a' }, a : { $gt : 100 } } ) 可以共享访问计划

    使用缓存,匹配符经过参数化后一致。

    示例

    • 参数化:{ a : { $gt : { $param : 0, $ctype : 10 } }, { b : { $et : { $param : 1, $ctype : 15 } }
    • 参数:[ 100, 'a' ]
    • $ctype 为参数的,整数是 10,字符串是 15

    使用缓存,匹配符经过参数化后一致,某些操作符可以重用:$gt 和 $gte,$lt 和 $lte

    示例

    查询 db.foo.bar.find( { a : { $gt : 100 } } )db.foo.bar.find( { a : { $gte : 200 } } ) 可以共享访问计划

    • 参数化:{ a : { $gt : { $param : [ 0, 1 ], $ctype : 10 } }
    • 参数: 和 [ 200, true ]
    • $param 为参数在参数列表中的位置,及操作符本身的配置(生成的参数表示是否需要相等比较)

    访问计划缓存快照

    访问计划缓存快照 SDB_SNAP_ACCESSPLANS 列出数据库中缓存的访问计划的信息。