自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 openGauss dfx工具梳理

pg_stat_sys_tables:视图,显示pg_catalog、information_schema模式的所有命名空间中系统表的统计信息。pg_stat_all_tables:视图,将包含当前数据库中每个表的一行(包括TOAST表),显示访问特定表的统计信息。pg_statio_user_tables:视图,包含当前数据库中用户表(包括TOAST表)的I/O统计信息。pg_statio_all_tables:视图,包含当前数据库中每个表(包括TOAST表)的I/O统计信息。

2024-03-12 15:19:33 937

原创 openGauss数据库段页式与代码走读

段页式。

2024-02-23 14:47:45 347

原创 数据库 Xlog 知识整理与代码走读

XLOG 文件是循环使用的,一旦填满一个段,它将被标记为已用,并且新的 XLOG 记录将写入下一个可用的 XLOG 段中。总的来说,XLOG 文件以固定大小的段的形式组织,通过循环使用这些段,确保了持久化记录数据库更改的机制。因为XLOG是一条条顺序写入文件的,那么每条xlog的起始位置,也就是在所有xlog文件中的偏移量,就是这条xlog的LSN,所以不难看出 LSN 是一个递增的数字。:一旦一个 XLOG 段被写满,新的 XLOG 记录将被写入下一个可用的 XLOG 段中。

2024-02-22 20:35:28 672

原创 pg\openGauss数据库 PinBuffer与LockBuffer的区别

【代码】pg\openGauss PinBuffer与LockBuffer的区别。

2024-02-21 17:02:09 161

原创 TPC-C业务模型分析

这些权重值的设定反映了在TPC-C基准测试中不同业务对性能的重要程度,有助于对数据库系统在处理不同类型事务时的性能表现进行评估。这些表共同组成了一个完整的模拟贸易公司的数据库,用于评估数据库系统在处理类似业务场景的复杂事务负载时的性能表现。表示“新订单处理业务”的权重,权重值为45,表明在整个测试中,新建订单的业务将占据较大比重。表示“订单状态查询业务”的权重,权重值为4,表明订单状态查询在整个测试中的比重较小。表示“库存查询业务”的权重,权重值为4,表明库存查询在整个测试中的比重较小。

2024-02-02 09:18:20 288

原创 openGauss 数据库启动流程走读

【代码】openGauss 数据库启动流程走读。

2024-01-23 20:33:29 427 2

原创 postgres HOT机制

HOT更新机制(Heap-Only Tuples update)是PG中一种优化技术,用于解决频繁更新操作导致的空间浪费和性能下降问题。在传统的数据库系统中,更新操作通常会导致数据页膨胀和索引频繁更新,从而影响数据库的性能和空间利用效率。因此引入HOT机制,通过修改数据存储方式和访问方式,实现了更高效的更新操作和空间利用,极大地改善了数据库的性能表现。

2024-01-19 11:46:12 341

原创 openGauss vacuum analyze代码走读

控制vacuum速度的东西,还和几个vacuum cost、delay等参数有关。入参: stmt, 表oid, 要不要搞toast,buffer使用策略。lazy vacuum 会启动一个事物,但不会再任何页面上写自己的事务号。VACOPT_NOWAIT: 取锁时不等待。只有avc才是true。函数存在于vacuum流程中的各个点。可以被语句调用,也会被avc调用。适用范围:普通表、分区。

2024-01-18 16:49:28 432 2

原创 openGauss autovacuum autoanalyze代码走读

入参:表oid、reloption、pgclass行等的信息,计数统计信息tabentry,是否支持analyze或vacuum(allowAnalyze,allowVacuum),出餐:enable_analyze,enable_vacuum, is_internal_relation。出参:dovacuum, doanalyze, need_freeze。入参:pgclass的一行。

2024-01-18 16:46:39 428

原创 GDB调试时常见错误与解决

gdb进入时出现大量报错之后bt命令打印堆栈不全,无法调试。

2023-11-29 15:58:39 520

原创 openGauss 内存问题常用定位方法

编译方式和编译普通的 openGauss 基本一致,只是在 configure 时,基于debug版本的configure命令添加一个 --enable-memory-check 参数,编译出来的就是 memcheck 版本的 openGauss。openGauss提供一个内存追踪的功能,可以追踪当前正在使用的内存上下文的申请位置,能够比较方便的用来定位内存泄漏的问题。1、根据内存视图中查到比较大的,可能存在内存泄漏的context,开启内存追踪,并重新执行相关作业。2、查看上下文的申请信息。

2023-06-11 17:50:11 789

原创 python迭代函数

需要注意的是,当一个对象既是可迭代对象,又是迭代器时,它应该返回自己本身。函数则用于返回容器中的下一个元素。如果容器中已经没有元素可以迭代了,是Python中可迭代对象和迭代器的两个核心函数。函数,因此它是一个可迭代对象和迭代器。循环遍历时,Python会自动调用。函数的对象,而迭代器是指实现了。函数用于返回一个迭代器对象,而。函数实现逐个访问元素的功能。函数获取迭代器对象,并使用。,而不是另外一个实现了。可迭代对象是指实现了。在上面的示例代码中,

