文章 2017-12-19 来自:开发者社区

PostgreSQL在何处处理 sql查询之十一

接前面,继续进行分析: 前面已经说过,在planner函数运行时,发生了实际物理磁盘访问。 /***************************************************************************** * * Query optimizer entry point * * To support loadable plugin...

文章 2017-12-19 来自:开发者社区

PostgreSQL在何处处理 sql查询之二十

看代码: /* * mdopen() -- Open the specified relation. * * Note we only open the first segment, when there are multiple segments. * * If first segment is not present, either ereport or return N...

文章 2017-12-19 来自:开发者社区

PostgreSQL在何处处理 sql查询之三十四

接前面,回溯调用关系: exec_simple_query --> PortalStart --> ExecutorStart --> StandardExecutorStart --> InitPlan 再回到 exec_simple_query 来: 事前知道,表 tst04 对应的文件名为 16393。 postgres=# select oid from pg...

文章 2017-12-19 来自:开发者社区

PostgreSQL在何处处理 sql查询之四十二

接前面,再次上溯。可以知道: ExecProcNode: 会根据情况不同,将PlanNode转为各种类型Node再参与运算: TupleTableSlot * ExecProcNode(PlanState *node) { //ExecProcNode fprintf(stderr,"ExecProcNode:node->ss_currentScanDesc->r...

文章 2017-12-19 来自:开发者社区

PostgreSQL在何处处理 sql查询之五十三

接前面。 从PostgreSQL的 log中,看到 计划树中有一个  plan_rows的东西。 分析它的来源和来龙去脉: grouping_planner --> create_plan --> create_plan_recurse --> create_scan_plan --> create_seqscan_plan --> copy_path_co...

文章 2017-12-15 来自:开发者社区

PostgreSQL在何处处理 sql查询之六十

开始 用 explain来看hash join: postgres=# explain select dept.no_emps,emp.age from dept,emp where emp.name = dept.mgr and dept.dept_name = 'shoe'; QUERY PLAN ...

文章 2017-12-13 来自:开发者社区

PostgreSQL在何处处理 sql查询之二十二

接前面。 回到程序调用关系上来: estimate_rel_size -> RelationGetNumberOfBlocks->RelationGetNumberOfBlocksINFork ->Smgrnblocks->mdnblocks... 折腾了一圈,就是为了评估一个表的大小。 那么,我们所获得的block,它到底是个什么单位? BlockNumber md...

文章 2017-12-13 来自:开发者社区

PostgreSQL在何处处理 sql查询之五十二

开始 /* * Ready to do the primary planning. */ final_rel = make_one_rel(root, joinlist);  展开: /* * make_one_rel * Finds all possible access paths for executing a query, retur...

文章 2017-12-13 来自:开发者社区

PostgreSQL在何处处理 sql查询之五十八

看到了其源代码中的一段注释,似乎认识又提高了一层: /* * INTERFACE ROUTINES * ExecInitNode - initialize a plan node and its subplans * ExecProcNode - get a tuple by executing the pla...

文章 2017-12-12 来自:开发者社区

PostgreSQL在何处处理 sql查询

如果我开一个psql窗口,来输入sql文,它在数据库的何处被解析?在何处被"真正"处理? postgres.c 的 int PostgresMain(int argc, char *argv[], const char *username)函数中, 在 PostgresMain 的 for 循环中, 调用  static void exec_simple_q...

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

产品推荐

数据库

分享数据库前沿,解构实战干货,推动数据库技术变革

+关注