首页 > 数据库 >Postgresql SQL 优化 两个模型与数据存储

Postgresql SQL 优化 两个模型与数据存储

时间:2023-06-22 13:05:20浏览次数:53  
标签:存储 Postgresql 数据 数据库 SQL 执行 优化


Postgresql  SQL 优化  两个模型与数据存储_大数据

这里写的是一个系列,这是系列的第三篇,这个系列主要是针对SQL优化,前两篇的地址下文字的最下方。

接上次,上次提到了SQL 优化的原理与理论,实际上SQL 优化的原理是离不开两个模型与数据存储的, 整体SQL 优化的核心也在于两个模型和数据存储。简化的说明这两个模型

1  数据访问成本模型

2  数据访问算法

3  物理数据存储单元与逻辑数据存储单元

我们先看看数据访问成本模型,成本模型分为两类,(以下的解释来自于ORACLE 官网,基于这一方面的优势,还是来看看ORACLE对于这两种方式的解释)

1 cost-based optimizer 

cbo 是目前主流的数据库执行计划的首选模式,根据数据库中的统计信息(实际上是每个表中的统计信息)来根据数据库中的cbo计算引擎来计算出多个执行的可能性,并从中选择一个总成本最低的。

2  Rule based optimizer

这个是最初数据库的执行器的执行方式,他根据一定的预定的规则来产生执行计划,而产生的执行计划是无法获知其成本的,只是按照预定的设计来执行,RBO的执行方式基本上已经从先进的商业数据库中剔除,或正在剔除,保留的原因是,基于CBO的方式中如果无法获得准确的统计分析信息,则RBO在执行中还是一种可以使用的执行方式。

基于以上的描述,与之有关的内容包含了 表和索引的状态(如果索引受损或失效),系统的状态(这里指的包含的硬件系统的状态),数据库中锁的状态,事务的状态,事务的隔离型(对隔离型type), 数据库系统,乃至操作系统的一些参数的设置, 以上这些统统都会影响一个SQL的运行以及效率。

所以多说一句,SQL优化恰恰是在不考虑以上的状态的一种行为,所以SQL优化是有局限性的,很多不入行或开发人员,一贯的认为SQL优化就是拯救一个烂系统的救命绳,其实这样的想法是很外行的思维方式,DBA必须予以纠正,否则要不你就是救世主,要比你就是整个“公司” 的罪人和无能者。

2 数据访问算法(模型)

在我们获得了执行计划后,我们就的去执行,而执行中就会提到另一个模型或者说是算法,举例我们在提取数据的时候是在提取数据后,将符合条件的数据保留,并汇聚,在进行计算后得出结果,还是直接将大范围的数据放入内存后,在进行过滤和汇聚在进行计算得出结果,这对硬件资源的影响是不同的,例如CPU  与内存。 部分开源数据库中有采用直接提取数据,在进行过滤的方式,典型的就是之前的MYSQL  5.X ,准确的说是5.6之前的MYSQL ,在没有条件下推的方法下,查询效率是比较低的,后续MYSQL 提供了 IRR 则缓解了一部分查询性能低的问题。

3  数据存储结构

数据的存储结构对于数据提取的性能是有影响的,数据库存储的结构和组织结构,主要有以下几种,HEAP 堆表结构, PG采用的就是这样的数据存储方式,BTREE 数据存储结构,MYSQL 存储数据的方式,还有LSM TREE 的方式一些新型的数据库采用这样的方式进行数据的存储。

这些存储结构会影响数据的提取的方式和性能。同时在存储数据的页面中,保留多少预留的空间为多次数据的变化做充足的准备,降低页分割的情况出现也是提高数据库性能的注意点。

Postgresql  SQL 优化  两个模型与数据存储_大数据_02

综上所述,SQL运行的效率与很多因素都有关,并不是简单的添加索引提高性能那么简单,并且但从某一种方式去思维SQL 优化也并不是一件稳定或有确定性的工作。

Postgresql  SQL 优化  两个模型与数据存储_mysql_03

前两期

POSTGRESQL SQL优化 重优化轻设计对不对与优化需要掌握的知识类别

https://mp.weixin.qq.com/s?__biz=Mzg4NDA0NTEwNA==&mid=2247494440&idx=1&sn=7eaf6a22b78f8229376fa8c4a3f48bc6&chksm=cfbc8f77f8cb0661a2db86558b347ee654a31284934cccd69cb3451968c3b4c47563d61802a7&token=160431904&lang=zh_CN#rd

postgresql SQL 优化 -- 理论与原理

https://mp.weixin.qq.com/s?__biz=Mzg4NDA0NTEwNA==&mid=2247494506&idx=1&sn=61dfd3d8a7ccaba32321bb2f5a61d665&chksm=cfbc8f35f8cb0623728dcef8dbb6c1dd46ad884e7f370dfd04e66117de779dce15c80b76a541&token=2088516272&lang=zh_CN#rd

