李元佳 - Postgres 9-5最新特性

铎慕卉

2018/05/13 发布于 技术 分类

在2015年中国数据库技术大会上来自华为postgres 中国用户会发起人李元佳为我们分享了Postgres 9.5的特性及未来发展方向。BRIN(Block Range Index ): 保存数据块的值的摘要信息,如存储某一组块里面所有记录中的最大最小值,与Exadata的Storage Index 相似。全表扫描之前,先从范围索引过滤掉不满足条...

文字内容
1. Postgres 9.5最新特性 李元佳 2015/04
2. Postgres 9.5最新特性 李元佳 galylee@gmail.com
3. 目录 • 概览 • 性能特性 • 管理特性 • SQL特性 • 待提交的特性
4. 自我介绍
5. 面向高性能 基础设施 (并行执行、逻辑复制) 多样性 JSON 外部表 企业级特性 流复制 同步复制
6. Postgres的演进脉络 • 高性能:多核扩展、大数据处理 • 高扩展:逻辑多主复制、PG-XC集群
7. 驱动力1:Paralle Query
8. 驱动力2:Logical Replication
9. Logical Replication里程碑
10. 9.5 版本的开发历程 June 10, 2014 – branch 9.4 June 2014 – CF1 - Completed August 2014 – CF2 - Completed October 2014 – CF3 - Completed December 2014 – CF4 - Completed February 2015 – CF5 – In Progress First Beta for April GA for September(?)
11. 代码的统计 • Statistics – 2397 files changed – 222383 insertions (+) – 135826 deletions(-) • Almost double that of 9.4!
12. 9.5 -〉更加容易管理维护 • BRIN Indexes • pg_rewind • Row level security • Import Forign Schema • Min and Max wal size • Set UNLOGGED
13. 目录 • 概览 • 性能特性 • 管理特性 • SQL特性 • 待提交的特性
14. BRIN Indexes块范围索引 • BRIN(Block Range Index):保存数据块的值的摘要信息,如存储某 一组块里面所有记录中的最大最小值,与Exadata的Storage Index相 似 • 全表扫描之前,先从范围索引过滤掉不满足条件的数据块,可大大提 高全表扫描的性能 • 对于按顺序排列的表效果尤为明显 (1,10) (11,20) (21,30) 1 6 11 16 21 26 2 7 12 17 22 27 3 8 13 18 23 28 4 9 14 19 24 29 5 10 15 20 25 30 Block Range 块的数量可以自己定义
15. BRIN 的用法
16. BRIN 的大小
17. 读的多核扩展性提高 IBM POWER-8 having 24 cores, 192 hardware threads, 492GB RAM
18. 读的多核扩展性提高 IBM POWER-8 having 24 cores, 192 hardware threads, 492GB RAM
19. WAL日志压缩 • 写日志时候对数据块进行压缩 • 往磁盘写的少,复制的传输的量也会少,更新的性能提高 • CPU的消耗量会上升 数据块 INSERT XXX WAL日志 再更新 数据块 先揑入 日志 INSERT XXX Full Page Write 如果是自上次检查点以 来第一次更新page, 需要保存page到日志 9.5 对Full Page进行压缩 XLOG REC XLOG REC XLOG REC
20. 文字排序的性能改善 • create table stuff as select random()::text as a, 'filler filler filler'::text as b, g as c from generate_series(1, 1000000) g; SELECT 1000000 • create index on stuff (a); CREATE INDEX
21. 并行查询 -〉9.6
22. 目录 • 概览 • 性能特性 • 管理特性 • SQL特性 • 待提交的特性
23. pg_rewind • Rebuild from scratch – Erase old master, take new base backup from new master, and copy it • rsync – Reads all data from disk • pg_rewind – Only reads and copies data that was changed http://hlinnaka.iki.fi/presentations/NordicPGDay2015-pg_rewind.pdf
24. min and max wal size • checkpoint_segments removed! • Instead, control min and max size – min_wal_size (default 80MB) – max_wal_size (default 1GB) • Checkpoints auto-tuned to happen in between • Space only consumed when actually needed
25. cluster_name
26. Parallel vacuumdb • vacuumdb can use concurrent connections • Add -j to command line • Speed up important VACUUM or ANALYZE • Mind the load!
27. Logging of replication commands
28. 目录 • 概览 • 性能特性 • 管理特性 • SQL特性 • 待提交的特性
29. Row level security • 可以控制记录级别的访问权限 • 需要对表进行策略定义 (CREATE ALTER DROP Policy) • 需要对每张表启用行安全策略 ALTER TABLE .. ENABLE/DISABLE ROW SECURITY.
30. Row level security例子-1
31. Row level security例子-2
32. Row level security例子-3
33. Reindex Schema
34. Import Foreign Schema
35. Foreign Table Inheritance • 外部表支持继承特性
36. Set LOGGED/UNLOGGED
37. Skip Locked for row-level lock
38. Multi columns update
39. generate_series (numeric)
40. 目录 • 概览 • 性能特性 • 管理特性 • SQL特性 • 待提交的特性
42. pgaudit
43. UPSERT INSERT ... ON CONFLICT {UPDATE IGNORE}
44. 未来发展方向
45. 鸣谢 Thanks • Michael Paquier – http://en.pgconf.ru/static/presentations/2015/p aquier.pdf • Magnus Hagander – http://www.hagander.net/talks/postgresql95.pdf • Amit Kapila – Exciting Features In PostgreSQL 9.5