检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
案例:调整局部聚簇键 局部聚簇 (Partial Cluster Key,简称PCK),列存储下一种通过min/max稀疏索引实现基表快速扫描的索引技术。Partial Cluster Key可以指定多列,但是一般不建议超过2列。PCK适用于列存大表点查询加速。 优化前 创建一个
GROUP BY STTIME ) ) ; 执行计划如图1所示。 图1 增加JOIN列非空条件(一) 优化后 分析执行计划图1可知,在顺序扫描阶段耗时较多。 多表JOIN中,由于表PS.SDR_WEB_BSCRNC_1DAY的JOIN列“BSCRNC_ID”存在大量空值,JOIN性能差。
HStore Opt的delta表 表结构 与列存主表的表定义一致。 与主表定义不一致。 不同于主表,与HStore表相同。 功能 用于暂存小批量insert的数据,满阈值后再merge到主表,避免直接insert到主表产生大量小CU。 用于持久化存储update/delete/in
GROUP BY STTIME ) ) ; 执行计划如图1所示。 图1 增加JOIN列非空条件(一) 优化后 分析执行计划图1可知,在顺序扫描阶段耗时较多。 多表JOIN中,由于表PS.SDR_WEB_BSCRNC_1DAY的JOIN列“BSCRNC_ID”存在大量空值,JOIN性能差。
案例:调整局部聚簇键 局部聚簇 (Partial Cluster Key,简称PCK),列存储下一种通过min/max稀疏索引实现基表快速扫描的索引技术。Partial Cluster Key可以指定多列,但是一般不建议超过2列。PCK适用于列存大表点查询加速。 优化前 创建一个
中,同时不同逻辑集群之间也支持互访,在保证资源隔离的基础上也可以保证功能不受影响。 T1和T2表主要用于大批量数据计算,并生成报表数据(比如银行跑批)。这个过程由于需要大批量导入和大数据查询,所以对节点的内存和IO资源消耗比较高,且耗时比较长,但这类查询对实时性要求不高,因此可以将这些数据划分到一个独立的逻辑集群中。
ANALYZE语句可收集数据库中与表内容相关的统计信息,统计结果存储在系统表PG_STATISTIC中。查询优化器会使用这些统计数据,以生成最有效的执行计划。 建议在执行了大批量插入/删除操作后,例行对表或全库执行ANALYZE语句更新统计信息。 父主题: 基于表结构设计和调优提升GaussDB(DWS)查询性能
= 数据库连接数量,同写入线程大小。 1 readBatchSize 最多一次将get请求合并提交的数量 int 当查询请求积压后,最大的批量查询数量。 128 readBatchQueueSize get请求缓冲池大小 int 查询请求最大积压容量。 256 readTimeoutMs
enable_indexscan=on 控制优化器对索引扫描规划类型的使用。 enable_indexonlyscan=on 控制优化器对仅索引扫描规划类型的使用。 enable_seqscan=on 控制优化器对顺序扫描规划类型的使用。完全消除顺序扫描是不可能的,但是关闭这个变量会让优化器在存在其他方法的时候优先选择其他方法。
对于特别表空间中的表和索引,可以通过设置同名的表空间的参数来覆盖这个值。 相对于seq_page_cost,减少这个值将导致系统更倾向于使用索引扫描,而增加这个值使得索引扫描开销比较高。可以通过同时增加或减少这两个值来调整磁盘I/O相对于CPU的开销。 cpu_tuple_cost 参数说明:设置优
索引不合理 在基表扫描时,满足下述条件则上报相关告警: 对于行存表: 使用索引扫描,输出行数/扫描行数>1/1000且输出行数>1万行。 使用顺序扫描,输出行数/扫描行数<1/1000且输出行数<=1万行、扫描行数>1万行。 对于列存表: 使用索引扫描,输出行数/扫描行数>1/10000且输出行数>100。
索引不合理 在基表扫描时,满足下述条件则上报相关告警: 对于行存表: 使用索引扫描,输出行数/扫描行数>1/1000且输出行数>1万行。 使用顺序扫描,输出行数/扫描行数<1/1000且输出行数<=1万行、扫描行数>1万行。 对于列存表: 使用索引扫描,输出行数/扫描行数>1/10000且输出行数>100。
对于特别表空间中的表和索引,可以通过设置同名的表空间的参数来覆盖这个值。 相对于seq_page_cost,减少这个值将导致系统更倾向于使用索引扫描,而增加这个值使得索引扫描开销比较高。可以通过同时增加或减少这两个值来调整磁盘I/O相对于CPU的开销。 cpu_tuple_cost 参数说明:设置优
execute direct on(cn_name) 'select pg_terminate_backend(被查杀语句pid)'; 批量拼接查杀语句(仅拼接查杀命令,不执行查杀命令)。 1 select 'execute direct on(' || coorname ||
和灵活性。因而,GaussDB(DWS)中大多数类型转换是由通用规则来管理的,这种做法允许使用混合类型的表达式。 GaussDB(DWS)扫描/分析器只将词法元素分解成五个基本种类:整数、浮点数、字符串、标识符和关键字。大多数非数字类型首先表现为字符串。SQL语言的定义允许将常量字符串声明为具体的类型。例,下面查询:
printStackTrace(); } } e.printStackTrace(); } } //执行预处理语句,批量插入数据。 public static void BatchInsertData(Connection conn) { PreparedStatement
printStackTrace(); } } e.printStackTrace(); } } //执行预处理语句,批量插入数据。 public static void BatchInsertData(Connection conn) { PreparedStatement
和灵活性。因而,GaussDB(DWS)中大多数类型转换是由通用规则来管理的,这种做法允许使用混合类型的表达式。 GaussDB(DWS)扫描/分析器只将词法元素分解成五个基本种类:整数、浮点数、字符串、标识符和关键字。大多数非数字类型首先表现为字符串。SQL语言的定义允许将常量字符串声明为具体的类型。例如:
执行计划中的常见关键字说明: 表访问方式 Seq Scan/CStore Scan 全表顺序扫描。最基本的扫描算子,用于行/列存表的顺序扫描。 Index Scan/CStore Index Scan 行/列存表的索引扫描。行/列存表上存在索引,条件列为索引列。 优化器决定使用两步的规划:最底层的
查询表上指定。对于hdfs内表,由主表和delta表组成,delta表对用户不可见,故hint仅作用在主表上。 示例 为了hint使用索引扫描,需要首先在表item的i_item_sk列上创建索引,名称为i: 1 create index i on item(i_item_sk);