Trafodion CQD控制查询执行
来源:互联网 发布:图片显示软件下载 编辑:程序博客网 时间:2024/05/16 14:20
绝大多数的关系型数据库如Oracle、Postgresql等都提供一些方法用来控制SQL语句的执行。之所以要控制执行,是因为数据库的编译器依赖于表的统计信息去选择合适的执行计划。然而表的统计信息并不是每时每刻都准确的,在这种情况下,编译器可能会错误的选择执行计划,从而导致SQL语句执行效率降低。
举个例子,A表和B表关联,正常情况下应该执行HASH JOIN,但由于统计信息不准确或者其他未知原因,通过执行计划发现他们其实走了NESTED LOOP,从而大大增加了执行时间。
拿ORACLE举例,ORACLE中一般采用在查询语句中添加HINT的方式强制修改执行计划,如下,
select /*+ index(t t_ind) */ count(*) from t;上面这句话表示强制使用索引扫描执行查询。
又比如Postgresql,一般使用SET命令去强制打开或关闭某个功能,如下,
set enable_nestloop off;select ...以上表示在执行查询之间关闭NESTLOOP,这样如果是多表关联的话则绝大部分不会采用NL的方式了。
当然,Trafodion数据库也一样,它也提供了一种可以控制查询执行的方法,在Trafodion中使用CQD语法去控制查询的执行。以下就介绍一下CQD的相关用法。
CONTROL QUERY DEFAULT --改变进程执行计划
- 语法
{CONTROL QUERY DEFAULT | CQD} attribute {'attr-value' | RESET}
- 例子
CONTROL QUERY DEFAULT HBASE_MAX_COLUMN_NAME_LENGTH '200';CONTROL QUERY DEFAULT HBASE_MAX_COLUMN_NAME_LENGTH RESET;
下面通过具体例子来说明,如何通过CQD让两个表关联从HASH_JOIN变为MERGE_JOIN的,
SQL>explain options 'f'+>select test1.a, test1.b, test2.c+>from test1 join test2+>on test1.a = test2.a; LC RC OP OPERATOR OPT DESCRIPTION CARD ---- ---- ---- -------------------- -------- -------------------- --------- 3 . 4 root 2.00E+0002 1 3 hybrid_hash_join u 2.00E+000. . 2 trafodion_scan TEST2 3.00E+000. . 1 trafodion_scan TEST1 2.00E+000--- SQL operation complete.SQL>cqd hash_joins 'off';SQL>fc 7SQL>explain options 'f'....SQL>select test1.a, test1.b, test2.c....SQL>from test1 join test2....SQL>on test1.a = test2.a;.... LC RC OP OPERATOR OPT DESCRIPTION CARD ---- ---- ---- -------------------- -------- -------------------- --------- 3 . 4 root 2.00E+0001 2 3 merge_join 2.00E+000. . 2 trafodion_scan TEST2 3.00E+000. . 1 trafodion_scan TEST1 2.00E+000--- SQL operation complete.
SHOWCONTROL --显示设置的CQD
- 语法
SHOWCONTROL {ALL | [QUERY] DEFAULT [attribute-name[, MATCH {FULL | PARTIAL}]]}
- 例子
SQL>showcontrol default;CONTROL QUERY DEFAULT HASH_JOINS OFF GENERATE_EXPLAIN ON--- SQL operation complete.SQL>showcontrol all;No CONTROL QUERY SHAPE settings are in effect.No CONTROL SESSION settings are in effect.No CONTROL TABLE settings are in effect.No CONTROL QUERY DEFAULT settings are in effect.Current DEFAULTS AUTO_QUERY_RETRY_WARNINGS OFF BLOCK_TO_PREVENT_HALLOWEEN ON CACHE_HISTOGRAMS_REFRESH_INTERVAL 3600 CATALOG TRAFODION COMPRESSION_TYPE NONE DEFAULT_DEGREE_OF_PARALLELISM 2 DEF_MAX_HISTORY_ROWS 1024 DISPLAY_DIVISION_BY_COLUMNS OFF EXE_MEMORY_LIMIT_PER_CPU 0 EXPLAIN_DESCRIPTION_COLUMN_SIZE -1 HASH_JOINS ON HIST_AUTO_GENERATION_OF_SAMPLE OFF HIST_MISSING_STATS_WARNING_LEVEL 4 HIST_NO_STATS_REFRESH_INTERVAL 3600 HIST_PREFETCH ON HIST_REMOVE_TRAILING_BLANKS ON HIST_ROWCOUNT_REQUIRING_STATS 50000 HIST_USE_SAMPLE_FOR_CARDINALITY_ESTIMATION ON INSERT_VSBB SYSTEM ISOLATION_LEVEL READ_COMMITTED ISOLATION_LEVEL_FOR_UPDATES NONE JOIN_ORDER_BY_USER OFF LAST0_MODE OFF MC_SKEW_SENSITIVITY_THRESHOLD 0.1 MDAM_NO_STATS_POSITIONS_THRESHOLD 10 MDAM_SCAN_METHOD ON MDAM_UNDER_NJ_PROBES_THRESHOLD 0 MERGE_JOINS ON MULTI_COMMIT_SIZE 10000 MVGROUP_AUTOMATIC_CREATION ON MVQR_REWRITE_ENABLED_OPTION OFF MVQR_REWRITE_LEVEL 0 MVQR_REWRITE_SINGLE_TABLE_QUERIES ON MV_AGE MV_ALLOW_SELECT_SYSTEM_ADDED_COLUMNS OFF NESTED_JOINS ON NOT_ATOMIC_FAILURE_LIMIT 32000 OPI_ERROR73_RETRIES 10 OPTIMIZATION_LEVEL 3 PARALLEL_NUM_ESPS SYSTEM POS_ABSOLUTE_MAX_TABLE_SIZE PUBLISHING_ROLES QUERY_CACHE 16384 QUERY_LIMIT_SQL_PROCESS_CPU 0 RISK_PREMIUM_NJ 1.0 RISK_PREMIUM_SERIAL 1.0 RISK_PREMIUM_SERIAL_SCALEBACK_MAXCARD_THRESHOLD 10000 ROBUST_QUERY_OPTIMIZATION SYSTEM SAVE_DROPPED_TABLE_DDL OFF SCHEMA SEABASE SKEW_EXPLAIN ON SKEW_ROWCOUNT_THRESHOLD 1000000 SKEW_SENSITIVITY_THRESHOLD 0.1 STREAM_TIMEOUT -1 SUBQUERY_UNNESTING ON TABLELOCK SYSTEM TIMEOUT 6000 TRAF_TRANS_TYPE MVCC UDR_DEBUG_FLAGS 0 UDR_JVM_DEBUG_PORT 0 UDR_JVM_DEBUG_TIMEOUT 0 UPD_ORDERED ON USTAT_AUTO_CV_SAMPLE_SLOPE 0.5 USTAT_AUTO_PRIORITY 150 USTAT_MAX_READ_AGE_IN_MIN 5760 USTAT_MIN_ROWCOUNT_FOR_LOW_SAMPLE 1000000 USTAT_MIN_ROWCOUNT_FOR_SAMPLE 10000 USTAT_NECESSARY_SAMPLE_MAX 5000000 USTAT_OBSOLETE_PERCENT_ROWCOUNT 15 WMS_CHILD_QUERY_MONITORING OFF WMS_QUERY_MONITORING OFF--- SQL operation complete.
1 0
- Trafodion CQD控制查询执行
- Trafodion CQD-allow_nullable_unique_key_constraint
- Trafodion CQD-hbase_coprocessors
- Trafodion CQD-traf_col_length_is_char
- Trafodion如何查看所有cqd
- Trafodion 查看执行计划
- Trafodion安装执行initialize trafodion失败
- Trafodion 查询表包含字段
- Trafodion 查询表占用空间
- SHELL调用Trafodion SQL与并发执行
- Trafodion 查看已执行的Query语句
- Trafodion 性能优化之查询性能
- Trafodion 查询SQL来自哪个客户端
- hibernate对原生SQL查询执行的控制
- elasticsearch控制match执行过程的低级查询处理规则
- 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()
- 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()
- 在trafodion数据库查询mysql数据库的表和oracle的表
- 工作了3年的JAVA程序员应该具备什么技能?
- 软件开发六阶段和十个经典模型
- 判断对象是否相等
- 搜索算法之迷宫问题
- C++11多线程
- Trafodion CQD控制查询执行
- 【iOS开发笔记21/50】获取应用程序的名称和版本号 iOS 获取手机的型号,系统版本,软件名称,软件版本
- 网易云音乐突破版权限制
- 使用虚拟机报.o错误 清楚二进制文件
- javascript中通过事件触发超链接
- 一、自动回复处理代码
- XIB文件上UIScrollView的约束
- 【NOIP普及组】2016模拟考试(11.8)——公路
- 2016年11月整理的最新php免杀一句话木马, 2017php免杀一句话(php过狗一句话,过狗菜刀,2016过狗一句话,2016php免杀一句话,php过waf一句话)