<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="http://200yi.com/ff_internal/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="http://200yi.com/ff_internal/feed.php">
        <title>FAIRYFAR-INTERNAL wiki:Database:PostgreSQL:执行器与优化器</title>
        <description></description>
        <link>http://200yi.com/ff_internal/</link>
        <image rdf:resource="http://200yi.com/ff_internal/lib/tpl/mnml-blog/images/favicon.ico" />
       <dc:date>2026-04-28T02:07:17+0800</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://200yi.com/ff_internal/wiki.php?id=wiki:Database:PostgreSQL:%E6%89%A7%E8%A1%8C%E5%99%A8%E4%B8%8E%E4%BC%98%E5%8C%96%E5%99%A8:PG13%20HashAggregate%E6%BA%A2%E5%87%BA%E5%8A%9F%E8%83%BD&amp;rev=1687008318&amp;do=diff"/>
                <rdf:li rdf:resource="http://200yi.com/ff_internal/wiki.php?id=wiki:Database:PostgreSQL:%E6%89%A7%E8%A1%8C%E5%99%A8%E4%B8%8E%E4%BC%98%E5%8C%96%E5%99%A8:PostgreSQL%E5%B9%B6%E8%A1%8Chash%20join%E8%A7%A3%E8%AF%BB&amp;rev=1687008318&amp;do=diff"/>
                <rdf:li rdf:resource="http://200yi.com/ff_internal/wiki.php?id=wiki:Database:PostgreSQL:%E6%89%A7%E8%A1%8C%E5%99%A8%E4%B8%8E%E4%BC%98%E5%8C%96%E5%99%A8:PostgreSQL%E5%B9%B6%E8%A1%8C%E6%9F%A5%E8%AF%A2%E6%A6%82%E8%BF%B0&amp;rev=1687008318&amp;do=diff"/>
                <rdf:li rdf:resource="http://200yi.com/ff_internal/wiki.php?id=wiki:Database:PostgreSQL:%E6%89%A7%E8%A1%8C%E5%99%A8%E4%B8%8E%E4%BC%98%E5%8C%96%E5%99%A8:PostgreSQL%E5%B9%B6%E8%A1%8C%E6%9F%A5%E8%AF%A2%E4%B8%AD%E7%9A%84%E5%8A%A8%E6%80%81%E5%85%B1%E4%BA%AB%E5%86%85%E5%AD%98%E6%9C%BA%E5%88%B6&amp;rev=1687008318&amp;do=diff"/>
                <rdf:li rdf:resource="http://200yi.com/ff_internal/wiki.php?id=wiki:Database:PostgreSQL:%E6%89%A7%E8%A1%8C%E5%99%A8%E4%B8%8E%E4%BC%98%E5%8C%96%E5%99%A8:PostgreSQL%E8%AE%A1%E5%88%92%E5%99%A8add%20path%E5%87%BD%E6%95%B0%E7%AE%80%E4%BB%8B&amp;rev=1687008318&amp;do=diff"/>
                <rdf:li rdf:resource="http://200yi.com/ff_internal/wiki.php?id=wiki:Database:PostgreSQL:%E6%89%A7%E8%A1%8C%E5%99%A8%E4%B8%8E%E4%BC%98%E5%8C%96%E5%99%A8:PostgreSQL%E8%81%9A%E9%9B%86%E7%AE%97%E5%AD%90&amp;rev=1687008318&amp;do=diff"/>
                <rdf:li rdf:resource="http://200yi.com/ff_internal/wiki.php?id=wiki:Database:PostgreSQL:%E6%89%A7%E8%A1%8C%E5%99%A8%E4%B8%8E%E4%BC%98%E5%8C%96%E5%99%A8:PostgreSQL%E6%89%BE%E5%87%BA%E8%A2%AB%E4%BF%AE%E6%94%B9%E8%BF%87%E7%9A%84%E9%85%8D%E7%BD%AE%E5%8F%82%E6%95%B0&amp;rev=1687008318&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://200yi.com/ff_internal/lib/tpl/mnml-blog/images/favicon.ico">
        <title>FAIRYFAR-INTERNAL</title>
        <link>http://200yi.com/ff_internal/</link>
        <url>http://200yi.com/ff_internal/lib/tpl/mnml-blog/images/favicon.ico</url>
    </image>
    <item rdf:about="http://200yi.com/ff_internal/wiki.php?id=wiki:Database:PostgreSQL:%E6%89%A7%E8%A1%8C%E5%99%A8%E4%B8%8E%E4%BC%98%E5%8C%96%E5%99%A8:PG13%20HashAggregate%E6%BA%A2%E5%87%BA%E5%8A%9F%E8%83%BD&amp;rev=1687008318&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-17T21:25:18+0800</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wiki:Database:PostgreSQL:执行器与优化器:PG13 HashAggregate溢出功能</title>
        <link>http://200yi.com/ff_internal/wiki.php?id=wiki:Database:PostgreSQL:%E6%89%A7%E8%A1%8C%E5%99%A8%E4%B8%8E%E4%BC%98%E5%8C%96%E5%99%A8:PG13%20HashAggregate%E6%BA%A2%E5%87%BA%E5%8A%9F%E8%83%BD&amp;rev=1687008318&amp;do=diff</link>
        <description>PostgreSQL版本：13.2

