自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (21)
  • 收藏
  • 关注

原创 postgresql -- 等待事件

等待事件是做性能优化、故障诊断的利器。Oracle数据库在7.3开始通过OWI提供了等待事件接口,自此开始,等待事件已经成为DBA分析数据库的最为重要的手段之一。PG及其相近与相兼容的数据库的等待事件 .

2024-09-06 22:02:51 245

原创 Greenplum 日常维护命令

评:这个说的不全面,vacuum分两种,一种是analize,优化查询计划的,还有一种是清理垃圾数据,postres删除工作,并不是真正删除数据,而是在被删除的数据上,坐一个标记,只有执行vacuum时,才会真正的物理删除,这个非常重用,有些经常更新的表,各种查询、更新效率会越来越慢,这个多是因为没有做vacuum的原因。评:少写了个analyze,如果只是explain,统计出来的执行时间,是非常坑爹的,如果希望获得准确的执行时间,必须加上analyze。-m:只列出mirror 实例的状态和配置信息。

2024-05-18 11:14:52 557

原创 Tbase 源码 (九)

Tbase-两阶段事务

2022-09-03 21:07:49 740 1

原创 Tbase 源码 (八)

TBase- BUFFER POOL MANAGER

2022-08-20 20:36:41 651

原创 Tbase 源码 (七)

Tbase -主备间wal日志同步

2022-08-10 22:58:43 306

原创 ClickHouse源码简析

ClickHouse源码简析

2022-07-30 11:54:25 1417

原创 Tbase 源码 (六)

Executor--执行可优化语句

2022-07-29 22:23:38 780

原创 Tbase 源码 (五)

Executor--执行数据定义语句

2022-07-25 21:43:17 1049

原创 Tbase 源码 (四)

Executor-- 执行器策略

2022-07-22 23:32:40 265

原创 Tbase 源码 (三)

Tbase 源码 (三) 查询优化——生成路径

2022-07-17 21:17:17 757

原创 Tbase 源码 (二)

Tbase 源码 (二) 查询优化——生成路径

2022-07-17 10:01:35 431

原创 Tbase 源码 (一)

Tbase 源码 分布式MPP数据库

2022-07-16 09:56:23 1038

原创 Postgres-XL 10 使用介绍(三)

##### systemd RemoveIPC##### Resource Limits##### Linux Memory Overcommit##### Linux Huge Pages像PostgreSQL一样,使用大的连续页面可以减少使用大块连续内存时的开销,尤其是当使用大值的shared_buffers时。 要在PostgreSQL中使用此功能,您需要具有`CONFIG_HUGETLBFS = y`和`CONFIG_HUGETLB_PAGE = y`的内核。 您还必须调整内核设置`vm.nr_hu

2022-06-19 10:51:01 358

原创 Postgres-XL 10 使用介绍(二)

#### 5.3 Constraints数据类型是一种限制可以存储在表中的数据类型的方法。 但是,对于许多应用程序,它们提供的约束过于粗糙。 例如,包含产品价格的列可能只应接受正值。 但是没有标准的数据类型只接受正数。 另一个问题是,您可能希望相对于其他列或行约束列数据。 例如,在包含产品信息的表中,每个产品编号应只有一行为此,SQL允许您定义列和表的约束。 约束使您可以根据需要尽可能多地控制表中的数据。 如果用户尝试将数据存储在违反约束的列中,则会引发错误。 即使该值来自默认值定义,也是如此。#####

2022-06-19 10:48:41 513

原创 Postgres-XL 10 使用介绍(一)

Postgres-XL 是一个基于PostgreSQL的一个开源项目,在此基础上提供可扩展的写入操作和大批量的并行处理.并且它是一个数据库组件集合体,可以将其安装在多个操作系统或虚拟机上.

2022-06-19 10:42:57 898

原创 Postgres-XL 简析

