了解您的数据库管理系统及其优化器

这篇具有很好参考价值的文章主要介绍了了解您的数据库管理系统及其优化器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PostgreSQL

模式

物品具有唯一标识符、唯一图像标识符、名称和价格。

了解您的数据库管理系统及其优化器,数据库,数据库了解您的数据库管理系统及其优化器,数据库,数据库

仓库具有唯一标识符、名称以及由街道、城市和国家定义的位置。

了解您的数据库管理系统及其优化器,数据库,数据库了解您的数据库管理系统及其优化器,数据库,数据库

对于每个可用的物品,我们记录每个仓库中的库存数量。如果某个物品在仓库中不可用,则这对没有记录。数量总是等于或大于1。

了解您的数据库管理系统及其优化器,数据库,数据库了解您的数据库管理系统及其优化器,数据库,数据库

PostgreSQL 内部

在印度尼西亚有多少单位的阿司匹林库存?

了解您的数据库管理系统及其优化器,数据库,数据库

PostgreSQL架构包括以下组件。 SQL解析器和重写器接收SQL查询并将其转换为准备优化的解析树。 规划器/优化器生成查询执行计划。 执行引擎执行计划。 内存和存储管理系统管理主存储和辅助存储。

了解您的数据库管理系统及其优化器,数据库,数据库

规划器/优化器生成查询执行计划。它使用目录和统计信息来设计候选计划并估算各自的成本。它选择估计成本最低的计划。

执行计划是一个有向无环图或物理代数运算符的树,如顺序扫描、索引扫描、排序和聚合运算符、嵌套循环、哈希和合并连接。

了解您的数据库管理系统及其优化器,数据库,数据库

执行引擎执行计划,访问数据和索引并执行必要的运算符、函数和程序。

pgAdmin 4指示的总查询时间包括查询规划时间、查询执行时间、网络延迟和客户端开销。

Explain

EXPLAIN命令生成并显示PostgreSQL规划器为提供的语句生成的带注释的执行计划。

带(VERBOSE)选项的EXPLAIN命令显示带有更多细节的带注释的执行计划。

EXPLAIN命令仅支持以下SQL构造:SELECT, INSERT, UPDATE, DELETE, EXECUTE(预备语句的执行)、CREATE TABLE 和 DECLARE(游标的声明)

了解您的数据库管理系统及其优化器,数据库,数据库

了解您的数据库管理系统及其优化器,数据库,数据库

在计划的每个节点,EXPLAIN提供三个估算:成本、行数、宽度。

  • 成本:成本属性是执行节点(及其子节点)在查询执行计划中的估计启动(在产生任何输出之前)成本和总成本。这两种成本用任意单位(大致与估计时间成比例)表示。成本越低通常表示计划更高效。成本包括估计的中央处理单元成本和与执行节点相关的估计的主要和次要输入输出成本。它们不包括传输到客户端的成本。
  • 行数:行数属性是节点返回的估计行数。
  • 宽度:宽度属性是节点产生的行的估计平均宽度(以字节为单位)。

行数和宽度的乘积估计了结果集的总数据量。

执行计划是由执行引擎执行的计划。规划器/优化器已使用估算来选择查询的执行计划。 估算可能不总是与实际运行时行为匹配。

通过考虑执行计划和估算,程序员获得了数据库引擎如何操作数据、使用索引和执行其他操作来执行语句的见解,关于估计的成本,以及规划器/优化器可用的信息。程序员可以查看不同查询的执行计划和估算,尝试了解如何在必要时调整SQL代码。

系统目录和统计数据

PostgreSQL查询规划器/优化器使用PostgreSQL构建(并维护)的目录和统计信息。 查看系统目录表和视图,如pg_tables、pg_attribute、pg_statistic和pg_stats。

了解您的数据库管理系统及其优化器,数据库,数据库

例如,视图pg_stats记录Kota Kinabalu是w_city列的最常见值,估计频率为0.0059701493(在1005行的表中对应六次出现),其次是吉隆坡。 在其他统计信息中,它还记录了EXPLAIN的属性宽度中使用的列的平均宽度(9字节)。

ANALYZE

带(ANALYZE)的EXPLAIN命令执行查询并显示每一步的执行时间和行数。

这与ANALYZE命令不同。

了解您的数据库管理系统及其优化器,数据库,数据库

