 Greenplum 编译安装和调试gpinitsystem 是Bash脚本工具,有些时候它的报错信息很不清楚。这个 时候可以 ○ 使用 -D 选项 ○ gp_bash_functions.sh 是内部一个被频繁调用执行系统命令的函数,可以通过 set -x 可以打印出所有执行的命令的详细信息。对调试 hang 问题很有效。 ● 在合适的代码处启用 Python 调试器,如果不知道什么地方合适,则在入口处。 3. Greenplum ExecutorStart (lldb) b ExecutorRun (lldb) b ExecProcNode (lldb) c (lldb) c (lldb) c (进入 ExecProcNode 函数) * thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 4.1 7.1 frame #0: 0x000000010ca50d9c 0x0000000000000000 可见 master 上的 QD在执行聚集操作,对应的函数是 result = ExecAgg((AggState *) node); (lldb) c Greenplum 会再次断点在 ExecProcNode, 这次的 node 类型是 T_MotionState, 执行 ExecMotion() 函数为 ExecAgg 获得下一个 tuple。 ExecMotion()0 码力 | 15 页 | 2.07 MB | 1 年前3 Greenplum 编译安装和调试gpinitsystem 是Bash脚本工具,有些时候它的报错信息很不清楚。这个 时候可以 ○ 使用 -D 选项 ○ gp_bash_functions.sh 是内部一个被频繁调用执行系统命令的函数,可以通过 set -x 可以打印出所有执行的命令的详细信息。对调试 hang 问题很有效。 ● 在合适的代码处启用 Python 调试器,如果不知道什么地方合适,则在入口处。 3. Greenplum ExecutorStart (lldb) b ExecutorRun (lldb) b ExecProcNode (lldb) c (lldb) c (lldb) c (进入 ExecProcNode 函数) * thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 4.1 7.1 frame #0: 0x000000010ca50d9c 0x0000000000000000 可见 master 上的 QD在执行聚集操作,对应的函数是 result = ExecAgg((AggState *) node); (lldb) c Greenplum 会再次断点在 ExecProcNode, 这次的 node 类型是 T_MotionState, 执行 ExecMotion() 函数为 ExecAgg 获得下一个 tuple。 ExecMotion()0 码力 | 15 页 | 2.07 MB | 1 年前3
 Greenplum 分布式数据库内核揭秘火山模型,或者说拉模型,是指从最顶层的输出节点开始,不断从下层节点拉取数据,一种自顶向 下的执行方式。最常见的拉模型是 Tuple-At-A-Time,即每次从下层拉取一个元组进行处理。 Greenplum、PostgreSQL、MySQL 以及 Oracle 等主流数据库均采用拉模型。 拉模型的每个算子都实现了从下层节点获取一条元组的 GetNext 函数,每次调用该函数都会从下 层节点返回一条元组或者 层节点返回一条元组或者 EOF 的 NULL 指针。上层节点不断地调用 GetNext 函数从下层节点获 取数据,直至数据全部获取完毕。 火山模型 postgres=# explain select * from t order by t1 limit 1; QUERY PLAN ------------------------------------0 码力 | 31 页 | 3.95 MB | 1 年前3 Greenplum 分布式数据库内核揭秘火山模型,或者说拉模型,是指从最顶层的输出节点开始,不断从下层节点拉取数据,一种自顶向 下的执行方式。最常见的拉模型是 Tuple-At-A-Time,即每次从下层拉取一个元组进行处理。 Greenplum、PostgreSQL、MySQL 以及 Oracle 等主流数据库均采用拉模型。 拉模型的每个算子都实现了从下层节点获取一条元组的 GetNext 函数,每次调用该函数都会从下 层节点返回一条元组或者 层节点返回一条元组或者 EOF 的 NULL 指针。上层节点不断地调用 GetNext 函数从下层节点获 取数据,直至数据全部获取完毕。 火山模型 postgres=# explain select * from t order by t1 limit 1; QUERY PLAN ------------------------------------0 码力 | 31 页 | 3.95 MB | 1 年前3
 Greenplum Database 管理员指南 6.2.1..................... - 221 - 使用函数和运算符 .......................................................................................................... - 223 - 在 GP 中使用函数 ................................. ....................... - 223 - 自定义函数 .............................................................................................................. - 225 - 内置函数和运算符 ................................ ..................... - 226 - 开窗函数 .................................................................................................................. - 228 - 高级聚合函数 .................................0 码力 | 416 页 | 6.08 MB | 1 年前3 Greenplum Database 管理员指南 6.2.1..................... - 221 - 使用函数和运算符 .......................................................................................................... - 223 - 在 GP 中使用函数 ................................. ....................... - 223 - 自定义函数 .............................................................................................................. - 225 - 内置函数和运算符 ................................ ..................... - 226 - 开窗函数 .................................................................................................................. - 228 - 高级聚合函数 .................................0 码力 | 416 页 | 6.08 MB | 1 年前3
 Greenplum数据仓库UDW - UCloud中立云计算服务商2、数据库管理 3、模式管理 4、表格设计 5、加载数据 6、分区表 7、序列 8、索引 9、 ANALYZE/VACUUM 10、常⽤SQL⼤全 12、常⽤SQL命令 13、⽤⼾⾃定义函数 ⽬录 Greenplum数据仓库 UDW Copyright © 2012-2021 UCloud 优刻得 3/206 128 132 132 132 139 139 139 141 191 192 udw优化指南 表膨胀 表膨胀 表膨胀的原因 如何避免表膨胀 UDW中 中Json类型 类型 Json相关操作 Json操作举例 Json相关函数 Json创建函数 Json处理函数 接⼊第三⽅ 接⼊第三⽅ BI ⼯具 ⼯具 ⼀、 UDW 接⼊ Zeppelin ⼆、 UDW 接⼊ SuperSet UDW 使⽤案例 使⽤案例 案例⼀ 利⽤ logstash+Kafka+UDW template1 (切换到template1数据库) DROP DATABASE product; 3、模式管理 、模式管理 数据库模式(schema)是包含了⼀系列数据库对象(表,数据类型,⾃定义函数)集合的命名容器。⼀个数据库可以有多个模式。不同模式不共享命名空间。public 模式是在创建数据库之后就 会默认创建的,每个⽤⼾都有权限在这个 schema 创建对象,如果不指定 schema 那么就会默认创建到这⾥。0 码力 | 206 页 | 5.35 MB | 1 年前3 Greenplum数据仓库UDW - UCloud中立云计算服务商2、数据库管理 3、模式管理 4、表格设计 5、加载数据 6、分区表 7、序列 8、索引 9、 ANALYZE/VACUUM 10、常⽤SQL⼤全 12、常⽤SQL命令 13、⽤⼾⾃定义函数 ⽬录 Greenplum数据仓库 UDW Copyright © 2012-2021 UCloud 优刻得 3/206 128 132 132 132 139 139 139 141 191 192 udw优化指南 表膨胀 表膨胀 表膨胀的原因 如何避免表膨胀 UDW中 中Json类型 类型 Json相关操作 Json操作举例 Json相关函数 Json创建函数 Json处理函数 接⼊第三⽅ 接⼊第三⽅ BI ⼯具 ⼯具 ⼀、 UDW 接⼊ Zeppelin ⼆、 UDW 接⼊ SuperSet UDW 使⽤案例 使⽤案例 案例⼀ 利⽤ logstash+Kafka+UDW template1 (切换到template1数据库) DROP DATABASE product; 3、模式管理 、模式管理 数据库模式(schema)是包含了⼀系列数据库对象(表,数据类型,⾃定义函数)集合的命名容器。⼀个数据库可以有多个模式。不同模式不共享命名空间。public 模式是在创建数据库之后就 会默认创建的,每个⽤⼾都有权限在这个 schema 创建对象,如果不指定 schema 那么就会默认创建到这⾥。0 码力 | 206 页 | 5.35 MB | 1 年前3
 Greenplum 精粹文集4 16-11-22 下午3:38 Greenplum 精粹文集 5 1) PG 有非常强大 SQL 支持能力和非常丰富的统计函数和统计语法 支持,除对 ANSI SQL 完全支持外,还支持比如分析函数(SQL2003 OLAP window 函数),还可以用多种语言来写存储过程,对于 Madlib、R 的支持也很好。这一点上 MYSQL 就差的很远,很多分 析功能都不支持,而 Greenplum 下的代码与 Greenplum 的 include 头文件编译后,将动态 so 库文件部署到所有节点就可进行测 试使用了。有些模块还是非常好用的,例如:oraface,基本上集成了 Oracle 常用的函数到 Greenplum 中,曾经在一次 PoC 测试中,用户 提供的 22 条 Oracle SQL 语句,不做任何改动就能运行在 Greenplum 上。 最 后, 需 要 Postgresql 的良好扩展性(这里是 extension,不 是 scalability),Greenplum 可以采用各种开发语言来扩展用户自定 义函数(UDF)(我个人是 Python 和 C 的 fans,后续章节与大家分享)。 这些自定义函数部署到 Greenplum 后可用充分享受到实例级别的并行 性能优势,我们强烈建议用户将库外的处理逻辑,部署到用 MPP 数 据库的 UDF 这种 In-Database0 码力 | 64 页 | 2.73 MB | 1 年前3 Greenplum 精粹文集4 16-11-22 下午3:38 Greenplum 精粹文集 5 1) PG 有非常强大 SQL 支持能力和非常丰富的统计函数和统计语法 支持,除对 ANSI SQL 完全支持外,还支持比如分析函数(SQL2003 OLAP window 函数),还可以用多种语言来写存储过程,对于 Madlib、R 的支持也很好。这一点上 MYSQL 就差的很远,很多分 析功能都不支持,而 Greenplum 下的代码与 Greenplum 的 include 头文件编译后,将动态 so 库文件部署到所有节点就可进行测 试使用了。有些模块还是非常好用的,例如:oraface,基本上集成了 Oracle 常用的函数到 Greenplum 中,曾经在一次 PoC 测试中,用户 提供的 22 条 Oracle SQL 语句,不做任何改动就能运行在 Greenplum 上。 最 后, 需 要 Postgresql 的良好扩展性(这里是 extension,不 是 scalability),Greenplum 可以采用各种开发语言来扩展用户自定 义函数(UDF)(我个人是 Python 和 C 的 fans,后续章节与大家分享)。 这些自定义函数部署到 Greenplum 后可用充分享受到实例级别的并行 性能优势,我们强烈建议用户将库外的处理逻辑,部署到用 MPP 数 据库的 UDF 这种 In-Database0 码力 | 64 页 | 2.73 MB | 1 年前3
 Greenplum 6: 混合负载的理想数据平台are well-showcased 12 Pivotal Confidential–Internal Use Only 卓越的OLAP特性 列式存储 分区、压缩 高级特性 递归查询、窗口函数 集成分析 多格式、多语言 Madlib: 机器学习 数据库内并行模型训练和预测、分类 ORCA 复杂查询优化器 成熟稳定 完备生态、支撑核心生产系统 13 Pivotal Confidential–Internal total_quantity FROM included_parts GROUP BY sub_part 16 Pivotal Confidential–Internal Use Only 窗口函数 表‘SALES’ 表‘SALES’ ■ 计算移动平均值或各种时间 间隔的总和 ■ 分组内重置聚合和排序 SELECT last_name, salary, department data table ENDWHILE 模型存储过程 … 广播 Segment 2 Segment n … Transition 函数 操作一小批数据并更新 模型状态 1 Merge 函数 2 Final函数 3 Segment 1 19 Madlib: PageRank性能 Greenplum集群: ● 1 master ● 4*6 segment0 码力 | 52 页 | 4.48 MB | 1 年前3 Greenplum 6: 混合负载的理想数据平台are well-showcased 12 Pivotal Confidential–Internal Use Only 卓越的OLAP特性 列式存储 分区、压缩 高级特性 递归查询、窗口函数 集成分析 多格式、多语言 Madlib: 机器学习 数据库内并行模型训练和预测、分类 ORCA 复杂查询优化器 成熟稳定 完备生态、支撑核心生产系统 13 Pivotal Confidential–Internal total_quantity FROM included_parts GROUP BY sub_part 16 Pivotal Confidential–Internal Use Only 窗口函数 表‘SALES’ 表‘SALES’ ■ 计算移动平均值或各种时间 间隔的总和 ■ 分组内重置聚合和排序 SELECT last_name, salary, department data table ENDWHILE 模型存储过程 … 广播 Segment 2 Segment n … Transition 函数 操作一小批数据并更新 模型状态 1 Merge 函数 2 Final函数 3 Segment 1 19 Madlib: PageRank性能 Greenplum集群: ● 1 master ● 4*6 segment0 码力 | 52 页 | 4.48 MB | 1 年前3
 Greenplum 排序算法第一阶段初始化TupleSort,通过调用函数tuplesort_begin_common,生成 Tuplesortstate。Tuplesortstate用于描述排序所需的信息 ● 第二阶段插入元组,每次调用函数puttuple_common,会根据当前TupleSort的 状态,选择将元组插入到不同的位置。 ● 第三阶段负责实际的排序逻辑,通过调用函数tuplesort_performsort,实现对已 经存储好的输入元组进行排序。根据当前TupleSort的不同状态,输入元组可能 存储在内存或者文件中,TupleSort会选择使用不同的算法进行排序。 ● 第四阶段负责输出排序后元组,在排序完成之后,每次调用函数 tuplesort_gettuple_common,即可获取排序后的元组。同样,根据当前 TupleSort的不同状态,算法选择不同的方式返回有序元组。 TupleSort 38 TupleSort 延时执行转移函数,tuplesort_putdatum(peraggstate->sortstate, value, isnull); ● Step 2: 排序, tuplesort_performsort(peraggstate->sortstate); ● Step 3: 去重,如果当前元组distinct键和上一个元组相同,或者同为NULL,则 跳过当前元组。否则执行转移函数。 Distinct聚集0 码力 | 52 页 | 2.05 MB | 1 年前3 Greenplum 排序算法第一阶段初始化TupleSort,通过调用函数tuplesort_begin_common,生成 Tuplesortstate。Tuplesortstate用于描述排序所需的信息 ● 第二阶段插入元组,每次调用函数puttuple_common,会根据当前TupleSort的 状态,选择将元组插入到不同的位置。 ● 第三阶段负责实际的排序逻辑,通过调用函数tuplesort_performsort,实现对已 经存储好的输入元组进行排序。根据当前TupleSort的不同状态,输入元组可能 存储在内存或者文件中,TupleSort会选择使用不同的算法进行排序。 ● 第四阶段负责输出排序后元组,在排序完成之后,每次调用函数 tuplesort_gettuple_common,即可获取排序后的元组。同样,根据当前 TupleSort的不同状态,算法选择不同的方式返回有序元组。 TupleSort 38 TupleSort 延时执行转移函数,tuplesort_putdatum(peraggstate->sortstate, value, isnull); ● Step 2: 排序, tuplesort_performsort(peraggstate->sortstate); ● Step 3: 去重,如果当前元组distinct键和上一个元组相同,或者同为NULL,则 跳过当前元组。否则执行转移函数。 Distinct聚集0 码力 | 52 页 | 2.05 MB | 1 年前3
 Greenplum分布式事务和两阶段提交协议ock表里。 1. StartupXlog函数发现XLOG_XACT_PREPARE日志记录进行redo,调用函数recreateTwoPhaseFile将 该日志记录中的信息放到pg_twophase目录下的文件里,每一个prepared事务对应一个文件 2. StartupXlog函数调用recoverPreparedTransaction函数读取pg_twophase目录下的文件并进行相关操 TMGXACT 分布式事务结构体 • 分布式事务id • 分布式事务管理器启动的时间戳 • 活跃分布式事务中最小的事务id,分布式快照 • session id 34 Greenplum的两阶段提交函数调用关系 35 ● 事务的实现原理和Write Ahead Log(WAL) ● 分布式事务和两阶段提交的原理 ● Greenplum两阶段提交协议的实现 ● Greenplum两阶段提交协议的优化0 码力 | 42 页 | 2.12 MB | 1 年前3 Greenplum分布式事务和两阶段提交协议ock表里。 1. StartupXlog函数发现XLOG_XACT_PREPARE日志记录进行redo,调用函数recreateTwoPhaseFile将 该日志记录中的信息放到pg_twophase目录下的文件里,每一个prepared事务对应一个文件 2. StartupXlog函数调用recoverPreparedTransaction函数读取pg_twophase目录下的文件并进行相关操 TMGXACT 分布式事务结构体 • 分布式事务id • 分布式事务管理器启动的时间戳 • 活跃分布式事务中最小的事务id,分布式快照 • session id 34 Greenplum的两阶段提交函数调用关系 35 ● 事务的实现原理和Write Ahead Log(WAL) ● 分布式事务和两阶段提交的原理 ● Greenplum两阶段提交协议的实现 ● Greenplum两阶段提交协议的优化0 码力 | 42 页 | 2.12 MB | 1 年前3
 Pivotal Greenplum 5: 新一代数据平台程序包是 PostgreSQL 的空间数据库扩展,可让地理信息 系统 (GIS) 对象存储在数据库中。Pivotal Greenplum PostGIS 扩展包括支持使用基于 GiST 的 R 树空间索引和函数分析和处 理 GIS 对象。 图 3:Pivotal Greenplum 5:集成的分析。 地理空间 图分析库 聚类分析 传统BI分析 分类分析 回归分析 全文检索 pivotal.io/cn 类型可用于存储和处理不限长度的可变 JSON 数据,新 增了用于查询和解析 JSON 记录的内置函数。与 JSON 类似,HSTORE 可用于在数据库中存储和查询半结构化数据。 Greenplum 中添加的全新 PostgreSQL 9.1 函数和 SQL 命令增强了对 XML 的支持。这些新数据类型及相关函数有助于打造 一个没有孤岛的环境,结构化、半结构化和非结构化数据均可在一个位置进行存储和分析。其他功能还有0 码力 | 9 页 | 690.33 KB | 1 年前3 Pivotal Greenplum 5: 新一代数据平台程序包是 PostgreSQL 的空间数据库扩展,可让地理信息 系统 (GIS) 对象存储在数据库中。Pivotal Greenplum PostGIS 扩展包括支持使用基于 GiST 的 R 树空间索引和函数分析和处 理 GIS 对象。 图 3:Pivotal Greenplum 5:集成的分析。 地理空间 图分析库 聚类分析 传统BI分析 分类分析 回归分析 全文检索 pivotal.io/cn 类型可用于存储和处理不限长度的可变 JSON 数据,新 增了用于查询和解析 JSON 记录的内置函数。与 JSON 类似,HSTORE 可用于在数据库中存储和查询半结构化数据。 Greenplum 中添加的全新 PostgreSQL 9.1 函数和 SQL 命令增强了对 XML 的支持。这些新数据类型及相关函数有助于打造 一个没有孤岛的环境,结构化、半结构化和非结构化数据均可在一个位置进行存储和分析。其他功能还有0 码力 | 9 页 | 690.33 KB | 1 年前3
 Greenplum 介绍执 行、专业优化器、线性扩展能力、多态存储、资源管理、高可用、高速数据加载等。 ● 具备强大灵活性和可扩展性的平台: 支持扩展(Extension)、自定义类型和函数、PXF 和外部表技术。可以使用多种语言实现用户自定义函数和聚集,包括 PL/Python、PL/R、 PL/Java、PL/Perl、PL/PGSQL 和 C 等。 ● 支持标准的平台:支持 SQL、JDBC 和 ODBC0 码力 | 3 页 | 220.42 KB | 1 年前3 Greenplum 介绍执 行、专业优化器、线性扩展能力、多态存储、资源管理、高可用、高速数据加载等。 ● 具备强大灵活性和可扩展性的平台: 支持扩展(Extension)、自定义类型和函数、PXF 和外部表技术。可以使用多种语言实现用户自定义函数和聚集,包括 PL/Python、PL/R、 PL/Java、PL/Perl、PL/PGSQL 和 C 等。 ● 支持标准的平台:支持 SQL、JDBC 和 ODBC0 码力 | 3 页 | 220.42 KB | 1 年前3
共 14 条
- 1
- 2













