Greenplum分布式事务和两阶段提交协议Widom《数据库系统实现》 查询编译器/ 优化器 事务管理器 DDL编译器 执行引擎 日志和恢复 并发控制 索引/文件/ 记录管理器 缓冲区管理器 缓冲区 锁表 存储管理器 存储 查询计划 对索引、文件和 记录的请求 页命令 事务命令 查询、更新 用户/ 应用 DDL命令 数据库管理员 数据、元数据、索引 日志页 读、写页 元数据、 统计数据 元数据 9 存储介质的类型 10 不同存储介质的访问时间 图片来源:Systems Performance: Enterprise and the Cloud,中译本《性能之巅》, 作者Brendan Gregg 11 缓冲区Buffer Pool page … Buffer Pool Manager (Main Memory) Access Methods and other components dirty No-Steal Steal: 允许Buffer Pool里未提交事务所修改的脏页刷回到持久存储 No-steal: 不允许Buffer Pool里未提交事务所修改的脏页刷到持久存储中 缓冲区管理策略Buffer Management Policy 13 ■ Force策略的问题 对持久存储器进行频繁的随机写操作,性能下降。 ■ No-Steal策略的问题 不允许未提交事务的脏页换出,系统的并发量不高。0 码力 | 42 页 | 2.12 MB | 1 年前3
Greenplum 排序算法归并排序的三个问题 23 替换选择算法 24 Knuth 5.4.1R替换选择算法: ● 1. 初始化阶段,读取输入元组至内存,并建立最小堆。 ● 2. 弹出堆顶元组,输出到顺串文件的缓冲区,并记录该元组的排序键为 lastkey。 ● 3. 读取新元组,如果元组排序键大于等于lastkey,插入堆顶,并调整堆,使其有 序。 ● 4. 如果新元组排序键小于lastkey,将该元组放入堆尾,并将堆的大小减1。 生成下一 个顺串。 替换选择算法 25 ● 问题二:合并阶段假设存在N个输入缓冲区,如何高效的比较N个输入缓冲区的 最小值,并输出到输出缓冲区? 归并排序的三个问题 26 ● 假设顺串(长度为L)分布在K个文件中,顺串合并时需要K个输入缓冲区和1个输 出缓冲区,每次选取K个缓冲区的最小值,输出到输出缓冲区。最后,输出缓冲 区输出的顺串长度为L*K ● 算法复杂度 O(K* (L*K)) 1. 初始化阶段,N+1个缓冲区,其中N个为输入缓冲区和1个为输出缓冲区。其 中,每一个输入缓冲区包含若干个顺串,缓冲区顺串个数服从斐波纳切分布。 ● 2. 从每个输入缓冲区选取开头的顺串,组成N个顺串(可以存在空顺串)。对N个 顺串进行归并排序,排序结果写入输出缓冲区的顺串。此时每个输入缓冲区的 顺串数减1,输出缓冲区顺串数加1。 ● 3. 如果任何一个输入缓冲区的顺串数都大于0,重复第2步。0 码力 | 52 页 | 2.05 MB | 1 年前3
Greenplum数据仓库UDW - UCloud中立云计算服务商\unset 名字 取消(删除)内部变量 3. 查询缓冲区选项 开发指南 Greenplum数据仓库 UDW Copyright © 2012-2021 UCloud 优刻得 104/206 \e [⽂件名] ⽤⼀个外部编辑器编辑当前查询缓冲区或⽂件 \g[⽂件名]向服务器发送SQL命令 \p 显⽰当前查询缓冲区的内容 \r 重置 (清理) 查询缓冲区 \s [⽂件名] 打印历史或者将其保存到⽂件 打印历史或者将其保存到⽂件 \w [⽂件名] 将查询缓冲区写出到⽂件 4. 输⼊∕输出选项 \echo [字串] 向标准输出写出⽂本 /i ⽂件名 执⾏来⾃⽂件的命令 \o [⽂件名] 向⽂件或者 |管道 发送所有查询结果 5. 信息选项 \d [名字] 描述表, 索引, 序列, 或者视图 \d{t|i|s|v|S} [模式] (加 "+" 获取更多信息) 列出表/索引/序列/视图/系统表 \da0 码力 | 206 页 | 5.35 MB | 1 年前3
Greenplum 编译安装和调试可以发现并解决大部分问题。 2.2.2 查看日志 常用的日志文件有两类,一种是 gpinitsystem 的日志,一种是数据库的日志。它们分别保存在不 同的目录下: ● gpinitsystem 的日志文件。默认路径为 ~/gpAdmin/gpinitsystem_*** ● 数据库的日志文件:进入 master (segment 的日志类似)的日志目录 (例如 /data/master/gpseg-1/pg_log/) /data/master/gpseg-1/pg_log/) 查看日志。 这里面有2种类型的日志: ○ startup.log ○ gpdb-.csv 2.2.3 初始化 master 数据库失败 手动执行initdb查看详细错误信息,然后分析具体错误信息采取相应错误。不同的版本可 能参数不同,可以通过在 gpinitsystem 脚本中找到完整的命令。 $ initdb -E UNICODE --backend_output=/data/master/gpseg-1.initdb 2.2.4 master 起不来 使用下面命令,手动启动master观看日志是否有问题。下面使用 Utility 模式启动master ,仅仅仅仅允许utility 模式连接。 $ postgres -D /data/master/gpseg-1 -i0 码力 | 15 页 | 2.07 MB | 1 年前3
Greenplum机器学习⼯具集和案例代码更更精简,更更便便于维护的代码 X 原始模型预测效果不不理理想 ✓ 新模型能够更更精准地预测⽬目标客 户 商业影响 2017.thegiac.com 用户案例例2 基于API日志的⾦金金融产品⽤用户分析 2017.thegiac.com 问题 ● 更更好地理理解不不同种 类的⽤用户 ● 更更好地了了解⽤用户与 APP的交互 ● 对实时API请求进 ⾏行行分类和安全检测 数据 - API 访问⽇日志 - 客户数据 • 45 天区域数据 • 50亿条数据 • 上百万订购者 平台 建模⼯工具 PL/R, PL/PYTHON, PDLTools 可视化 数据和技术概览 2017.thegiac.com 会话识别 API 请求 ⽇日志 抽取会话特征 根据原始特征 对用户聚类 会话识别 API 请求 ⽇日志 对API请求结合超时和 K-means聚类处理理 建模过程 2017.thegiac.com 对API请求进⾏行行会话化 会话1 会话2 会话3 时间 会话1 会话2 会话3 基于时间的会话化 时间+聚类 2017.thegiac.com 会话识别 API 请求 ⽇日志 建模过程 对API请求结合超时和0 码力 | 58 页 | 1.97 MB | 1 年前3
Greenplum Database 管理员指南 6.2.1.......................................................................... - 316 - 检查故障 Instance 的日志文件 ......................................................................... - 317 - 恢复 Instance . WAL 同步,保证与 Master 之 间的实时一致性。 在 Master 失效时,WAL 同步的复制进程会自动停止,同时,Standby 可以被激 活。在 Standby 上,冗余的 WAL 日志会被用来将状态恢复到最后成功提交(commit) 时的状态。激活的 Standby 实际上会成为 GP 的新 Master,通过 Master Port(该 端口需要设置和 Master 的相同)接受客户端的链接访问。一旦 之前的版本,Master 与 Standby 的同步机制就 一直是 WAL 同步,而在 6 版本开始,Primary 和 Mirror 也采用了 WAL 同步,但由 于 Mirror 需要同步的 WAL 日志的量很大,所以,对性能的影响比 Standby 要显著。 会有很多用户问,Master 和 Standby 在绝大多数时间内,资源非常空闲,跟 Instance 主机相比,相当于完全空闲,那么是否可以将0 码力 | 416 页 | 6.08 MB | 1 年前3
Pivotal Greenplum 最佳实践分享分布键使用: • 尽量采用一个常用关联字段作为分布键,例如账号、客户号,这个可以提高关联条件的命中率,减少关联时数据重分布 (主要对大表) • 选用分布键同时考虑数据平均分布(一个例子,日志号不是最好的分布键,大量的空值导致资料倾斜) 物理模型经验分享(续) 分区表使用: • 不建议使用二级分区,二级分区不便于管理,而且Parser效率较低; • 二级分区可 data1,检查所有文件系统,包括xfs文件系统、tmp的使用情况; 日常巡检事项 检查操作系统日志 – gpssh检查所有节点的/var/log/message,grep过滤是否有硬件错误、系统错误等信息 检查数据库日志 – 检查数据库pg_log日志是否有Panic错误、OOM等错误 检查Raid卡和磁盘状态 – 检查磁盘状态是否正常,是否有degrade =》ps -ef |grep con#sess_id#|grep –v idle - 如果是某些节点执行时间太长,可以检查数据表分佈是否平均、按照关联条件查看是否有倾斜,例如前面提到的交易表中日志号大量 为空的记录, - 如何是所有节点沒有执行完成,检查是否存在数据问题导致,例如表Join时的笛卡尔积 有些情況下,可能是由于查询计划问题导致的: – ExplainSQL0 码力 | 41 页 | 1.42 MB | 1 年前3
PostgreSQL和Greenplum 数据库故障排查iptables chkconfig --level 0123456 iptables off 2)临时目录/tmp(安装日志) 3)服务器日志(PostgreSQL server error log) 2018年PostgreSQL中国技术大会 微信号:laohouzi999 服务器日志(PostgreSQL server error log) -bash-4.1$ locate pg_ctl postgres 336 Dec 8 11:30 postgresql-Sat.log -bash-4.1$ 2018年PostgreSQL中国技术大会 微信号:laohouzi999 2.日志的配置 2018年PostgreSQL中国技术大会 微信号:laohouzi999 -bash-4.1$ cat postgresql.conf |egrep -i "Log_directo #log_statement_stats = off #session_preload_libraries = '' 2018年PostgreSQL中国技术大会 微信号:laohouzi999 如果看不到日志,直接前台运行 /usr/lib/postgresql/9.3/bin/postgres -D /var/lib/postgresql/9.3/main -c config_file=/etc/postgresql/90 码力 | 84 页 | 12.61 MB | 1 年前3
Greenplum 精粹文集·表倾斜:表倾斜情况应该 DBA 的关注点之一,但无需每天处理。 ·表膨胀:基于 postgresql 的 MVCC 机制,表膨胀情况不能忽视。 重点应该关注日常更新和删除操作的表。 ·报错信息:在日志中错误信息多种多样,大部分不是 DBA 需要关 注的。应该重点关注 PANIC、OOM、Internal error 等关键信息。 Greenplum 已经开源了,我们的生态圈在迅速地壮大,Greenplum Greenplum 集群出现故障时,会有可能导致系统表数据有问题。 系统表出现问题会导致很多种故障产生,如:某些数据库对象不可 用,实例恢复不成功,实例启动不成功等。针对系统表相关的问题, 我们应该结合各个实例的日志信息,系统表的检查结果一起定位问 题,本文将介绍一些定位、分析及解决问题的方法和技巧。 1. 检查工具 Greenplum 提 供 了 一 个 系 统 表 检 查 工 具 gpcheckcat。 以外的所有 问题修复完之后,才可以着手处理 persistent table 的问题。 针对 persistent table 再展开讲述几种问题的处理技巧: 1) 报错的 Segment 实例日志中出现类似信息 "FATAL","XX000","Number of freeTIDs 191, do not match maximum free order number 258, for0 码力 | 64 页 | 2.73 MB | 1 年前3
深度揭秘Greenplum开源数据库透明加密可以访问数据库数据文件 • 可以访问预写日志文件 潜在风险(二) GPDB的数据安全 System Admin • 管理集群 • 数据备份恢复 运维模式 • 原厂服务,主机厂或者第三方运维 数据文件为明文二进制文件 • 直接通过Linux自带工具(strings, hexdump)访问 • pg_waldump可以直接读取并显示预写日志 潜在风险(三) GPDB的数据安全 • https://github.com/greenplum-db/gpdb Recall GPDB数据透明加密方案设计 GPDB TDE GPDB透明加密 加密目标 • 表数据 • 预写日志数据 • 主从节点所有数据 • 索引及其他表辅助数据 • 磁盘缓存文件 设计目标 • 对用户和数据库透明 • 高性能,使用CPU加密指令集 • 内核原生 GPDB透明加密 加密 Planer0 码力 | 48 页 | 10.19 MB | 1 年前3
共 18 条
- 1
- 2













