IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> PostgreSQL 数据库性能 -> 正文阅读

[大数据]PostgreSQL 数据库性能

1:数据库性能常用的度量指标

(1)运行时间 run time??

(2)QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。

(3)TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。

2:数据库性能常见的依赖因素

(1)环境

机器配置、

网络带宽时延、

HA\集群架构(同步、异步复制策略)

数据库参数(postgresql.conf 刷盘策略等)

(2)业务场景

表定义

数据量

SQL

事务隔离级别

并发度

3:数据库运行时间消耗

(1) 客户端:建连\断连, SQL发送、 结果集接受、处理

(2) 数据库服务端: 通信层(采用连接池、用户态网络、逻辑连接), SQL优化(优化)\执行层(线程池),写日志(并发)、数据刷盘(刷页线程、shared)、结果输出

(3) 网络延迟

4: SQL执行时间分析

SQL--->查询解析(词法分析token keyword、语法分析parsetree、语义分析querytree)---> 查询优化 (查询重写)---> 优化器 (代价估算、生成执行计划 plantree) -------> 绑参 ------> 执行器 ----->存储引擎

5: 逻辑上常见的SQL执行顺序【】

【7】select 【8】distinct 【11】<select_list>

【1】from <left_table>

【3】<join_type> join <right_table>

【2】on <join_condition>

【4】where <condition>

【5】group by <group_list>

【6】having <having_condition>

【9】order by <order_list>

【10】limit <limit_offset>

6: 不同执行计划的选择 (explain的使用:PgSQL · 最佳实践 · EXPLAIN 使用浅析

(1)如何扫描表:

????????Seq Scan :全表顺序扫描, 一般查询没有索引的表需要全表扫描。

????????Index Scan: 索引扫描, 主要用来再where条件中存在索引列是的扫描。(建表的时候可以创建索引列)。一般由于Seq Scan。

????????Bitmap index Scan:一种索引扫描, 节点每次执行返回的是一个位图而不是一个元组,其中位图中每位代表了一个扫描到的数据块。这样做最大的好处就是把Index Scan 的随机读转换成了按照数据块的物理顺序读取,在数据量比较大的时候,这会大大提升扫描的性能。

? ? ? ? ?Bitmap heap?Scan:?作为BitmapIndex Scan 的父节点, 将BitmapIndex Scan 返回的位图转换为对应的元组。

? ? ? ? 如何选择:

? ? ? ? [1]:? 大多数情况下,Index Scan 要比 Seq Scan 快。但是如果获取的结果集占所有数据的比重很大时,这时Index Scan 因为要先扫描索引再读表数据反而不如直接全表扫描来的快。

? ? ? ? [2]:? 如果获取的结果集的占比比较小,但是元组数很多时,可能Bitmap Index Scan 的性能要比Index Scan 好。

? ? ? ? 代价估计信息:

????????cost 就是该执行节点的代价估计。它的格式是xxx..xxx,在.. 之前的是预估的启动代价,即找到符合该节点条件的第一个结果预估所需要的代价,在..之后的是预估的总代价。而父节点的启动代价包含子节点的总代价。

????????rows 代表预估的行数, 根据表的统计信息预估来;

????????width 代表预估的结果宽度,单位字节。根据表的统计信息预估来。

? ? ? ? 真实执行信息:

????????当EXPLAIN 命令中ANALYZE 选项为on时,会在代价估计信息之后输出真实执行信息,包括:

  • actual time 执行时间,格式为xxx..xxx,在.. 之前的是该节点实际的启动时间,即找到符合该节点条件的第一个结果实际需要的时间,在..之后的是该节点实际的执行时间
  • rows 指的是该节点实际的返回行数
  • loops 指的是该节点实际的重启次数。如果一个计划节点在运行过程中,它的相关参数值(如绑定变量)发生了变化,就需要重新运行这个计划节点。

(2)如何join

? ? ? ? Nested Loop

? ? ? ? Hash

? ? ? ? Merge

? (3) 如何排序

(4)如何处理子查询

(5)其他等价的执行计划

SQL优化器如何选择执行计划

(1)RBO 基于规则的优化器、动态适应性差

(2)CBO 基于代价的优化器、目前关系数据库的主流技术

PG的锁等待问题:

pg_locks? + pg_thread_wait_status + pg_stat_activity

PostgreSQL 锁等待监控 珍藏级SQL - 谁堵塞了谁-阿里云开发者社区

linux 常用的数据库性能分析、问题诊断工具

(1)性能分析: top、htop、iotop、vmstat、sar 、 netstat、perf、iostat

? (2)? 问题诊断:gdb、gstack、gcore、lsof、tcpdump?

PG外部GUI管理工具

(1) pgadmin4

(2) DBeaver

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-23 10:53:19  更:2022-04-23 10:55:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:44:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码