GBase 8a集群数据存储统计及脚本设计
作为主要面向大规模数据统计分析场景的GBase 8a集群,很多时候,由于承载业务的复杂性及多样性,其存储的数据量以及表数量是非常庞大的,以笔者的项目经验,有些集群的表数量会达到数十万甚至上百万张,对数据表的定期清理,是集群使用与管理者一项绕不开的任务。
在对集群的数据表进行清理时,除了表名、创建者、创建时间等基础信息外,表的大小以及最近访问时间是另外两项重要的信息。我们可以针对Top N的大表进行针对性清理,快速释放集群存储空间,而表最近访问时间,可以对一些不明用途的表(表太多太杂时,这种情况并不少见),提供重要的清理依据,比如:可以设置规则,最近6个月没有访问记录的表可以进行清理。
目前GBase 8a集群可以通过系统视图performance_schema.tables查询数据表的存储大小,查询方法为:
Select table_schema,table_name,data_storage_size from performance_schema.tables where table_schema = ‘xxx’, table_name = ‘xxx’;
上述方法存在的局限性是一次只能查询一个表,即查询条件必须包含库名和表名,如果想查询全库(查询条件只包含库名),系统是不支持的,查询时会报错:
ERROR-1708:Current Version must specify table_schema and table_name
另外必须考虑的一点,performance_schema.tables作为系统视图,开放给普通用户查询(尤其是大量用户频繁查询),并不明智。
笔者所在项目集群因为用户众多、表规模庞大,数据清理的任务较重,设计了一个表信息统计表,通过统计脚本获取所有表的基本信息及大小信息、最后访问时间,存入该表并开放给普通用户,作为表数据字典及数据清理的参考。下面介绍相关的模型及统计脚本。
表信息统计表:
Tb_space:内容包括库名、表名、创建用户、创建时间、表大小。
Tb_space_x:在Tb_space基础上,扩充了最后访问时间。注:由于最后访问时间的统计,依赖审计日志,非常耗时,且主要是作为参考信息,故将该信息独立设计模型。
统计脚本:
Get_table_space.sh:
统计并生成Tb_space数据,根据参数,可以选择:1、生成库名、表名信息,2:、生成库名、表名、创建用户、创建时间信息,3:生成包括表大小在内的所有信息。
通过系统视图information_schema.tables、gbase.user获取表基础信息,通过performation_schema.tables获取表大小信息。
Get_table_space_x.sh:
统计并生成Tb_space_x数据,以tb_space的表信息为基础,生成表的最后访问时间信息。前提条件是已设置审计日志归档,通过表名关联审计日志表gclusterdb.audit_log_express的table_list字段,获取start_time作为最晚访问时间。
评论
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25044
- 42023-09-25浏览数:18519
- 52020-05-11浏览数:17526