这个项目的背后是一家叫做stormDB的公司。项目代码基于postgres-xc,开源版本应该是stormdb的一个分支。In 2010, NTT's Open Source Software Center approached EnterpriseDB tobuild off of NTT OSSC's experience with a project called RitaDB andEnterpriseDB's experience with a project called Grid..

2022-05-30 22:02:54 2257

原创 Postgres中的锁

在PostgreSQL中有三种级别的锁

2022-04-13 20:06:28 635

原创 postgresql源码(十六)——Executor(查询执行模块之——control节点(下))

5.ModifyTable节点先看一个ModifyTable节点的例子:postgres=# explain update test_01 set id = 5 where name = 'xxx'; QUERY PLAN--------------------------------------------------------------- Update on test_01 (cost=0.00..23.75 rows=6 widt

2022-04-13 20:02:40 266

原创 postgresql源码(十五)——Executor(查询执行模块之——control节点(上))

控制节点控制节点用于完成一些特殊的流程执行方式。由于PostgreSQL为査询语句生成二叉树状的査询计划,其中大部分节点的执行过程需要两个以内的输入和一个输出。但有一些特殊的功能为了优化的需要,会含有特殊的执行方式和输人需求(例如对于update、INSERT和DELETE,在普通的SELECT基础上有一个ModifyTable节点,UNION操作在一个计划节点就执行多个表(大于2)的合并,Append节点并未把UNION涉及的多个表放在孩子节点中,而是将这些表组成一个链表放在Append节点的appe

2022-04-13 19:59:21 252

原创 postgresql源码(十四)——Executor(查询执行模块之——Join节点(下))

3.HashJoin 节点postgres=# explain select a.*,b.* from test_dm a join test_dm2 b on a.xxx = b.xxx; QUERY PLAN-------------------------------------------------------------------------------- Hash Join (cost=34846.00..30

2022-04-13 19:55:43 398

原创 postgresql源码(十一)——Executor(查询执行模块之——Materialization节点(上))

物化节点顾名思义,物化节点是一类可缓存元组的节点。在执行过程中,很多扩展的物理操作符需要首先获取所有的元组后才能进行操作(例如聚集函数操作、没有索引辅助的排序等),这时要用物化节点将元组缓存起来。下面列出了PostgreSQL中提供的物化节点。 T_MaterialState, T_SortState, T_GroupState, T_AggState, T_WindowAggState, T_UniqueState, T_HashState, T_SetOpState, T_Lo

2022-04-13 19:42:56 513

原创 postgresql源码(十二)——Executor(Materialization节点(下))

7.SetOp节点SetOp节点用于处理集合操作,对应于SQL语句中的EXCEPT、INTERSECT两种集合操作,至于另一种集合操作UNION,可直接由Append节点来实现。一个SetOp节点只能处理一个集合操作(由两个集合参与),如果有多个集合操作则需要组合多个SetOp节点来实现。SetOp节点仅有一个左子节点作为输人,其左子节点是一个Append节点或者是一个Sort节点(Sort节点的子节点是一个Append节点),其低层的Append节点中只放置两个子计划用于表示参与集合操作的左集合和

2022-04-13 19:40:47 325

原创 postgresql源码(十三)——Executor(Join节点(上))

Join节点JOIN节点有以下三种:T_NestLoopState, T_MergeJoinState, T_HashJoinState,连接类型节点对应于关系代数中的连接操作,PostgreSQL中定义了如下几种连接类型(以T1 JOIN T2 为例): 1)Inner Join:内连接,将T1的所有元组与T2中所有满足连接条件的元组进行连接操作。 2)Left Outer Join:左连接,在内连接的基础上,对于那些找不到可连接T2元组的T1元组,用一个空值元组与之

2022-03-30 17:40:48 351

原创 postgresql源码(十)——Executor(Scan节点(下))

剩下的七个Scan节点 T_SubqueryScanState, T_FunctionScanState, T_ValuesScanState, T_CteScanState, T_WorkTableScanState, T_ForeignScanState, T_CustomScanState,8.SubqueryScan 节点SubqueryScan节点的作用是以另一个査询计划树(子计划)为扫描对象进行元组的扫描,其扫描过程最终被转换为

