1.6.1 cache 配置

1.6.1.1 dble的cache使用

dble的cache使用有如下三类:

  • SQLRouteCache:从前端连接收到的SQL以及对应的路由结果 内容: shema_user_SQL -> 具体路由结果RouteResult
  • ER_SQL2PARENTID:父子表辅助查询SQL以及对应的路由结果。在插入ER子表的时候需要根据子表joinKey(父表parentKey)计算它应该插入的结点,所以需要辅助路由来查询,然后将辅助路由及对应的结果缓存下来以备下次查询。内容为:schema:select * from 父表 where parentKey = (value of joinKey) -> 对应数据dataNode
  • TableID2DataNodeCache:表格主键(schema.xml中声明的主键)和对应数据节点 内容 tableName -> primaryKeyValue -> 对应数据dataNode

1.6.1.2 dble的cache实现

dble的cache实现有如下几种:

  • ehcache, 用ehcache缓存作为cache实现。
  • leveldb, 用leveldb数据库作为cache实现。
  • mapdb, 用MapDB数据库引擎作为cache实现。
  • rocksdb,用RocksDB数据库引擎作为cache实现。

1.6.1.3 dble的cache配置

dble的cache配置分为总配置和实现配置。总配置由文件cacheservice.properties进行设定。实现配置由各个实现具体指定,具体详见各个实现的分章节说明。

总配置有如下格式:

设置缓存类型:

factory.cache_type=cache_type

设置分类缓存的具体值,key为缓存池名字,value是类型,最大容量,以及失效时间

A.SQL路由缓存

pool.SQLRouteCache=type,max_size,expire_seconds

B.ER表子表路由缓存

pool.ER_SQL2PARENTID=type,max_size,expire_seconds

C.主键缓存

主键缓存有两种设置方式:

方式1:

设置缺省主键缓存和指定表的主键缓存,未指定的表将共用缺省主键缓存空间:
缺省主键缓存:
layedpool.TableID2DataNodeCache=type,max_size,expire_seconds

指定表的主键缓存的key的格式是用如下格式增加配置表名:

layedpool.TableID2DataNodeCache.`schema`_`table`

举例如下:

layedpool.TableID2DataNodeCache.`schema`_`table`=max_size,expire_seconds

方式2:

只设置指定表的主键缓存,其他表不使用主键缓存 layedpool.TableID2DataNodeCacheType=type

指定表的主键缓存的key的格式是用如下格式增加配置表名:

layedpool.TableID2DataNodeCache.`schema`_`table`

举例如下:

layedpool.TableID2DataNodeCache.`schema`_`table`=max_size,expire_seconds

1.6.1.4 cache配置说明

总配置文件中各配置项说明:

a. 以#开头的行为注释,被忽略。 空行被忽略。

b. factory.cache_type=cache_type是cache的总开关。cache_type指定cache类型,具体可以为:ehcache,leveldb、mapdb 或者rocksdb。如果要用cache功能,必须配置该配置项。这个配置项可以指定多个, 每行仅能指定一个。每一个指定一个cache实现。

例如:

配置,

factory.encache=ehcache
pool.SQLRouteCache=encache,10000,1800
pool.ER_SQL2PARENTID=encache,1000,1800

中的type就必须是ehcache。而配置:

factory.encache=ehcache
factory.leveldb=leveldb
pool.SQLRouteCache=encache,10000,1800
pool.ER_SQL2PARENTID=leveldb,1000,1800

中的type可以为encache或者leveldb。

c. pool.SQLRouteCache=type,max_size,expire_seconds和pool.ER_SQL2PARENTID=type,max_size,expire_seconds分别配置SQLRouteCache和ER_SQL2PARENTID的缓存功能。这两个配置项可以配置也可以不配置, 不配值则不使用相应的缓存功能。type指定缓存类型,必须是已配置的缓存实现类型;max_size指定缓存的最大大小,单位是字节;expire_seconds指定缓存项的生命周期,单位是秒。

d. layedpool.TableID2DataNodeCache=type,max_size,expire_seconds和layedpool.TableID2DataNodeCacheType=type
这是TableID2DataNodeCache缓存配置的两种模式,且这两种配置模式不能共存,仅能指定一种。layedpool.TableID2DataNodeCache=type,max_size,expire_seconds配置模式使用default缓存;layedpool.TableID2DataNodeCacheType=type配置模式使用default缓存。type指定缓存类型,必须是已配置的缓存实现类型;max_size指定缓存的最大大小,单位是字节;expire_seconds指定缓存项的生命周期,单位是秒。

e. default缓存用于缓存没有为其指定特定缓存的表的分区键值到数据所在节点的映射。

f. layedpool.TableID2DataNodeCache.`schema`_`table`=max_size,expire_seconds指定特定表的分区键值到数据所在节点的映射。

schema用实际的库名代换;table用实际的表名代换。max_size指定缓存的最大大小,单位是字节;expire_seconds指定缓存项的生命周期,单位是秒。缓存的实现类型同layedpool.TableID2DataNodeCache=type,max_size,expire_seconds或者layedpool.TableID2DataNodeCacheType=typetype

g. TableID2DataNodeCache缓存也可以不配置, 不配值则不使用此缓存功能。

1.6.1.5 注意事项

  • 使用 RocksDB作为 cache 实现时,需要在dble目录下手工创建 rocksdb 目录,否则dble启动失败。

results matching ""

    No results matching ""