一、概要

PG 13 开始支持哈希聚集溢出功能

PostgreSQL v13 beta 1 开始支持 HashAggregate 溢出到磁盘。

	&quot;PostgreSQL 13 can now use disk storage for hash aggregation (used as part of aggregate queries) with large aggregation sets.</description>
    </item>
    <item rdf:about="http://200yi.com/ff_internal/wiki.php?id=wiki:Database:PostgreSQL:%E6%89%A7%E8%A1%8C%E5%99%A8%E4%B8%8E%E4%BC%98%E5%8C%96%E5%99%A8:PostgreSQL%E5%B9%B6%E8%A1%8Chash%20join%E8%A7%A3%E8%AF%BB&amp;rev=1687008318&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-17T21:25:18+0800</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wiki:Database:PostgreSQL:执行器与优化器:PostgreSQL并行hash join解读</title>
        <link>http://200yi.com/ff_internal/wiki.php?id=wiki:Database:PostgreSQL:%E6%89%A7%E8%A1%8C%E5%99%A8%E4%B8%8E%E4%BC%98%E5%8C%96%E5%99%A8:PostgreSQL%E5%B9%B6%E8%A1%8Chash%20join%E8%A7%A3%E8%AF%BB&amp;rev=1687008318&amp;do=diff</link>
        <description>转自：https://zhuanlan.zhihu.com/p/112003245

注解：

	* 修订了原文已知错误。
* 文中所述的“inner”和“outer”定义：用来建hash表的关系表定义为inner，而用于probe的关系表定义为outer。

一、PostgreSQL的并行查询简介

并行查询是 PostgreSQL 的一个大特性，对于单一 SQL 查询，从传统单一进程，提升到多个进程协同完成。____</description>
    </item>
    <item rdf:about="http://200yi.com/ff_internal/wiki.php?id=wiki:Database:PostgreSQL:%E6%89%A7%E8%A1%8C%E5%99%A8%E4%B8%8E%E4%BC%98%E5%8C%96%E5%99%A8:PostgreSQL%E5%B9%B6%E8%A1%8C%E6%9F%A5%E8%AF%A2%E6%A6%82%E8%BF%B0&amp;rev=1687008318&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-17T21:25:18+0800</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wiki:Database:PostgreSQL:执行器与优化器:PostgreSQL并行查询概述</title>
        <link>http://200yi.com/ff_internal/wiki.php?id=wiki:Database:PostgreSQL:%E6%89%A7%E8%A1%8C%E5%99%A8%E4%B8%8E%E4%BC%98%E5%8C%96%E5%99%A8:PostgreSQL%E5%B9%B6%E8%A1%8C%E6%9F%A5%E8%AF%A2%E6%A6%82%E8%BF%B0&amp;rev=1687008318&amp;do=diff</link>
        <description>转自：https://zhuanlan.zhihu.com/p/413491023

背景

大数据时代，人们使用数据库系统处理的数据量越来越大，请求越来越复杂，对数据库系统的大数据处理能力和混合负载能力提出更高的要求。PostgreSQL 作为世界上最先进的开源数据库，在大数据处理方面做了很多工作，如并行和分区。$$
workers = \frac {log(\frac {x} {min\_parallel\_table\_scan\_size})} {log(3)} + 1
$$</description>
    </item>
    <item rdf:about="http://200yi.com/ff_internal/wiki.php?id=wiki:Database:PostgreSQL:%E6%89%A7%E8%A1%8C%E5%99%A8%E4%B8%8E%E4%BC%98%E5%8C%96%E5%99%A8:PostgreSQL%E5%B9%B6%E8%A1%8C%E6%9F%A5%E8%AF%A2%E4%B8%AD%E7%9A%84%E5%8A%A8%E6%80%81%E5%85%B1%E4%BA%AB%E5%86%85%E5%AD%98%E6%9C%BA%E5%88%B6&amp;rev=1687008318&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-17T21:25:18+0800</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wiki:Database:PostgreSQL:执行器与优化器:PostgreSQL并行查询中的动态共享内存机制</title>
        <link>http://200yi.com/ff_internal/wiki.php?id=wiki:Database:PostgreSQL:%E6%89%A7%E8%A1%8C%E5%99%A8%E4%B8%8E%E4%BC%98%E5%8C%96%E5%99%A8:PostgreSQL%E5%B9%B6%E8%A1%8C%E6%9F%A5%E8%AF%A2%E4%B8%AD%E7%9A%84%E5%8A%A8%E6%80%81%E5%85%B1%E4%BA%AB%E5%86%85%E5%AD%98%E6%9C%BA%E5%88%B6&amp;rev=1687008318&amp;do=diff</link>
        <description>本文适用于PostgreSQL 14。

一、概述