了解您的数据库管理系统及其优化器,数据库,数据库

在计划的每个节点,EXPLAIN (ANALYZE)提供四个测量值:实际时间、行数、循环次数和过滤器移除的行数。

  • 成本:实际时间属性是节点的平均启动和总执行时间(以毫秒为单位)。
  • 行数:行数属性是节点返回的行数。
  • 宽度:循环是节点(子计划)执行的次数。
  • 过滤器移除的行数:过滤器移除的行数是被条件过滤掉的行数。
  • 将节点的总实际时间与循环次数相乘,得到节点的总时间。

EXPLAIN (ANALYZE)给总时间增加了开销。

执行时间从一次执行到另一次执行会有所不同。必须平均这些测量值。

成本和实际时间以不同的单位表示。如果估计良好,它们应该大致相当。

了解您的数据库管理系统及其优化器,数据库,数据库

EXPLAIN (ANALYZE)还给出了规划和执行时间。执行时间包括执行启动、关闭时间以及处理结果行所花费的时间。

其他EXPLAIN选项包括COSTS, SETTINGS, GENERIC_PLAN, BUFFERS, WAL, TIMING, SUMMARY, 和 FORMAT { TEXT | XML | JSON | YAML }。 为了很好地理解性能,程序员应该多次运行查询并查看平均值。收集统计数据。页面被带到主内存缓冲区。VACUUM, ANALYZE, 和 VACCUM ANALYZE命令重新组织数据并收集统计信息。成本、时间和计划随之改变(得到改善)。

pgAdmin 4

pgAdmin 4的工具栏中的Explain和Explain Analyze按钮分别生成执行计划和生成并执行执行计划。可以切换解释选项。

了解您的数据库管理系统及其优化器,数据库,数据库

图形化

“Explain > Graphical”标签显示执行计划的图形版本。可以以可伸缩矢量图形(.svg)格式下载。

统计

“Explain > Statistics”和“Explain > Statistics”标签显示分析和进一步的统计,特别是在分析模式下。

顺序扫描

找出新加坡市的仓库名称

了解您的数据库管理系统及其优化器,数据库,数据库了解您的数据库管理系统及其优化器,数据库,数据库

Postgres默认页面大小为8KB。

如果统计数据表明需要检索的数据量大或分散,并且如果不可能或不值得尝试准备并使用顺序扫描以外的其他方法,则优化器会使用顺序扫描。

了解您的数据库管理系统及其优化器,数据库,数据库

了解您的数据库管理系统及其优化器,数据库,数据库

排序

了解您的数据库管理系统及其优化器,数据库,数据库

了解您的数据库管理系统及其优化器,数据库,数据库了解您的数据库管理系统及其优化器,数据库,数据库

了解您的数据库管理系统及其优化器,数据库,数据库

为什么这是不良优化?

索引

索引是指导数据访问的数据结构。索引可能加速或不加速查询、删除和更新。它通常会减慢插入和更新的速度(因为必须更新数据和索引,并可能需要重新组织)。

  • PostgreSQL支持B-tree(默认)、Hash、广义搜索树(GiST)、空间划分广义搜索树(SP-GiST)、广义倒排(GIN)和块范围(BRIN)索引。
  • 在PostgreSQL中,索引是次要的,即它们独立于表存储。通常,在搜索索引时,必须从索引和表(堆)中获取数据。尽管满足某一条件的索引条目通常位于彼此附近,但相应的表行可能位于任何地方。
  • PostgreSQL支持仅通过索引解答查询的索引仅扫描。当查询仅引用存储在索引中的列时,即当索引是覆盖索引时,索引仅扫描适用于B-tree索引(有时适用于其他索引)。

PostgreSQL自动为每个唯一和主键约束创建一个B-tree唯一索引。索引强制实施唯一性(对插入和更新额外成本)。

索引是唯一或主属性的覆盖索引。

  • PostgreSQL不为外键约束创建索引。

设计者决定是否在引用列上创建索引以及创建什么索引。引用表的插入和更新需要扫描引用表。在引用列上创建索引可能是个好主意。然而,外键属性通常是(复合)键的组成部分,因此作为此类索引。

目录表和视图pg_index和pg_indexes存储数据库中索引的信息。 我们创建一个视图,从目录表和视图中收集有关索引的信息。