2023-06-01 15:38:43 342

原创 SQL性能优化-优化执行(更新中)

prepareStatement,将查询计划保存好,之后便可省去计划生成这一环节,其中保存的计划可以是存在参数的,后续执行时,只需要将参数绑定到计划上。可以强行走向量化执行,但是其查询计划并非是代价递推生成的,而是先生成的行存计划,之后直接对行存计划进行直接改造,因此得到的向量化计划并不一定是比较好的。通常使用在OLTP场景,因为OLTP场景下的SQL,其计划生成环节在整个时间中的比例较大,且计划相对简单单一,因此将这部分提取出来,能获得很好的效果。控制,1表示单并行,即功能关闭,> 1表示并行度。

2023-04-09 21:19:39 339

原创 SQL性能优化-算子与计划(更新中)

这样可以解决索引扫描中随机读带来的不必要性能损耗的问题,但也有一个新问题,若数据量还是比较大,则位图所需要的内存空间也会很大,因此此时会将位图按照页为单位进行构造,仅记录哪些页上有目标元组,扫上来页面后,进行一次ReCheck操作,进行二次筛选。但加了Limit情况就变了,采用HashAgg需要扫描所有数据并做哈希,采用GroupAgg+Sort的方案也需要扫描所有的数据并排序,但是采用GroupAgg+IndexScan的方案时我们仅需要精准的扫描前10个分组的数据即可。

2023-04-09 19:00:40 540

原创 数据库性能(更新中)

目录基于openGauss进行性能优化常用工具与指标xnboxperf与火焰图perf火焰图sysstat 工具包iostatsarhtopnmon业务SQL优化数据库对象的设计表与索引的设计SQL重写与计划调优认识计划数据库参数调整公共通用模块参数优化器执行器存储引擎主备高可用模块资源监控类模块其他模块BIOS及操作系统调整CPU预取网卡中断常见场景基于openGauss进行性能优化常用工具与指标xnboxperf与火焰图perf火焰图sysstat 工具包iostatsarhtop

2023-04-09 16:11:39 120 1

原创 SQL性能优化-表与索引的设计(更新中)

最普通的堆表、按照一定规则进行数据拆分的分区表、按照列进行组织的列存表、底层存储进行了抽象整合的段页式表、底层使用原地更新模式的inplace-update表、会话内临时存在的临时表、结构全局存在但数据会话存在的全局临时表、不带预写日志的unlogged表…以附属表的形式存在着,当我们创建一张表的时候,一定条件下会同时创建一张toast表,若我们表内的某行数据,有一列尺寸过大,则这列数据会存放到附属toast表内,表里则存放一个指向toast表的指针。当表很多或分区很多的时候,会生成大量的文件,管理不便;

2023-04-07 17:49:43 138

原创 PBE协议

pbe执行方案我们已经了解了一个SQL的执行流程,经历了parse、analyze、rewrite、plan、execute的全流程。那么思考一下,加入我有一条sql语句,这条语句我会执行几千次几万次,每一次都需要完整的执行上述的所有流程么?很明显,不用。对于parse部分,对于一条sql,我执行千万遍,每次的parsetree也都是相同的,因此完全可以只执行一次就够了,将parsetree保存下来,之后就可以直接用了。对于analyze、rewrite部分,如果我没有执行ddl语句去修改SQL用到的

2021-10-15 16:41:15 1906 2

原创 C++ STL常用方法

目录vectorstackqueuepriority_queueMultiset…vector数组,线性,可变长。返回值函数功能-vector()空向量-vector(int n)有n个元素的向量-vector(int n, const t& t)有n个元素的向量,并初始化为t。voidpush_back(const T& x)​尾部增加一个元素​iteratorinsert(iterator it,const T&am

2021-09-24 17:29:27 78

原创 pg/og内核原理-词法语法解析(更新中)

目录概念与含义流程概览词法语法代码parsenode.hkwlist.hscan.lgram.ybison的使用查看状态机解决规约冲突plpgsql的词法与语法概念与含义一条SQL进入数据库的第一步,就是词法语法解析,那么到底什么是词法语法解析、为什么要词法语法解析,词法语法解析后生成了什么?首先我们思考,为什么要词法语法解析?其实词法语法解析,换个平易近人的称呼,也可以叫做输入处理。一条SQL字符串,里面包含的信息很多,查询的表、列、过滤条件、排序条件等等,但是这些信息都存在一个一维的字符串中,

2021-08-20 01:41:56 663

原创 一文读懂pg AGG聚集算子计划与执行(更新中)

一文读懂openGauss/pg AGG聚集算子计划与执行Agg聚集算子与聚集操作(函数)基本概念执行策略聚集操作基本执行步骤与元数据计划生成与数据结构确定操作策略关键数据结构思考数据结构基本执行流程PLAIN-AGG并行执行流程grouping set\cube的执行策略代码走读如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart

2021-08-14 16:37:31 1588 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除