2022-03-30 17:32:20 303

原创 postgresql源码(九)——Executor(Scan节点(上))

从前面介绍的可优化语句处理相关的背景知识、实现思想和执行流程,不难发现可优化语句执行的核心内容是对于各种计划节点的处理,由于使用了节点表示、递归调用、统一接口等设计,计划节点的功能相对独立、代码总体流程相似,下面介绍执行器中各种计划节点的相关执行过程。在PostgreSQL中,计划节点分为四类,分别是控制节点(Control Node)、扫描节点(ScanNode),物化节点(Materialization Node)、连接节点(Join Node) 。 控制节点:是一类用于处理特殊情况的节点,用

2022-03-30 17:15:18 547

原创 postgresql源码(八)——Executor(可优化语句的执行)

2.可优化语句的执行可优化语句的共同特点是它们被查询编译器处理后都会生成査询计划树,这一类语句由执行器(Executor)处理。该模块对外提供了三个接口: ExecutorStart、ExecutorRun 和 ExecutorEnd,其输入是包含査询计划树的数据结构QueryDesc,输出则是相关执行信息或结果数据。如果希望执行某个计划树,仅需构造包含此计划树的QueryDesc,并依次调用ExecutorStart、ExecutorRun、ExecutorEnd 3个过程即能完成相应的处理过程。从我

2022-03-30 17:02:49 491

原创 postgresql源码(七)——Executor(数据定义语句的执行)

1.数据定义语句的执行数据定义语句(也就是之前我提到的非可优化语句)是一类用于定义数据模式、函数等的功能性语句。不同于元组增删査改的操作,其处理方式是为每一种类型的描述语句调用相应的处理函数。数据定义语句的执行流程最终会进入到ProcessUtility处理器,然后执行语句对应的不同处理过程。由于数据定义语句的种类很多,因此整个处理过程中的数据结构和方式种类繁冗、复杂,但流程相对简单、固定。这里我们以Create table为例说明数据定义语句的具体处理过程。1.1数据定义语句执行流程由于P

2022-03-30 16:57:51 274

原创 postgresql源码(六)——Executor(查询执行策略)

从以下五个部分介绍查询执行模块(很可能要分成四到五篇文章来阐述,毕竟是比查询规划还要复杂的模块):1.查询优化策略2.非可优化语句的执行3.可优化语句的执行4.计划节点5.其它子功能介绍查询执行器的框架结构如下图所示。在exec_simple_query函数中,调用查询编译模块之后,就进入了查询执行器模块。在该模块中,就是按照前一阶段查询规划模块锁生成的查询计划,有机第调用存储、索引,并发等模块来完成数据的读取或者修改的过程。在本模块中,总共下属四个子模块,分别是:Port.

2022-03-30 16:52:48 468

原创 postgresql源码(五)——Planer(查询规划模块)(下)

查询规划的主要工作由grouping_planner函数完成。在具体实现的时候,针对postgresql中独有的继承表,程序使用inheritance_planner函数来解决,该函数主要是先将继承表的继承关系变换为非继承表来处理,然后仍然调用的是grouping_planner函数来完成查询规划的工作。3.查询规划处理这里大家真的要做好准备,因为grouping_planner函数本身就有将近1000行~那什么,我们还是先上图吧。有图更清楚,文字太多大家也会晕的。以下是grouping_pla

2022-03-30 16:47:46 419

原创 postgresql源码(四)——Planer(查询规划模块)(上)

1.查询规划模块总体概况废话不多说,我先上图。下图大概的刻画了查询规划模块里主要的函数调用关系,当然啦,最下层只画到主处理函数,主处理函数内部的调用关系在介绍每个主处理函数的时候再细细的说吧。我简单介绍下吧。exec_simple_query函数是负责查询处理的主函数,在进行查询规划之前,它已经调用了查询分析和查询重写模块。还记得上一篇博文的查询重写模块么?该模块返回的是重写后的查询树链表。这里exec_simple_query函数将重写后的查询树链表交给查询规划模块进一步处理。查询规划模块的入