了解您的数据库管理系统及其优化器,数据库,数据库

了解您的数据库管理系统及其优化器,数据库,数据库

我们可以在items的i_price属性上创建一个索引。

了解您的数据库管理系统及其优化器,数据库,数据库

我们在PostgreSQL的CREATE INDEX命令中突出显示了一些重要参数。

了解您的数据库管理系统及其优化器,数据库,数据库

  • UNIQUE检查重复值。
  • method可以是btree(默认)、hash、gist和其他索引类型(见上文)。
  • predicate定义了一个部分索引。

索引扫描

创建索引-查询

找出标识符为123的仓库的名称。

了解您的数据库管理系统及其优化器,数据库,数据库了解您的数据库管理系统及其优化器,数据库,数据库

如果统计数据表明需要检索的数据量很小且可用索引提供直接访问,则优化器使用索引扫描。

了解您的数据库管理系统及其优化器,数据库,数据库

位图堆扫描-创建索引

在warehouse的w_city属性上创建一个B-tree索引(默认)。

了解您的数据库管理系统及其优化器,数据库,数据库

了解您的数据库管理系统及其优化器,数据库,数据库

位图索引扫描

如果统计数据表明需要检索的数据量适中且可用索引,则基于索引构建的位图可能提供某种直接访问。优化器使用位图堆扫描。

了解您的数据库管理系统及其优化器,数据库,数据库

位图索引扫描通过PostgreSQL中的位图索引扫描后跟位图堆扫描来实现。位图索引通常用于存在多个条件或处理低基数列时。

我们可以使用索引对表进行聚类。如果有更新,这需要定期进行。Postgres不会动态维护聚类表!

了解您的数据库管理系统及其优化器,数据库,数据库

多列索引

多列索引可用于索引扫描。

了解您的数据库管理系统及其优化器,数据库,数据库

即使只有部分条件,也可以使用多列索引进行索引扫描。

了解您的数据库管理系统及其优化器,数据库,数据库

这只有在条件涉及多列索引的前缀(从左到右的属性)时才有效。

了解您的数据库管理系统及其优化器,数据库,数据库

索引仅扫描

根据查询,扫描可能仅在索引内完成,而无需访问数据。这称为索引仅扫描。

了解您的数据库管理系统及其优化器,数据库,数据库

了解您的数据库管理系统及其优化器,数据库,数据库

同样,对于多列索引,这取决于前缀

了解您的数据库管理系统及其优化器,数据库,数据库

可以通过在索引中包含更多列来促进索引仅扫描

了解您的数据库管理系统及其优化器,数据库,数据库

何时发生?

找出物品和仓库,其中物品数量低于100。

了解您的数据库管理系统及其优化器,数据库,数据库

1. 顺序扫描 

了解您的数据库管理系统及其优化器,数据库,数据库

2. 创建索引

在stocks的s_qty属性上创建一个B-tree索引。

了解您的数据库管理系统及其优化器,数据库,数据库

有了索引和充分的统计数据,优化器可以选择使用从索引构造的位图。

了解您的数据库管理系统及其优化器,数据库,数据库

即使有了索引和充分的统计数据,优化器也可以选择顺序扫描。

了解您的数据库管理系统及其优化器,数据库,数据库

有了索引和充分的统计数据,优化器可以选择使用索引进行索引扫描,但它没有...

了解您的数据库管理系统及其优化器,数据库,数据库

条件不具选择性

s.s_qty >= 100:估计有38222行中的44912行(85%)满足条件。 优化器选择顺序扫描。

条件适度选择性

s.s_qty < 100:估计有6690行中的44912行(15%)满足条件。 优化器选择位图堆扫描。

条件非常选择性

s.s_qty >= 1000:估计有37行中的44912行(不到0.1%)满足条件。优化器曾经选择索引扫描,但现在选择位图堆扫描。

了解您的数据库管理系统及其优化器,数据库,数据库了解您的数据库管理系统及其优化器,数据库,数据库了解您的数据库管理系统及其优化器,数据库,数据库文章来源地址https://www.toymoban.com/news/detail-833614.html