PosgreSQL 9.6开始支持并行查询（Parallel Query）[1]，这个版本的对并行的支持还非常有限，之后的发行版本不断进行了完善。不同于多线程模式，PostgreSQL采用多进程模式，并行查询将把一条查询任务拆分给多个 worker 分布执行。因此，需要解决不同进程之间数据共享问题。为此，PostgreSQL引入了动态共享内存（DSM，Dynamic Shared Memory）机制。__________________________________________…</description>
    </item>
    <item rdf:about="http://200yi.com/ff_internal/wiki.php?id=wiki:Database:PostgreSQL:%E6%89%A7%E8%A1%8C%E5%99%A8%E4%B8%8E%E4%BC%98%E5%8C%96%E5%99%A8:PostgreSQL%E8%AE%A1%E5%88%92%E5%99%A8add%20path%E5%87%BD%E6%95%B0%E7%AE%80%E4%BB%8B&amp;rev=1687008318&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-17T21:25:18+0800</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wiki:Database:PostgreSQL:执行器与优化器:PostgreSQL计划器add path函数简介</title>
        <link>http://200yi.com/ff_internal/wiki.php?id=wiki:Database:PostgreSQL:%E6%89%A7%E8%A1%8C%E5%99%A8%E4%B8%8E%E4%BC%98%E5%8C%96%E5%99%A8:PostgreSQL%E8%AE%A1%E5%88%92%E5%99%A8add%20path%E5%87%BD%E6%95%B0%E7%AE%80%E4%BB%8B&amp;rev=1687008318&amp;do=diff</link>
        <description>本文适用于PG 14。

pg_plan_queries


List *pg_plan_queries(List *querytrees, const char *query_string,
							 int cursorOptions,
							 ParamListInfo boundParams);


计划器的入口函数。

populate_joinrel_with_paths


static void
populate_joinrel_with_paths(PlannerInfo *root, RelOptInfo *rel1,
							RelOptInfo *rel2, RelOptInfo *joinrel,
							SpecialJoinInfo *sjinfo, List *restrictlist);</description>
    </item>
    <item rdf:about="http://200yi.com/ff_internal/wiki.php?id=wiki:Database:PostgreSQL:%E6%89%A7%E8%A1%8C%E5%99%A8%E4%B8%8E%E4%BC%98%E5%8C%96%E5%99%A8:PostgreSQL%E8%81%9A%E9%9B%86%E7%AE%97%E5%AD%90&amp;rev=1687008318&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-17T21:25:18+0800</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wiki:Database:PostgreSQL:执行器与优化器:PostgreSQL聚集算子</title>
        <link>http://200yi.com/ff_internal/wiki.php?id=wiki:Database:PostgreSQL:%E6%89%A7%E8%A1%8C%E5%99%A8%E4%B8%8E%E4%BC%98%E5%8C%96%E5%99%A8:PostgreSQL%E8%81%9A%E9%9B%86%E7%AE%97%E5%AD%90&amp;rev=1687008318&amp;do=diff</link>
        <description>本文适用于PG 13.2。

可选算法

聚集算子有4种算法：


// src\include\nodes\nodes.h:

/*
 * AggStrategy -
 *	  overall execution strategies for Agg plan nodes
 *
 * This is needed in both pathnodes.h and plannodes.h, so put it here...
 */
typedef enum AggStrategy
{
	AGG_PLAIN,					/* simple agg across all input rows */
	AGG_SORTED,					/* grouped agg, input must be sorted，适用于下层算子输出有序的情况。 */
	AGG_HASHED,					/* grouped agg, use internal hashtable */
	AGG_MIXED					/* grouped agg, hash and sort both used */
} AggStrat…</description>
    </item>
    <item rdf:about="http://200yi.com/ff_internal/wiki.php?id=wiki:Database:PostgreSQL:%E6%89%A7%E8%A1%8C%E5%99%A8%E4%B8%8E%E4%BC%98%E5%8C%96%E5%99%A8:PostgreSQL%E6%89%BE%E5%87%BA%E8%A2%AB%E4%BF%AE%E6%94%B9%E8%BF%87%E7%9A%84%E9%85%8D%E7%BD%AE%E5%8F%82%E6%95%B0&amp;rev=1687008318&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-17T21:25:18+0800</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wiki:Database:PostgreSQL:执行器与优化器:PostgreSQL找出被修改过的配置参数</title>
        <link>http://200yi.com/ff_internal/wiki.php?id=wiki:Database:PostgreSQL:%E6%89%A7%E8%A1%8C%E5%99%A8%E4%B8%8E%E4%BC%98%E5%8C%96%E5%99%A8:PostgreSQL%E6%89%BE%E5%87%BA%E8%A2%AB%E4%BF%AE%E6%94%B9%E8%BF%87%E7%9A%84%E9%85%8D%E7%BD%AE%E5%8F%82%E6%95%B0&amp;rev=1687008318&amp;do=diff</link>
        <description>PostgreSQL配置参数很多，有时为了排查问题，需要找出哪些配置参数被修改过。

系统表

记录PG所有参数的系统表为pg_settings。

详见 PG文档说明。
 名字              类型     描述                                                         _____________</description>
    </item>
</rdf:RDF>