2022-03-30 16:41:21 613

原创 postgresql源码(三)——Rewrite(查询重写模块)

​​​原文上一篇博文我们阅读了postgresql中查询分析模块的源码。查询分析模块对前台送来的命令进行词法分析、语法分析和语义分析后获得对应的查询树(Query)。在获得查询树之后,程序开始对查询树进行查询重写处理。这一篇文章我们进入查询重写模块源码的阅读。还记得上一篇文章的那张函数调用关系图么?不记得没关系,我再放一遍。上次的查询分析模块走了1~7这些步骤。而查询重写模块即如上图的标记所示,函数pg_rewrite_query是进行查询重写处理的入口函数。该函数定义在s..

2022-01-31 13:49:37 784

原创 postgresql源码(二)——Parser(查询分析模块)

​​​​​​非我在2016-11-09原文上篇博客简要的介绍了下psql命令行客户端的前台代码。这一次,我们来看看后台的代码吧。十分不好意思的是,上篇博客我们只说明了前台登陆的代码,没有介绍前台登陆过程中,后台是如何工作的。即:后台接到前台的连接请求后发生了什么?调用了哪些函数?启动了哪些进程?那么,我们就先讲讲后台的工作流程吧。1.postgresql后台工作流程这里首先我们要知道postgresql是典型的“Server/Client”的模式。即服务器后台有一个主进程(p..

2022-01-31 13:41:37 1003

原创 postgresql源码(一)——psql命令

postgesql的源码都已经百万级了。单单.c文件都有1000+。怎么办,硬着头皮看吧,所幸postgrsql的源码很规范,这应该会给我省不少事。给自己顶一个小目标:每天看一点源码,每天都更新做不到,每周都更新吧,每周至少一篇。希望看到我的博客的朋友们也和我一起学习,我有什么理解不对的地方,也希望大家提出意见~大部分人初次接触postgresql一般都是接触psql这个命令行工具吧,那么我们今天就从psql程序的源码开始看吧。psql的源码分为两部分,一部分是psql的前台处理代码,...

2022-01-31 10:37:12 865

flink-1.11.2-bin-scala_2.12 linux安装包

flink-1.11.2-bin-scala_2.12 linux安装包

2020-10-14

银行核心系统入门

银行核心系统入门

2015-04-16

C语言实现的简单线程池

C语言实现的简单线程池

2015-04-16

awk手册.pdf

awk手册.pdf

2015-04-16

awk命令简介

awk命令 简介

2015-04-16

GNU makeman.pdf

GNU makeman.pdf ,GNU makefile 详解

2014-05-20

C&C++Lib.chm

C&C++Lib.chm

2014-05-20

LinuxCMD.CHM

LinuxCMD.CHM

2014-05-20

SSHSecureShellClient

SSHSecureShellClient, 小巧易用的ssh客户端,ftp工具等

2014-05-20

dbvis_windows_8_0_6

dbvis_windows_8_0_6, 有破解jar和license ,好用的数据库管理软件,db2, oracle, informix等

2014-05-20

SecureCRT7.zip

SecureCRT7 安装包及 破解工具,破解方法

2014-05-16

Linux下生成core dump

Linux下如何生成core dump

2013-12-26

多线程-共享内存

Posix多线程-共享内存

2013-12-26

linux 进程通信

linux 进程通信.

2013-12-26

linux 破解root密码

linux 破解root密码

2013-12-26

linux下安装DB2的步骤

linux下安装DB2的详细步骤 , step by step

2013-12-25

Network Programming

Network Programming for Microsoft Windows 2nd

2007-12-15

MFC深入浅出

MFC深入浅出**(简介)**

2007-12-15

SQL Server精华 (CHM)

SQL Server精华 (CHM)

2007-12-15

空空如也

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

TA关注的人

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