到了这里,关于了解您的数据库管理系统及其优化器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库系统课设--人事管理系统

    目录 前言 一,课程设计的目的 二,总体设计 1 系统需求分析 1.1 系统功能分析 1.2 系统功能模块设计(划分) 1.3 与其它系统的关系 1.4 数据流程图 2 数据库设计 2.1 数据库需求分析 2.2 数据库概念结构设计 2.3 数据库逻辑结构设计 2.4 数据库的建立 2.4.1 数据库的建立 2.4.2 初始

    2024年02月06日
    浏览(59)
  • 学生信息管理系统(数据库)

    要求实现功能: (1)学生、课程、教师等信息的录入和维护,一门课只由一位教师上,一位教师可上多门课 (2)学生进行选课,一学期约20学分 (3)教师在每门课结束后给出学生成绩,不及格则补考后记录补考成绩 (4)能明细查询某学生的选课情况及某课程的选修学生情

    2024年02月03日
    浏览(46)
  • 网吧管理系统数据库设计

    摘  要:网吧管理系统是为解决大型网吧面临的复杂电脑管理业务流程和繁琐的客户服务、信息处理业务而开发的管理系统。它主要包含系统管理、会员管理、日常管理、查询管理、统计报表五个模块。数据库设计过程中主要进行了分析网吧电脑使用业务方面的需求,进行概

    2024年02月08日
    浏览(53)
  • 梅西生涯数据管理系统(Python+数据库)

    用 Tkinter + MySQL 实现简单的数据分析系统,一起来看看吧! 本篇博客主要分为两大部分,一部分主要是对数据库的操作,另一部分主要是使用Python进行一些程序设计与数据分析。 代码下载地址:https://download.csdn.net/download/m0_68111267/88029856 python tkinter mysql 1. 导入数据 以下是My

    2024年02月08日
    浏览(54)
  • 数据库系统实现 大学生宿舍管理系统

    目录 目录 第一章绪论 1.1项目研究的背景 第二章可行性分析与需求分析 2.1可行性分析 2.1.1操作可行性 2.1.2技术可行性 2.1.3设计可行性 2.2需求分析 2.2.1处理对象分析 2.2.2功能需求分析 2.2.3安全性与完整性分析 第三章系统设计 3.1系统架构图 3.2 E-R图 3.3 数据结构 3.3.1 用户信息结

    2024年02月06日
    浏览(46)
  • 使用MariaDB数据库管理系统

    初始化MariaDB服务 //再确认mariadb数据库软件程序安装完毕并成功启动后请不要立即使用。为了确保数据库的安全性和正常运转,需要做以下5个操作 1.设置root管理员在数据库中的密码值(该密码并非root管理员在系统中的密码,这里的密码值默认应该为空) 2.设置root管理员在数据

    2024年02月19日
    浏览(50)
  • GaussDB数据库管理系统介绍

    内部: 云化+自动化方案。通过数据库运行基础设施的云化将DBA(数据库管理员)和运维人员的日常工作 自动化。 外部: 采用与数据库周边生态伙伴对接与认证的生态连接融合方案,解决开发者/DBA难获取、应用难对接等生态难题。 分布式: 分布式事务能力+跨DC(Data Center,数据

    2024年02月08日
    浏览(54)
  • 企业设备管理系统数据库设计

    企业的设备管理在企业的生产制造和管理过程之中意义比较重大,明确企业的设备的产权和维护成本对于企业的成本控制和财务管理之中起到了重要的作用。随着市场竞争的加剧,现代企业所处的市场环境发生了深刻的变革,企业竞争越来越强调基于客户需求的竞争。因此,

    2024年02月04日
    浏览(51)
  • 数据库课设:机房管理系统

    􀀂 实现机房、上机类型等基本信息的管理; 􀍅 􀀂 实现机器信息、管理人员信息的管理; 􀍅 􀀂 实现上机管理,包括机房名称、在用电脑信息、已上机时长和使用人员信息、    和各个机房空闲电脑数量等; 􀍅 􀀂 实现收费管理,包括机房电脑信息、计费信息、上机人

    2024年02月08日
    浏览(56)
  • 销售管理系统 | 数据库课设

    前言 为了期末的数据库课设,这是最初的目的。在进行这个项目之前,我已经完成了数据库的相应实验,对数据库的操作有一定的了解。整个项目时间:1月8日-1月13日,期间还去考了个科三。 前些日子分别用phpstudy和云服务器搭建了开源的web项目(PHP+MySQL+Apache),简单地熟悉了

    2024年02月11日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包