调整查询代价的数据库PostgreSQL怎么用

技术调整查询代价的数据库PostgreSQL怎么用这篇文章将为大家详细讲解有关调整查询代价的数据库PostgreSQL怎么用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

本文将详细解释如何使用PostgreSQL,一个用于调整查询成本的数据库。文章内容质量较高,边肖将分享给大家参考。希望你看完这篇文章后有所了解。

大多数数据库无法在查询中更改成本评估的成本指数。假设我的系统从10,000 rpm磁盘换成可以提供每秒1366MB/S的老方法SSD查询评估,对数据库系统的查询性能有多大帮助?

PG在这方面的特殊功能是什么?让我们往下看。在此之前,我们还需要知道PG是这些数据库中唯一的一个,不能在语句中强制添加,也不能强制索引。

或者索引数据库。(pg_hint_plan可以解决这个问题)

以下是检查查询中成本的方法。

调整查询代价的数据库PostgreSQL怎么用

我们再深入一点。从下面两张图中我可以看出一些东西。在第一个图中,我们可以看到查询执行计划中的Starup成本为0。

调整查询代价的数据库PostgreSQL怎么用

以下查询的查询计划,启动成本,整体成本与启动成本相同。

调整查询代价的数据库PostgreSQL怎么用

实际上,总成本等于启动成本和运行成本。

调整查询代价的数据库PostgreSQL怎么用

另外,以第一列为例,顺序扫描没有启动成本,只有运行成本。

调整查询代价的数据库PostgreSQL怎么用

总费用是2235。这个2235是怎么来的?

调整查询代价的数据库PostgreSQL怎么用

让我看一下bloom_table占用的表行数和PAGE。

运行成本通过以下公式CPU运行成本磁盘的运行成本)*每页消耗多少行顺序扫描*多少页?

(0.01 0.0025) *100000 1.0 * 1235=1250 1235=2235

其中,0.01 0.0025 1分别来自上图。

seq_page_cost=1.0

cpu_tuple_cost=0.01

cpu_operator_cost=0.0025

,这意味着可以通过调整系统中的参数来改变一条语句的成本,其他数据库在这方面基本都是封闭的。

让我们看看如果我们离开指数,如何计算成本。

调整查询代价的数据库PostgreSQL怎么用

索引的成本将包括启动成本,从索引的第一个元组开始。

起始成本(索引)=舍入{log(2)(有多少个索引行)(Hindex 1) * 50} * CPU运行消耗

调整查询代价的数据库PostgreSQL怎么用

相关消耗=四舍五入(log2 100000 (2 1)* 50)* 0.0025=0。

42 (约等于实际是0.4175)

这里面有两个问题,1 HINDEX 到底是这么来的,这里面指的是索引的树高,其实可以通过这个公式来推出你的索引树有多高

运行的代价  (索引使用的CPU 代价 + 表使用CPU的代价) + (index_io 代价 + 表的io 代价)

在计算索引的代价中会涉及到选择率的问题,意思就是查询的谓词的频率的估计。

下面就是通过SQL 语句来给出每行的值来计算一个“采样率”的东西,也就是告诉你,这个行的值在整体的表中的占比。

调整查询代价的数据库PostgreSQL怎么用

这里由于计算比较麻烦,就不进行计算了,但这里需要注意的是

random_page_cost = 4.0 ,这个是在查询中使用索引计算 index_io_cost的一个标量,通过选择率 * index的page的数量 * random_page_cost 就可以得出索引的io cost ,而到底是走索引还是走全表扫描,执行计划会进行比对,如果走全表扫描会计算最小和最大的io cost,例如最大的 io_cost = 页面的数量 * random_page_cost 

所以调整 random_page_cost 的值会影响到底是走索引还是走全表扫描的选择性。 

下面可以举一个例子,我将配置文件中的random_page_cost 和 cpu_index_tuple_cost 进行调整,一个调小 一个调大,可以看到下图的结果,就算我有10万条记录,并且我查询的条件中的字段10万条那条都和那条不一样,并且也建立了相关的索引,最终的结果还是进行了全表扫描。

调整查询代价的数据库PostgreSQL怎么用

在将两个参数还原后,还是继续走原来的索引

调整查询代价的数据库PostgreSQL怎么用

说了这么多其实回到我开头说的问题,如果你的磁盘系统已经更改到SSD 磁盘则你的某些值是需要改变,否则可能会出现一些明明索引很好,但他选择全表扫描的情况。

关于调整查询代价的数据库PostgreSQL怎么用就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/129607.html

(0)

相关推荐

  • 染发剂什么牌子最好,用什么牌子的染发剂最安全方便

    技术染发剂什么牌子最好,用什么牌子的染发剂最安全方便很多妹子都喜欢经常换各种各样的发色染发剂什么牌子最好,我舍友就是这样一个经常折腾的妹子,在她的带动下我也染过几次,她用过的染发剂真的是比我见过的都多。不过我专门去了解了

    生活 2021年10月22日
  • td啥意思,黄金TD和白银TD是什么意思

    技术td啥意思,黄金TD和白银TD是什么意思黄金/白银td业务就是指黄金/白银T+Dtd啥意思,又叫黄金/白银延期。黄金白银td是上海黄金交易所推出的独具特色的交易品种,是以分期付款的方式进行买卖,投资者仅需交纳10%左

    生活 2021年10月29日
  • playwrightpython教程(python中class教学)

    技术Python中Playwright怎么用这篇文章将为大家详细讲解有关Python中Playwright怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Playwright是Mi

    攻略 2021年12月20日
  • 如何mysql的备份中的xtrabackup

    技术如何mysql的备份中的xtrabackup今天就跟大家聊聊有关如何mysql的备份中的xtrabackup,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。my

    攻略 2021年11月23日
  • 速度单位换算,物理长度、速度单位换算

    技术速度单位换算,物理长度、速度单位换算常用单位常用的长度单位有速度单位换算:公里{千米} (km)、分米(dm)、厘米(cm)、毫米(mm)、微米(μm)、纳米(nm)、皮米(pm)、飞米(fm)。
    (1)公里
    公里又

    生活 2021年10月30日
  • springboot自动加载新的配置(springboot动态添加数据源)

    技术Spring Boot怎么排除自动加载数据源本篇内容介绍了“Spring Boot怎么排除自动加载数据源”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧

    攻略 2021年12月17日