数据仓库服务 GAUSSDB(DWS)-GaussDB(DWS) 3.0 存算分离使用建议及性能优化:关于磁盘缓存

时间:2024-09-30 14:27:29

关于磁盘缓存

DWS会把经常访问的数据缓存到EVS本地磁盘,以减少OBS直读次数,加速查询性能。磁盘缓存只在DN计算节点上存在,协调节点CN上不存在。

缓存大小

集群默认的缓存大小(disk_cache_max_size)配置为:EVS容量的1/3。

EVS容量默认划分是:1/3 * 2(副本)存储本地持久化的数据(如:列存索引,行存表,本地列存表),另外1/3给缓存用。DWS的索引不同于Redshift,Redshift索引只是一个优化器提示,没有实体的索引数据,DWS的索引类似Oracle,会实际存储索引数据。

如果列存表没有创建索引,则可适当调大缓存的大小,即通过DWS管理控制台调大disk_cache_max_size

缓存状态

用户查询数据时,会优先到Disk Cache中查看数据是否已存在于本地磁盘,如果不存在则再去OBS读取数据,同时将数据缓存到本地磁盘,下次再读取这段数据时,即可在本地磁盘中读取到。使用Disk Cache可显著提升OBS数据的查询速度。

Disk Cache会默认使用主备两块硬盘作为缓存介质,通过查询以下参数查看相关信息:

通过查询视图pgxc_disk_cache_all_stats可以查看当前缓存的命中率以及各个DN磁盘的使用大小情况:

图2 pgxc_disk_cache_all_stats查询结果

缓存双写

开启缓存双写可以提升首次查询数据的性能,即用户在写数据到远端OBS的同时,将数据也写到本地Disk Cache上。当第一次读取数据时,可显著提升读取效率。用户可通过disk_cache_dual_write_option来设置是否开启缓存双写,参数包含三个设置选项:

  • none:表示不开启缓存双写。
  • hstore_only(默认值):表示只对hstore opt表,在delta merge时才开启缓存双写。
  • all:表示对普通v3表和hstore opt表都开启缓存双写。

缓存清理

通过函数pgxc_clear_disk_cache()可以将所有的Disk Cache清空

support.huaweicloud.com/bestpractice-dws/dws_05_0027.html