PostgreSQL 11 与 12 用户最关心的特性解读 德哥

Razor

2019/08/28 发布于 技术 分类

rubyconf2019 

文字内容
1. PostgreSQL 社区情况、新版特性、挖坑大法 阿里云 digoal
2. 目录 • PG社区 • PG新版本开发者特性精选 • 彩蛋:踩坑大法
3. 社区组成独特性: 如果:99%的开源数据库都是商业公司 那么:PG是那1%
4. 开源许可独特性-活雷锋 • 类BSD许可。随意分发、闭源或开源。
5. 技术架构独特性 • PG采用了开放接口的设计,如 • • • type, operator, index, storage, language, fdw, custom scan, sample, hook 等 • 基于PG开放接口扩展的产品或插件 • • • • • • • • • • • • • • 基于PG的图数据库 agensgraph, edgedb、 流数据库 pipelinedb、 GIS PostGIS, pgrouting, pgpointcloud、 时序数据库 timescaledb、 推荐数据库 recdb、 搜索引擎 Yahoo! Everest 、 MPP greenplum, redshift , asterdata 机器学习 madlib、 图像识别 imgsmlr、 分词 zhparser, pg_jieba、 分布式数据库 citus, pg-xc, pg-xl , 高斯 , antdb Oracle兼容 edb 文档数据库 torodb 向量搜索,阿里rds pg(图像搜索,2500万图片约16毫秒)
6. 商业趋势 • 1、提高安全、合规、正版化意识是全球趋势 • 2、PG是用户去O开源数据库首选 • 3、PG是数据库厂商首选,避免重复造轮子, PG的功能覆盖度高, 是很好的基础。 • 扩展接口多,厂商可以瞄准行业痛点、差异化输出 • 4、PG 是云厂商首选 • 商业开源数据库客户被云收割。商业数据库厂商被迫修改许可协议。 • PG是纯社区开源数据库,没有修改协议的动机,是云厂商首选。
7. 技术趋势 • 既要SQL通用性,又要NOSQL扩展性,还要多模开发便捷性。 • 既要OLTP又要OLAP。 • 1、PG是多模数据库,开放扩展接口,多模接口丰富。 • 2、内置并行计算(36种并行计算场景(几乎涵盖所有分析 sql),平 均提速20倍以上)。 • 3、支持存储引擎扩展(12+, zheap, zedstore)。 • 4、对芯片友好。
8. PostgreSQL 荣誉 2019 OSCON 终身成就奖 DB-engines 2017 年度数据库 DB-engines 2018 年度数据库 继Linux后第二个获得该奖的开源产品
9. PG 定位-企业级、纯社区开源、多模数据库 创 新 价 值 商 用 价 值 OLTP、OLAP、 SMP并行计算、 GPU并行计算、 列存储、 JIT、向量计算 0丢失+高可用: quorum based sync repl 安全: SSL\SQL防火墙\TDE(13) 弹性: 插件化 shard 模块化扩展 性能: 32C TPCC 100万+ 并行计算 混合 负载 企业级 多模 开放接口: 时空、GIS、图像 文本、时序、 向量相似、图谱 流计算、异构、 机器学习、 多维计算、shard Oracle 兼容 社区版: orafce 阿里云: POLARDB for Oracle
10. 目录 • PG社区 • PG新版本开发者特性精选 • 彩蛋:踩坑大法
11. PG 11 • 分区表增强 • 并行计算增强 • btree index include索引叶子附加属性 • 添加字段(含默认值)更快 • 支持存储过程
12. 分区表增强 • hash分区 • 支持触发器 • 支持默认分区 • 允许修改分区字段
13. 并行计算增强 - 一库多用 高性能 几乎线性提升 l 单表10亿测试 l 平均提速20倍+ 自动计算并行度 l 不需要改写SQL l 自动根据SQL代价启动并行计算 覆盖几乎所有复杂查询 l l l l l l l l 表扫描 索引扫描 SQL 过滤 JOIN、子查询 聚合、自定义函数 分区表、外部表 自定义聚合、函数 排序、建表、物化、创建索引
14. btree index include • https://github.com/digoal/blog/blob/master/201905/20190503_03.md • 类似B+tree数据聚集, • create index idx_t1_1 on t1 (id) include(c1,c2,c3,info,crt_time); • 痛点: • 数据离散存储,查询多条时IO多,查询慢,占用内存多,memcpy效率低
15. 添加字段(含默认值)更快 • https://github.com/digoal/blog/blob/master/201805/20180518_01.md
16. 支持存储过程 • https://www.postgresql.org/docs/11/sql-createprocedure.html • CREATE [ OR REPLACE ] PROCEDURE • name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT = } default_expr ] [, ...] ] ) • { LANGUAGE lang_name • TRANSFORM { FOR TYPE type_name } [, ... ] • [ EXTERNAL ] SECURITY INVOKER [ EXTERNAL ] SECURITY DEFINER • SET configuration_parameter { TO value = value FROM CURRENT } • AS 'definition' • AS 'obj_file', 'link_symbol' • • } ... https://github.com/digoal/blog/blob/master/201905/20190531_01.md • 支持事务 • commit rollback
17. PG 12 • AM接口 • 分区表-大量分区性能提升 • GiST index include索引叶子附加属性 • CTE 物化、非物化 • 日志采样 • COPY WHERE
18. AM接口 • https://github.com/digoal/blog/blob/master/201903/20190331_03.md • https://github.com/digoal/blog/blob/master/201905/20190531_03.md PG 12
19. • zedstore(列存) • zheap(支持回滚段)
20. 分区表-大量分区性能提升 •1000个分区、469倍 • https://github.com/digoal/blog/blob/master/201905/20190521_01.md • https://github.com/digoal/blog/blob/master/201903/20190331_01.md
21. GiST index include • 轨迹,时空搜索 • 按结果集(索引)聚集存储,消除回表IO放大。
22. CTE 物化、非物化 • https://github.com/digoal/blog/blob/master/201903/20190309_04.md •非物化-条件下推 • • • • • WITH w AS NOT MATERIALIZED ( SELECT * FROM big_table ) SELECT * FROM w AS w1 JOIN w AS w2 ON w1.key = w2.ref WHERE w2.key = 123;
23. 日志采样 • https://github.com/digoal/blog/blob/master/201904/20190405_09.md • log_statement_sample_rate ,当设置了log_min_duration_statement时,如果log_statement_sample_rate也设置了, 它表示百分之多少的超时SQL被记录。 • log_transaction_sample_rate , 不管其他任何设置,它表示百分之多少的事务被记录duration。(事务为最小粒度 单位,如果一个事务被触发了记录duration,这个事务中的所有SQL都会被记录。)
24. COPY WHERE • https://github.com/digoal/blog/blob/master/201903/20190331_11. md
25. 多模计算 时空、 GIS、 时序 插件: l Ganos l PostGIS l Timescaledb 索引: l GiST l BRIN 图谱、 用户画像 插件: l ltree l varbitx l pg_roaringbitmap 索引: l GIN l GiST l rum l bloom 图像、多维 相似分析、 向量搜索 插件: l imgsmlr l cube l Smlar 索引: l GIN l GiST l bloom 文本 分析、搜索, 冷热分离 插件: l pg_trgm l zhparser l oss_fdw l JSONB 索引: l GIN l rum
26. 阿里云POLARDB for PostgreSQL Oracle 【云原生】 读写分离 共享存储 计算节点可扩展到1408核 存储可扩展到100TB 【Oracle深度兼容】 内置ORACLE兼容(for Oracle) 【OLTP+OLAP混合负载】 云生态 无缝对接 打破孤岛 内置并行计算 内置会话级资源隔离 【智能驾驶】 内置AAS性能洞察 内置SQL防火墙 内置索引推荐 ADB 函数计算 【冷热分离】 分级存储。 历史数据想存多久就存多久。 阿里云OSS海量对象存储 MAX Compute
27. 目录 • PG社区 • PG新版本开发者特性精选 • 彩蛋:踩坑大法
28. K.O. 必杀技1: l 长事务, l LONG SQL, l 不结束2PC l Standby feed back + long query l 主动延迟回收垃圾 l vacuum worker消极怠工 现象: l 膨胀、莫名IO、CPU 解药: l 别这么干, l snapshot too old, l zheap, l 给worker设置KPI 必杀技2: l 高峰执行DDL 现象: l 雪崩 解药: l 设置锁超时 必杀技3: l 无限开连接 现象: l OOM, l 变慢 解药: l 连接池, l 降低链接, l huge page 绝杀: l 我又不懂 l 放弃治疗 现象: l 慢 l 删库跑路… 解药: l Perf insight,对镇下药 l PG进阶群,接受改造
29. 谢谢 PG技术进阶 3000人大群 每周直播