Query
instr_unique_sql_count
参数说明:控制系统中unique sql信息实时收集功能的最大收集数量。
该值由大变小时,系统将会清空原有的数据重新统计,由小变大则不会重新统计。
当系统中产生的unique sql信息(由dbe_perf.statement/dbe_perf.summary_statement统计)大于instr_unique_sql_count时,系统产生的unique sql信息不被统计。
参数类型:整型
参数单位:无
取值范围:0 ~ 2147483647,0表示不启用unique sql信息收集功能。
默认值:200000
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:设置较大会增加dbe_perf.statement视图占用的内存上限;设置过小可能出现视图中记录语句过少,导致缺少问题定位手段,影响对慢SQL的诊断。
instr_unique_sql_size
参数说明:用于控制unique sql、full sql、asp功能记录query信息的长度上限。如果实际语句字节长度大于该值,会进行截断,其中字节长度按照执行该query时所在数据库的字符集计算。
参数类型:整型
参数单位:字节(byte)
取值范围:100 ~ 102400
默认值:1024
设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:设置较大会增加dbe_perf.statement视图占用的内存上限;设置过小可能出现视图中记录语句不完整,导致缺少问题定位手段,影响对慢SQL的诊断。
instr_unique_sql_combination_options
参数说明:Unique SQL同类语句归并功能配置项,该参数的值由若干个配置项用逗号隔开构成。
开启该特性会将同类语句的Unique SQL ID归一,并将生成的Unique SQL String做归一化处理。
参数类型:字符串
参数单位:无
取值范围:参照表1。
- 归并功能配置时,按照表1设置字符串,多个配置项之间用逗号隔开,例如:SET instr_unique_sql_combination_options='in_clause';
- 参数设置为空时,即为不开启该功能,例如:SET instr_unique_sql_combination_options='';
| 归并功能配置项 | 归并功能行为控制 |
|---|---|
| in_clause | 控制select in()语句的in中仅含有固定参数与预编译绑定参数的情况进行归并。 例1:select * from example_table where column in (1,2,3); 归并后Unique SQL String:select * from example_table where column in (1…n); 例2:select * from example_table where column in ($1,$2,$3); 归并后Unique SQL String:select * from example_table where column in ($1…$n); 例3:select * from example_table where column in (1,2,$1,3,$2); 归并后Unique SQL String:select * from example_table where column in (1...n,$1...$n); 例4:select * from example_table where (column1, column2) in ((1, 'a'), (2, 'b'), (3, 'c')); 归并后Unique SQL String:select * from example_table where (column1, column2) in ((1...n)); |
| forbid_select_for_update | 控制select语句for update子句是否参与归一化计算。 该选项打开后for update / for share / for update wait n / for update nowait / for update skip lock在归一化视图中分别展示,且生成不同的unique_sql_id;该选项关闭后,上述所有子句与不带for update子句的语句归一成同一句,共用同一个unique_sql_id。 |
| temp_table | 控制local临时表unique_sql_id计算方式。 若该选项关闭,local临时表dml语句在计算unique_sql_id时采用表oid作为表的标识,不同会话创建的同名临时表执行相同操作时会生成不同unique_sql_id,在unique sql相关视图与函数中会分开独立展示。若业务语句创建临时表数量可控,或有会话力度分析临时表相关操作执行情况的诉求,建议关闭该选项。 若该选项开启,local临时表dml语句在计算unique_sql_id时采用表名字符串哈希值作为表的标识(此时同表名不同表结构的表无法进行区分),不同会话创建的同名临时表执行相同操作时会生成相同unique_sql_id,在unique sql相关视图与函数中可以合并展示。若业务语句中有大量同名local临时表的相同操作,建议开启该选项以避免生成过多记录。 |
默认值:"in_clause,forbid_select_for_update,temp_table"
设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:修改该参数值将使涉及归并的查询语句的Unique SQL ID发生改变,会对已创建SQLpatch的SQL语句产生影响。
- 升级时默认保持升级前参数设置值,新实例下发时默认值为"in_clause, forbid_select_for_update,temp_table"。
- 对于bigint、real、float4、blob、numeric、decimal、number、dec、integer类型的值,在in()中含有单个参数与多个参数的两种情况,会生成两种不同的unique_sql_id。
- 打开forbid_select_for_update选项后,for update wait n子句中常量n不参与归一化,常量不同记为不同语句。(其中for update wait 0与for update nowait两个子句语义相同,归一为同一条,dbe_perf.statement/gs_asp/statement_history等视图中语句字段记录执行时间更早的那一条语句。)
- 更改instr_unique_sql_combination_options后,变更选项相关语句生成的unique_sql_id与之前不同,原有sql patch可能失效,需要根据更改后新的unique_sql_id重新打sql patch。
instr_unique_sql_track_type
参数说明:unique sql记录sql方式。
参数类型:枚举类型
参数单位:无
- top:只记录顶层sql。
- all:记录所有sql。
默认值:all
设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
- 该参数默认为all,与设置为top时相比,参数值为all时会额外记录存储过程内语句的统计信息,对存储过程的执行会产生一定的性能损耗,对于存储过程内简单表达式等执行较快的语句产生的性能影响会更加严重。
- 该参数为top时,存储过程内的open cursor语句会被记录。
unique_sql_retention_time
参数说明:清理unique sql哈希表的间隔,默认为30分钟。
参数类型:整型
参数单位:min(分钟)
取值范围:1 ~ 3650
默认值:30
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。取值不能带单位。
设置建议:不建议用户修改该参数,该参数当前版本无功能控制点。
设置不当的风险与影响:修改该参数取值可能导致集群出现意料之外的结果,请保持默认值。
enable_instr_rt_percentile
参数说明:控制是否开启计算系统中80%和95%的SQL响应时间的功能。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示打开sql响应时间信息计算功能。
- off:表示关闭sql响应时间信息计算功能。
默认值:on
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:建议开启该参数。
设置不当的风险与影响:若关闭该参数无法记录80%和95%的SQL响应时间,导致无法直观监测系统性能。
percentile
参数说明:sql响应时间百分比信息,后台计算线程会根据该参数取值计算相应的百分比信息。
参数类型:字符串
参数单位:无
取值范围:当前有效值只有“80,95”。
默认值:"80,95"
设置方式:该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。
设置建议:该参数不允许用户进行设置,只能查看。
设置不当的风险与影响:无
instr_rt_percentile_interval
参数说明:sql响应时间信息计算间隔,sql响应时间信息计算功能打开后,后台计算线程每隔设置的时间进行一次计算。
参数类型:整型
参数单位:s(秒)
取值范围:0 ~ 3600
默认值:10
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。例如,不带单位取值60,表示instr_rt_percentile_interval为60s;带单位取值1min,表示instr_rt_percentile_interval为1min。取值如果要带单位,必须为s、min、h。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
enable_instr_cpu_timer
参数说明:控制是否捕获sql执行的cpu时间消耗。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示捕获sql执行的cpu时间消耗。
- off:表示不捕获sql执行的cpu时间消耗。
默认值:on
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:建议开启该参数。
设置不当的风险与影响:若关闭该参数,可能导致无法记录系统中sql执行消耗的cpu时间,不利于慢sql分析信息。
perf_directory
参数说明:perf_directory决定性能视图打点任务输出文件的目录,仅sysadmin用户可以访问。它可以是绝对路径,或者是相对路径(相对于数据目录的路径)。
- 合法路径:用户对此路径有读写权限。
- 非法路径:用户对此路径无读写权限。
参数类型:字符串
参数单位:无
取值范围:合法目录路径。
默认值:安装时指定。
设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:当配置文件中perf_directory的值为非法路径时,会导致集群无法重新启动。
enable_stmt_track
参数说明:控制是否开启Full/Slow SQL捕获功能。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示开启Full/Slow SQL捕获功能。
- off:表示关闭Full/Slow SQL捕获功能。
默认值:on
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
track_stmt_parameter
参数说明:开启track_stmt_parameter后,在statement_history中记录的执行语句不再进行归一化操作,可以显示完整SQL语句信息,辅助DBA进行问题定位;其中对于简单查询,显示完整语句信息;对于PBE语句,显示完整语句信息的同时,追加每个变量数值信息,格式为“query string;parameters:$1=value1,$2=value2,...”,该参数提供目的是为用户呈现完整SQL信息,为避免query参数为长字符串或大对象类型时占用过多内存,可以通过设置GUC参数进行内存控制。全量SQL信息的内存控制分为两部分,SQL语句部分受instr_unique_sql_size参数控制,SQL参数部分受track_stmt_mem_ctl参数控制。开启该参数后,statement_history中P报文可能不会记录query信息。修改该参数值不会对正在执行的SQL记录产生影响。当语句为PBE类型且执行SQL Bypass逻辑时,参数会直接下发到DN,因此在CN查询statement_history无法获取完整语句信息;同时由于DN无Query字符串信息,因此在DN查询statement_history也无法获取完整语句信息。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示开启显示完整SQL语句信息的功能。
- off:表示关闭显示完整SQL语句信息的功能。
默认值:off
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:若SQL语句普遍较长,会有更大的内存和磁盘的空间占用。
track_stmt_session_slot
参数说明:设置一个session缓存的最大的全量SQL和慢SQL的数量,超过这个数量,新的语句执行将不会被跟踪,直到落盘线程将缓存语句落盘,留出空闲的空间。
参数类型:整型
参数单位:无
取值范围:0 ~ 2147483647
默认值:1000
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:每个被占用的slot内存约800bit左右,具体值由语句复杂度决定。业务压力大的场景,若该值过大,会有内存快速膨胀的影响。该值过小时,可能会遗漏需要分析的语句。
track_stmt_details_size
参数说明:设置单语句可以收集的最大的执行事件的大小。该值影响statement_history表中details字段的锁信息。
参数类型:整型
参数单位:byte
取值范围:0 ~ 100000000
默认值:4096
设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。取值不能带单位。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
track_stmt_retention_time
参数说明:组合参数,用于控制全量SQL/慢SQL在表statement_history中的记录保留时间和备机已落盘文件的保留时间。系统以60秒为周期读取该参数,并执行清理超过保留时间的记录,仅sysadmin用户可以访问。
参数类型:字符串
参数单位:无
取值范围:
该参数分为两部分,形式为'full sql retention time, slow sql retention time',这两个部分的具体含义如下:
- full sql retention time:全量SQL保留时间,取值范围为0 ~ 86400,单位为秒。
- slow sql retention time:慢SQL的保留时间,取值范围为0 ~ 604800,单位为秒。
默认值:"3600,604800"
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:如果设置保留时间太长,可能会占用较多空间;太短可能会影响数据保留时间太短,导致缺少问题定位手段,影响诊断。
track_stmt_stat_level
参数说明:控制语句执行跟踪的级别。
参数类型:字符串
参数单位:无
取值范围:
该参数分为两部分,形式为'full sql stat level, slow sql stat level',这两个部分的具体含义如下:
- 第一部分为全量SQL跟踪级别,取值范围为OFF、L0、L1、L2。
- 第二部分为慢SQL的跟踪级别,取值范围为OFF、L0、L1、L2。
默认值:"OFF,L0"
设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:打开全量SQL跟踪功能会影响性能,并可能会占用大量的磁盘空间。
track_stmt_standby_chain_size
参数说明:组合参数,控制备机快/慢SQL记录的最大占用内存与磁盘空间。仅SysAdmin用户可以访问。
参数类型:字符串
参数单位:无
取值范围:
该参数分为四部分,形式为'Full SQL memory size, Full SQL disk size, Slow SQL memory size, Slow SQL disk size' ,这四个部分的具体含义如下:
Full SQL与Slow SQL分开存放于不同位置,因此使用了四个值进行控制。
- Full SQL memory size:保留的快SQL的最大内存占用空间,取值范围为[16, 1024],单位为MB。
- Full SQL disk size:保留的快SQL的最大磁盘占用空间,取值范围为[512, 1048576],单位为MB。
- Slow SQL memory size:保留的慢SQL的最大内存占用空间,取值范围为[16, 1024],单位为MB。
- Slow SQL disk size:保留的慢SQL的最大磁盘占用空间,取值范围为[512, 1048576],单位为MB。
其中内存值不可大于磁盘值。
默认值:"32, 1024, 16, 512"
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:如果设置参数值过大,可能会占用大量的内存或磁盘空间;参数值过小,可能会遗漏需要分析的语句。
track_stmt_flush_mode
参数说明:控制全量SQL的存储模式。
参数类型:字符串
参数单位:无
取值范围:
该参数分为两部分,形式为'full sql flush mode, slow sql flush mode',这两个部分的具体含义如下:
- 第一部分为全量SQL跟踪模式,取值可为MEMORY、FILE。参数设置为MEMORY,会记录全量SQL语句到内存中;参数设置为FILE,会记录全量SQL语句到磁盘文件中。
- 第二部分为慢SQL跟踪模式,当前版本取值仅为FILE。参数设置为FILE,会记录慢SQL语句到磁盘文件中。
默认值:"FILE,FILE"
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:如果设置参数为“MEMORY,FILE”会打开内核支持全量SQL功能,会占用一定共享内存,内存大小由track_stmt_shm_size参数控制。
track_stmt_shm_size
参数说明:控制全量SQL共享内存的大小。
参数类型:整型
参数单位:byte
取值范围:134217728 ~ 1073741824
默认值:134217728
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
track_stmt_mem_ctl
参数说明:控制运维各子功能的内存上限。
参数类型:字符串
参数单位:无
取值范围:该参数分为3个部分,'MESSAGE_MEM,GSTRACE_MEM,SQL_PARAM_MEM',具体含义如下:
- MESSAGE_MEM:语句在JDBC侧执行时,会收集各个时间点,发送到数据库。该key用于控制数据库中最大接收字节,接收的信息存储在表DBE_PERF.statement_history的driver_info字段。取值范围256 ~ 4096,单位为字节。
- GSTRACE_MEM:函数打点信息会被记录到内存。该key用于控制每个sql语句记录函数打点记录的内存大小,信息存储在表DBE_PERF.statement_history的details字段。取值范围0 ~ 104857600,单位为字节。
- SQL_PARAM_MEM:控制SQL语句参数部分占用的内存大小,即仅在开启track_stmt_parameter参数后有效,对于PBE语句,显示完整语句信息的同时,追加每个变量数值信息,格式为“query string;parameters:$1=value1,$2=value2...”此时控制parameters部分占用的内存。取值范围为0或者100 ~ 102400,单位为字节,0表示追加的参数长度不受控制,记录全量参数内容。
默认值:"MESSAGE_MEM=256,GSTRACE_MEM=2048,SQL_PARAM_MEM=1024"
设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:设置过大可能会导致占用过多内存。设置过小可能出现视图中记录语句过少,导致缺少问题定位手段,影响对慢SQL的诊断。
driver_traceid_level
参数说明:控制表DBE_PERF.statement_history的traceid的生成方式。
参数类型:字符串
参数单位:无
取值范围:"none"、"transaction"
- "none":表示启用业务的自定义traceid,保持前向兼容性。
- "transaction":表示同一事务内的语句使用相同的traceid。
默认值:"none"
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:请根据业务需要调整取值。
设置不当的风险与影响:无
track_stmt_wait_driver_threshold
参数说明:语句在JDBC执行时间的统计信息,在该参数时间范围内传输到数据库时,统计信息会在数据库处理并落盘,记录在表DBE_PERF.statement_history的driver_info字段。如果超时,则丢弃这部分信息。
参数类型:整型
参数单位:ms(毫秒)
取值范围:0 ~ 60000,0表示不启用unique sql信息收集功能。
默认值:5000
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。例如,不带单位取值60000,表示track_stmt_wait_driver_threshold为60000ms;带单位取值1min,表示track_stmt_wait_driver_threshold为1min。取值如果要带单位,必须为ms、s、min。
设置建议:推荐使用默认值。
设置不当的风险与影响:设置较大会导致执行异常的SQL语句长时间占用内存,导致无法统计新执行的SQL语句的信息,同时占用大量内存。
enable_gstrace
参数说明:内核GSTrace全链路开关。
参数类型:布尔型
参数单位:无
取值范围:
- on:开启内核GSTrace全链路。
- off:关闭内核GSTrace全链路。
默认值:on
设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:无
concurrent_dml_mode
参数说明:对于启用了更新分布列功能的表(即表属性“enable_update_distkey”为“on”),针对该表上出现的DML并发执行冲突(锁冲突),指定冲突的处理方式。
该参数仅在DN节点上生效。
参数类型:整型
参数单位:无
取值范围:0 ~ 1
- 0:宽松模式,即出现冲突后,后获取锁的DML语句不报错。
- 1:严格模式,即出现冲突后,后获取锁的DML语句将会终止,并输出错误信息。
默认值:1
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:可参考取值范围描述进行设置。若预期冲突后,后获取锁DML语句不报错,则可设置为0;若预期冲突后,后获取锁的DML语句终止且报错,则可设置为1。
设置不当的风险与影响:当参数设置为0时,可能引发后获取锁的DML语句无法正确获取需要更新的数据,在并发更新时可能发生预期以外的行为,比如:后执行的语句虽执行成功但未实际生效或使用MERGE INTO语法误插入多余一条数据等行为,请在充分理解参数含义,并经过测试验证后进行修改。
sql_hash_abort_list
参数说明:基于GUC创建SQL异常阻断补丁。
参数类型:字符串
参数单位:无
取值范围:单个SQL Hash或者用逗号隔开的多个SQL Hash。
默认值:''
设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:设置该参数后可能影响性能,但不超过5%。
- 仅在CN上检查是否阻断,DN上不生效。
- 支持的SQL Hash有效范围是[1 , 4294967295]。
- 可配置的SQL Hash上限为1000条,仅前1000条生效。
- 基于SQL Hash配置的异常阻断补丁可能会出现极小概率(1 /4294967295)的哈希冲突,导致不相关语句被阻断,建议用户自行评估风险。
- 所配置的SQL Hash不区分库和Schema,不同库和Schema下的相同SQL都会被阻断。
- 当多条SQL执行路径中包含同一条内部执行的SQL语句时,若对该内部SQL语句执行阻断操作,将导致所有依赖此内部SQL语句的外部SQL语句均被阻断,请谨慎使用。