1.8.1 cache 配置

1.8.1.1 dble的cache使用

dble的cache使用有如下两类:

  • SQLRouteCache:从前端连接收到的SQL以及对应的路由结果 内容: schema_user_SQL -> 具体路由结果RouteResult
  • ER_SQL2PARENTID:父子表辅助查询SQL以及对应的路由结果。在插入ER子表的时候需要根据子表joinColumn(父表parentColumn)计算它应该插入的结点,所以需要辅助路由来查询,然后将辅助路由及对应的结果缓存下来以备下次查询。内容为:schema:select * from 父表 where parentKey = (value of joinColumn) -> 对应数据shardingNode

1.8.1.2 dble的cache实现

dble的cache实现有如下几种:

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

1.8.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

1.8.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. default缓存用于缓存没有为其指定特定缓存的表的分区键值到数据所在节点的映射。

1.8.1.5 注意事项

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

results matching ""

    No results matching ""