11_性能调优_如何调优_性能问题_跟踪问题_SQL规划

一、如何性能调优

1、设置性能预期

可以接受的查询时间,每分钟的查询数等等;

基准线(Benchmarks)

 

2、了解当前系统的基本的硬件性能

I/O:磁盘吞吐量,容量、CUP、内存、网络;

 

3、了解当前系统的负载

时间窗口是否满足当前应用?

  跑批、查询、其他用户的访问等等;

资源竞争?

  几个用户同时提交几个打的命令 等;

 

数据竞争?

  数据并发的访问、同时的查询等;

4、指定优化方案

 

二、常见的性能问题

硬件问题/失败的实例;

资源分配和竞争;

不精确的数据统计:在GP当中我们的查询是非常依赖统计的,如果没有一个合适的统计,我们就不能生产一个合适的查询计划;

不均衡的数据分布;

数据库设计:表设计、索引设计等等;

SQL规划;

 

1、硬件问题/失败的实例

 

 注:剩下的30%是给我们留余地,比如清理、扩容等;

        max_fsm_relations>这三个对象加起来的数,这样才不会超过空闲空间映射;

 

2、资源分配和竞争

(1)资源队列

在系统中限制活动的查询;

限制特定用户查询的能力(成本、优先级、内存)

(2)在低使用时间进行管理工作

Data loading、ETL、VACCUM、ANALYZE、Backups

(3)合理规划时间窗口来避免锁冲突

避免并发的会话在同一时间更新相同的数据;

(4)资源相关的配置参数

work_mean=32M(当我们有排序的时候我们会用到这个空间)

maintenance_work_mean=64M(维护的工作内存)

shared_buffers=125M

 

三、数据库统计(ANALYZE)

1、查询计划依赖统计信息生成

 

2、在下列数据库操作结束后执行ANALYZE:

数据装载、从备份中恢复、模式中的改变(添加索引等)、插入更新或者删除数据;

 

3、配置统计信息的收集

default_statistics_target=25

gp_analyze_relative_error=0.25(分析允许25%的错误)

很对特定的列:ALTER TABLE table ALTER id SET STATISTICS 6 ;

针对外部表:update pg_class set reltuples=500000, relpages=150 where relname=' external_table ' ;

 

四、数据分布

1、表数据分布要考虑的几个方面

 

 

2、检查数据偏斜情况

 

 

3、重新平衡表数据

 

 

五、数据库设计

1、数据类型的选择

 2、非标准化(星型模型)

   注:星型模型是又事实表+维度表:事实表为中心,维度表发散;

3、表分区

 

六、常见的性能问题

1、数据库设计-索引

在GP中很少用索引(GP用的是随机寻址);

先测试五索引的性能;

可以增加OLTP类型工作负载的性能;

其他使用索引考虑的方面:

 

 配置索引使用:enable_indexscan=on | off(如果索引真的有用可以设置为on)

                          show enable_indexscan;(可查看)

 

 七、SQL规划

1、一般考虑的方面

了解你的数据

最小化返回的数据

避免不必要的列/表在结果集中

避免大的排序

在表连接是匹配数据类型

 

2、GP特殊的考虑

尽量使用分布键进行关联查询

考虑数据分布策略

 

 八、跟踪性能问题

1、系统数据字典表和视图

pg_stat_activity

pg_locks/pg_class(需要通过id关联)

 

2、查询计划

3、数据库日志

 

 4、UNIX系统工具(gpssh)

调用监控工具如:ps、top、iostat、vmstat、netstat等

 

posted @   小王同学学编程  阅读(59)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
levels of contents
点击右上角即可分享
微信分享提示