语句磁盘空间管控
介绍与语句磁盘空间管控相关的参数,用于限制语句磁盘空间使用。
sql_use_spacelimit
参数说明:限制单个SQL在单个DN上,触发写盘操作时,所有类型写盘文件的总空间大小,管控的空间包括普通表、临时表以及中间结果集落盘占用的空间。系统管理员用户也受该参数限制。
参数类型:USERSET
取值范围:整型,-1~INT_MAX,单位为KB。其中-1表示没有限制。
默认值:配置sql_use_spacelimit为实例所在磁盘空间总容量的10%。
例如,执行语句中配置参数sql_use_spacelimit=100,当出现单DN写盘超过100kB时,DWS会主动终止该query的运行,并提示用户单DN写盘量超阈值。
1 2 |
insert into user1.t1 select * from user2.t1; ERROR: The space used on DN (104 kB) has exceeded the sql use space limit (100 kB). |
建议处理方式:
- 优化语句,减少语句写盘占用空间。
- 如果磁盘空间充足可以适当调大该参数。
temp_file_limit
参数说明:语句执行过程中触发落盘操作时,限制语句中单个线程落盘文件的总空间大小。例如,排序和哈希表使用的临时文件或者游标占用的临时文件。
此设置为会话级别的落盘文件控制。
参数类型:SUSET
取值范围:整型,-1~INT_MAX,单位为KB。其中-1表示没有限制。
默认值:配置temp_file_limit为实例所在磁盘空间总容量的10%。
SQL查询执行时使用的临时表空间不在此限制。
bi_page_reuse_factor
参数说明:行存表批量插入场景下,主备DN使用页复制进行数据同步时,可以复用的旧页面空闲空间的百分比。
参数类型:USERSET
取值范围:整型,0~100,单位为%。其中0表示不对页面进行复用,全部申请新页面。
默认值:70
- 不建议将此值设置为50以下(0除外),如果复用页面的空闲空间较小的话,会使主备DN间传输过多的旧页面数据,从而导致批量插入性能下降。
- 不建议将此值设置为90以上,如果此值设置过高,会导致频繁查询空闲页面,但又无法复用旧页面,得不偿失。