首页 文章 精选 留言 我的

精选列表

搜索[日活数],共10000篇文章
优秀的个人博客,低调大师

教你处理数仓慢SQL常见定位问题

摘要:通常在运维监控出现CPU使用率较高、P80/P95指标较高、慢SQL数量上升等现象,或者业务出现超时报错时,优先应排查是否出现慢SQL。 本文分享自华为云社区《GaussDB慢SQL常见定位处理手段》,作者:酷哥。 关键指标 通常在运维监控出现CPU使用率较高、P80/P95指标较高、慢SQL数量上升等现象,或者业务出现超时报错时,优先应排查是否出现慢SQL。 定位慢SQL手段 实时慢SQL查询 查询当前执行时间TOP10的SQL,识别长时间未结束的SQL后可以手动中止。 select a.pid, a.sessionid, a.datname, a.usename, a.application_name, a.client_addr, a.xact_start, a.query_start, (now() - a.query_start)::text as query_runtime, a.unique_sql_id, w.wait_status, w.wait_event, w.locktag, w.lockmode, w.block_sessionid, a.query from pg_stat_activity a join pg_thread_wait_status w on a.sessionid = w.sessionid where a.pid <> pg_backend_pid() and a.state = 'active' and a.client_addr is not null order by query_runtime desc; 根据查询结果,如果是等待锁,可以结合锁等待信息进一步分析,其他情况可以根据unique_query_id关联WDR报告、statement视图进一步分析慢的根因。 历史慢SQL查询 思路:根据CPU、慢SQL等监控指标,定位慢SQL出现的时间范围,通过以下几种方式进一步分析。 整体运行情况分析:WDR报告 通过导出对应时间段的WDR报告,可以分析耗时较长的SQL,WDR报告生成方法参见产品文档。 单次执行情况分析:statement_history statement_history记录了执行时间超过阈值(log_min_duration_statement,默认3 s)的详细SQL信息,包含计划生成时间、执行时间、锁等待时间等信息,其中部分信息与参数track_stmt_stat_level设置的级别(默认为'OFF,L0')有关。 设置参数track_stmt_stat_level='OFF,L1'后,statement_history中可以记录计划信息、锁等待时间等信息。 必须在postgres库内查询,根据时间段查询慢SQL(按照执行时间排序) SELECT *, finish_time - start_time as run_time FROM dbe_perf.statement_history WHERE start_time > '2022-07-08 18:00:00' AND start_time < '2022-07-08 19:00:00' -- 根据unique_query_id可以过滤出特定的查询 -- AND unique_query_id = 123456 ORDER BY run_time desc; 单个Query运行情况分析:statement statement记录了SQL按照unique_sql_id归一化的执行信息,包括执行次数、总的执行时间、访问数据量、内存使用等信息。 根据unique_sql_id查询历史执行信息 SELECT *, total_elapse_time / n_calls as avg_elapse_time FROM dbe_perf.statement WHERE unique_query_id = 123456; 动态抓取执行信息(计划、锁等待时间等) 为了避免对生产环境产生影响,可以动态抓取SQL执行信息 -- 抓取指定unique_sql_id的全量SQL信息 -- 示例:unique_sql_id为3267119089,全量SQL级别为L2,相当于track_stmt_stat_level='L2,off' select * from dynamic_func_control('LOCAL', 'STMT', 'TRACK', '{"3267119089", "L2"}'); -- 打开之后,查询statement_history -- 关闭抓取,清理 select * from dynamic_func_control('LOCAL', 'STMT', 'UNTRACK', '{"3267119089"}'); select * from dynamic_func_control('LOCAL', 'STMT', 'LIST', '{}'); select * from dynamic_func_control('LOCAL', 'STMT', 'CLEAN', '{}'); 查看会话快照信息 SELECT * FROM dbe_perf.local_active_session WHERE query_start_time > '2022-07-08 18:00:00' AND query_start_time < '2022-07-08 19:00:00' AND unique_query ilike '%%'; 常用处理手段 中止慢SQL 根据查询结果中的pid和sessionid,使用函数中止查询 select pg_terminate_session(pid,sessionid); 优化SQL 更新统计信息 查看统计信息 select * from pg_stats where tablename = '表名'; select * from pg_stats where tablename = '表名' and attname = '列名'; 更新统计信息 analyze tablename; 手动设置列的distinct值(该字段不同值的数量,选择率 ~ 总行数/distinct值) ALTER TABLE tablename ALTER COLUMN colname SET (n_distinct = 实际值); analyze tablename; -- analyze执行后生效 ​ -- 取消设置 ALTER TABLE tablename ALTER COLUMN colname RESET (n_distinct); analyze tablename; -- analyze执行后生效 使用hint优化计划 通过分析慢SQL的计划,可以使用hint进行调整,openGaussc常用的hint包括: Join顺序的Hint,语法示例:/+ leading((t1 t2))/ Join方式的Hint,语法示例:/+ nestloop(t1 t2)/ Scan方式的Hint,语法示例:/+ indexscan(t1 index1)/ 优化器GUC参数的Hint,语法示例:/+ set(param value)/ Custom Plan和Generic Plan选择的Hint,语法示例:/+ use_cplan/ .... 修改参数 根据慢SQL分析结论,可以考虑修改GUC参数,但是修改参数同时也会影响其他查询的计划,属于高风险操作。 其他 对于整体执行慢,可以通过分析WDR报告中TOP等待事件,进一步优化。 点击关注,第一时间了解华为云新鲜技术~

优秀的个人博客,低调大师

Go 源码仓库 star 数已达 100k

Google 的 Go 语言 GitHub 源码仓库已获得 100k stars,继 1.18 的泛型,又在 star 数量上达到了新的里程碑(手动滑稽) 。 Go 语言自出生以来便饱受争议(包括在咱们 OSC 社区),有的人认为 Go 高并发无敌,反对者则认为又不是大厂业务,哪来那么多高并发场景。但无可否认的是,Go 确实在不断地完善,早已成为大热的编程语言之一,比如调查显示Go 在招聘中最吃香、Go 语言超越 C++ 成为腾讯最热门的编程语言。 小编看了一下,相比 Go 的 100k stars,微软的 TypeScript有 81.2 k stars,内存安全的 Rust 有 67.3k,培训班最爱的 cpython 有 45.5k 星,全宇宙最好的语言 PHP 只有 33.9 k,过气语言 ruby​​ 更是只有 19k 星。不过 Go 八年前就已经迁移到 GitHub,而其他编程语言入驻 GitHub 的时间点比它晚很多,倒也可以理解。 此外,reddit 上关于Go 100K stars 的帖子,又引发了“仓库 stars 到底意味着什么”的经典辩论,有朋友认为 star 表示受欢迎的程度,可以将 stars 视为“这个项目有多少名气”,而不是“有多大用处”。有的人则表示 star 像一个书签,只是对仓库的一个标记。而Go 100K stars 到底意味着什么,就仁者见仁智者见智了。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册