PostgreSQL之慢SQL语句
xsobi 2024-12-01 05:37 18 浏览
作者:宋少华
一、导读
优化在硬件和非系统故障的情况下,对于提升数据库本身的性能非常重要。每一种类型的数据库都有自己不同的方式去跟踪优化数据库,这些方式中不仅仅包含了数据库系统本身参数层面的优化,而且也包括对SQL语句的优化。其中,对于SQL语句的优化是DBA经常需要接触的工作。因此需要经常关住慢SQL语句,以对其进行追踪优化。
二、数据库参数
PostgreSQL中的慢SQL追踪是通过以记录日志的方式进行分析,追踪的,因此,需要优化SQL需要启动日志收集功能。以RPM方式安装的数据库日志收集功能默认是打开的,以源码编译的方式安装的数据库日志收集功能是关闭的。
启动日志收集功能
postgres=# show logging_collector ;
logging_collector
-------------------
off
(1 row)
postgres=# alter system set logging_collector = on;
ALTER SYSTEM
重新启动数据库
[postgres@developer ~]$ pg_ctl restart -D $PGDATA -l /tmp/logfile
waiting for server to shut down.... done
server stopped
waiting for server to start.... done
server started
再次查看参数
postgres=# show logging_collector ;
logging_collector
-------------------
on
(1 row)
2.1 log_min_duration_statement
该参数设置为对于单个SQL最小的执行时间,执行时间大于这个值的语句都将会被记录。该参数默认会记录所有的SQL语句。如果没有指定其单位,该单位默认以ms为单位。
如设置记录的慢SQL语句为2s,则日志中只记录执行大于2s的SQL语句。
如下示例:
postgres=# select count(*),p_date from tab_random_date group by p_date;
count | p_date
---------+------------
896 | 1993-01-12
384 | 2014-12-21
1152 | 1994-07-01
256 | 2015-08-07
512 | 2011-10-31
512 | 2004-10-16
512 | 2000-06-25
640 | 2001-07-30
384 | 2017-06-13
256 | 2000-10-19
640 | 2004-04-01
768 | 2006-01-13
768 | 2003-10-05
512 | 2003-06-22
896 | 2000-06-10
384 | 1997-06-23
512 | 2004-05-14
768 | 2012-03-10
384 | 2015-05-06
256 | 2018-10-14
128 | 2015-06-15
128 | 2017-02-18
1024 | 1993-05-05
256 | 2018-07-20
128 | 1998-05-08
640 | 1996-08-02
512 | 2014-11-19
256 | 2019-05-05
1536 | 1991-05-16
128 | 2007-08-05
640 | 1994-05-22
256 | 2013-01-06
1280 | 1996-05-12
512 | 1998-09-10
640 | 1999-02-08
384 | 2008-01-31
256 | 2016-08-28
512 | 2002-10-03
1792 | 1994-12-11
Time: 5006.112 ms (00:05.006)
上面SQL语句执行时间为5s,那么该SQL语句将会被记录到日志中。查看日志内容
[21777] LOG: duration: 5005.937 ms statement: select count(*),p_date from tab_random_date group by p_date;
2.2 log_statement
该参数用来设置记录语句的类型,允许的值为none、ddl、mod和all。默认该参数值为none,如果修改为all,会导致数据库日志格式发生变化,如果没有特别配置可查询视图,可能会导致无法解析慢日志。通常,如果启用log _min _duration _statement参数,那么log _min_ duration _statement参数需要结合log_statement参数一起使用。
mod:记录所有的DDL和数据库修改的语句,如INSERT、UPDATE、DELETE、TRUNCATE、COPY FROM等。
ddl:仅仅记录DDL语句。如CREATE 、ALTER 、DROP。
如下示例:
LOG: duration: 7204.812 ms statement: insert into tab_random_date select * from tab_random_date;
LOG: duration: 15749.567 ms statement: insert into tab_random_date select * from tab_random_date;
LOG: duration: 2044.327 ms statement: select count(*) from tab_random_date;
- 上一篇:PostgreSQL: JSON
- 下一篇:数据迁移工具 Sqoop
相关推荐
- 大学生想学习C语言,怎么快速入门?
-
初学者学习编程,看视频的效果会更好一些,边看视频边敲代码。很多知识点通过老师的讲解会更容易理解,在学习的过程中,做好笔记,每天保证一定的代码量,定期回去复习,对知识点进行归纳,总结。以前学习C语言的时...
- C语言的简单了解及学习2(c语言的一些基本知识)
-
在上一章我们了解C语言的基本结构并手写了第一个C程序,当然由于一些操作上的失误,导致了未能给大家展示编写程序的截图。哦,还有小伙伴问我用的什么软件,我现在在用dev。上一章的截图那么我们也要开始对今天...
- C语言学习笔记系列—第八章(c语言基础知识第三章)
-
小编这周一直在复习准备今天的考试,考试情况总结来说“不容乐观”。顿悟了顺应时代发展,要加速云改数转技术转型了。以上都是小编的吐槽;C语言还是要继续学习下去啦!下面进入第八章的学习内容了,这章内容主要是...
- C语言学习方法(c语言如何学)
-
C语言学习方法在前面http://sunxiunan.com/?p=1597曾经提到过一个比较系统学习一门新的编程语言的方式,C语言学习也可以按照类似的顺序:阅读参考书,阅读代码,编写调试实际程序,...
- C 语言流程控制语句学习,三大结构基础知识点学习与实践操作掌握
-
在C语言的程序设计领域,如同搭建一座错综复杂的大厦,而顺序结构、选择结构和循环结构就是构建这座大厦的基石。它们看似简单,却蕴含着无穷的力量,决定了程序运行的走向与逻辑。理解这些结构的概念与作用,不...
- C语言开发《浪漫流星雨》表白程序,源码来了
-
浪漫表白效果:开发环境:VisualStudio2019+EasyX图形库插件即可源码展示:#include<stdio.h>#include<math.h>...
- 高分收藏!C语言初学者必看——内存与指针的指南
-
C语言是机器亲和的,也就是说,在大多数情况下,它是要去迁就机器的。如果想学迁就人的语言,可以去学PHP,Python,Go,Java等。工具与原理指针与内存都是c语言中的要点与难点内存是一维线性排列的...
- C语言编程工具软件推荐!(c语言编程软件app)
-
1、VS(VisualStudio)[VS是目前最受欢迎的适用于Windows平台应用程序的综合开发环境,由于大多数同学使用的都是Windows操作系统,因此VS非常适合大家。在日常课堂和考试中,我...
- 编程入门:零基础想要学好C/C++编程?一定要看看这五个步骤
-
零基础想要学好C/C++编程?那就赶紧看看吧!1、学习C/C++编程语言基础掌握语言基础是第一步,如果不了解基础知识,那么就不知道自己是否做错了或者接下来该怎么做。掌握C/C++相关的基础知识,如C语...
- 九、c语言学习难点之指针(c语言指针详解例题)
-
指针和数组应该算是C语言的精华及难点,很多初学者都是被这一章节难倒的,包括作者在内,也不敢说在指针上就真的全懂了。只能在此抛砖引玉,希望讲讲基础知识,有大神看到了能够扩展高级应用。在介绍数组和指针之前...
- C语言学习篇(15)-----函数传参详解
-
前面我们已经介绍过什么是指针,指针变量的用法等等,今天我们就来讲讲什么是函数,函数有啥作用,函数的参数有哪些需要注意的地方以及指针与函数的关系。首先函数是由一些代码块组成,这些代码往往都是为了完成某个...
- 0基础学习C语言第五章:输入与输出
-
当我们提到输入时,这意味着要向程序填充一些数据。输入可以是以文件的形式或从命令行中进行。C语言提供了一系列内置的函数来读取给定的输入,并根据需要填充到程序中。当我们提到输出时,这意味着要在屏幕上、打...
- 【c语言学习笔记】选择结构(c语言选择结构的作用)
-
C语言学习笔记之选择结构在选择结构中,C语言提供了两种主要的决策语句:if语句和switch语句。这两种语句可以根据特定的条件来执行不同的代码块,从而实现程序的分支处理。(新手小白程序员,有错请指正)...
- 适合零基础初学者学习C语言第一课教程,揭开C语言的神秘面纱
-
一、C语言简介我刚接触编程,首先想要学习的就是C语言,这次我就把我的感悟用我自己理解的文字表述出来,这样对刚学C语言的人来说,才是比较友好的。因为我们都没有C语言的基础,不懂啥是编程,啥事代码。我们...
- c语言学习笔记-函数(c语言函数基础知识)
-
函数的格式intmain(void)//函数头格式返回值类型函数名(形参列表)返回值类型可以省略,省略时默认为int类型{return0;//函数体具体执行的代码,如果有返回值用ret...
- 一周热门
- 最近发表
- 标签列表
-
- grid 设置 (58)
- 移位运算 (48)
- not specified (45)
- 导航栏 (58)
- context xml (46)
- scroll (43)
- dedecms模版 (53)
- c 视频教程下载 (33)
- listview排序 (33)
- characterencodingfilter (33)
- getmonth (34)
- label换行 (33)
- android studio 3 0 (34)
- html转js (35)
- 索引的作用 (33)
- checkedlistbox (34)
- xmlhttp (35)
- mysql更改密码 (34)
- 权限777 (33)
- htmlposition (33)
- 学校网站模板 (34)
- textarea换行 (34)
- 轮播 (34)
- asp net三层架构 (38)
- bash (34)