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

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

看hash join 里的概念: numbuckets与numbatches: numbuckets是 在内存中,hash表里面,"桶"的个数。 numbatches是 如果hash表过大,在内存中放不下,则要分多次进行。 void final_cost_hashjoin(PlannerInfo *root, HashPath *path, JoinC...

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

PostgreSQL在何处处理 sql查询之二

在exec_simple_query中,代码如下: 1 /* 2 * exec_simple_query 3 * 4 * Execute a "simple Query" protocol message. 5 */ 6 static void 7 exec_simple_query(const char *query_string) 8 { 9 ...

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

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

再次回到  estimate_rel_size 我发现, 在入口参数 rel中, rel->rd_rel->reltuples 的值已经完全准备好了: /* * estimate_rel_size - estimate # pages and # tuples in a table or index * * We also estimate the fraction...

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

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

接前面: Query *parse = root->parse; List *tlist = parse->targetList; int64 offset_est = 0; int64 count_est = 0; double limit_tuples = -1.0; ...

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

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

此处,分析 add_paths_to_joinrel: /* * add_paths_to_joinrel * Given a join relation and two component rels from which it can be made, * consider all possible paths that use the two component...

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

PostgreSQL在何处处理 sql查询之九

调用关系:PortalRun -> PortalRunSelect -> ExecutorRun ExecutorRun,实际上会去运行 standard_ExecutorRun ->ExecutePlan: /* ---------------------------------------------------------------- * Execu...

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

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

simple_exec_query函数中,有如下一句: plantree_list = pg_plan_queries(querytree_list, 0, NULL); 那么,plantree_list 里面,到底有什么,让我来给它大卸八块: plantree_list 是List *类型(指向List 的指针): typedef struct List { NodeTag ...

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

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

接前面,继续分析: PortalStrategy ChoosePortalStrategy(List *stmts) { int nSetTag; ListCell *lc; /* * PORTAL_ONE_SELECT and PORTAL_UTIL_SELECT need only consider the * si...

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

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

看: TupleTableSlot * ExecProcNode(PlanState *node) { TupleTableSlot *result; CHECK_FOR_INTERRUPTS(); if (node->chgParam != NULL) /* something changed */ ExecReScan(node); ...

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

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

现在,将要进入最为重要的部分: 分析如何制作执行计划的。 先把它简化,看看NodeTag 在 PortalStart 之前,是如何得到的。  先找到第一个相关程序: 每一种执行计划(结点单位),都有一个对应的path。 /***************************************************************************** * ...

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

产品推荐

数据库

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

+关注