标签:存储,Postgresql,数据,数据库,SQL,执行,优化
From: https://blog.51cto.com/u_14150796/6534673

相关文章

  • MYSQL 从performance_schema说起,但不止于PS (1)
    以下的内容,希望你的环节是在8.011以上的环境中操作,部分需要在8.018以上环境操作MYSQL如果你在使用MYSQL8的版本,那么performanceschema的确的重新认识一下了。在重新认识mysql的performance_schema之前我们有一些需要在强化的知识。分别是threads,instruments,consume......
  • PostgreSQL 从开发要换PG表字段的 collaion 说起 到 程序员别异想天开了
    2021年绝对是一个有意思的念头,估计过10年都会想到今年的一些变革,很多人都会被影响,改变,重新开始,或寻找新的路径。归正题,新公司的开发小朋友,对DB提出了一个问题,就是要修改某个表的字段的collation,究其原因为了某些业务中这个字段的排序。然后我就告诉DB,NONONO,究其原因曾经SQLSE......
  • MYSQL 从performance_schema说起,但不止于PS ,sys 到 information_schema?(4)
    接着上期sys库的内容,sys库的监控的内容基本上可以满足大部分对于性能分析的需求,SYS库中的信息可以分为2种数据展示的方式,和10+种的信息展示类别。我们下面来说一说。基于ORACLE的设计理念,SYS库中的信息分为一X$为开头的VIEW的信息和以普通表名为开头的信息。两者的信息内容是相......
  • PostgreSQL autovacuum 5 怎么监控(autovacuum 扫描表工作的百分比)
    PostgreSQL最大的问题就是vacuum,只要PG的实现多版本和UNDO的方式不改变,那么这个话题就会一直继续,到永远。前面四期讲了autovacuum的触发条件,源代码,怎么调整参数,优化,今天最后一章,的说说怎么进行监控,并且评定你的autovacuum的工作是合格的。下面的内容主要是基于几点来围绕的 监......
  • PostgreSQL REPMGR “靠谱”的高可用方式
    REPMGR是一种方便简单的适合企业使用的高可用方式,为什么选择REPMGR作为单体PG的高可用方式1 REPMGR是这三种里面最简单的高可用的方式,这里的意思是结构节点,搭建简单,处理简单2 在网络有波动的情况下,比较好控制,如果遇到网络上的短暂的问题,REPMGR通过一系列的方式可以避免......
  • POSTGRESQL 事务控制(一) (写着费力,看着费劲系列)
    最近发现一个问题, 最近写的关于感性的文字如 DBA职业迷茫何去何从,和另外一篇都是较高的用户读取量,而反观到技术性的文字,基本上都不太高,能到400以上就属于"上帝帮助"了原因我是明白的, 大众化的东西受众必然很多,反而纯技术性的文字实撰写困难,首先自己要理解,然后在......
  • PostgreSQL 怎么通过命令来恢复删除的数据
    最近一段工作较忙,更新的速度可能会减慢,敬请见谅,后期采用隔天更新的方式误删除数据的情况,一般都是通过备份,或日志来进行恢复,当然ORACLEFLASHBACK的模式实际上也是对一定期限的数据进行数据的恢复。 对于POSTGRESQL是否可以进行这样的操作,根据POSTGRESQL的原理来说是可以的。下面......
  • Polardb 核心存储 polarfs 是怎么进行数据存储的之核心构造(2)--译
    接上期,PolarFS主要由两层组成,一层是存储管理层,上面一层是文件系统元数据和提供文件系统API层,存储层负责所有节点的磁盘资源,并为每个数据库实例提供数据库卷。文件系统层在此基础上提供文件管理,负责文件系统元数据并发访问的互斥。下图为展示POLARFS集群中的主要组件,libpfs是一个......
  • POSTGRESQL 15 pg_basebackup 新功能,LOCAL backup 与 数据强力压缩
    与MYSQL不一样,开源XTRABACKUP的备份软件无法跟上MYSQL版本的更迭,PG这点做的是一贯的好。从来没有让人失望过。所以POSTGRESQL数据的备份一直就不是一个问题,众多的工具以及pg_basebackup良好的功能,让POSTGRESQL备份起来速度与硬件有关。但基于POSTGRESQL本身的原理,数据库表......
  • Polardb 核心存储 polarfs 是怎么进行数据存储的(1)--译
    POLARDB数据库中有一个核心是他重新设计的存储系统,polarfs,polarfs是怎么设计的架构是怎样的,下面根据官方的一篇详细的英文文档作为翻译的目标https://www.vldb.org/pvldb/vol11/p1849-cao.pdf译PolarFS是专门为polardb设计的分布式文件系统,他具有低延迟,高可用的特点并且这款存......