Day1
议题1:腾讯大数据平台 赵伟(腾讯)
腾讯把postgres引入大数据平台,主要是用来处理在线计算(TRC)与离线计算(TDW)的结果,目前腾讯共有大概90多台左右的pg集群。
TDBank:数据源接入 在线消息 离线文件 BinLog
数据缓存处理 数据传输缓存分类 格式分配与加密传输(加密传输是为了解决公网传输,因为业务遍布全球的原因)
数据处理 TRW(实时计算) TDW(离线计算)
数据存储 postgreSQL
TDW分布式数据仓库:
集成开发环境 任务统一调度
TDBank Hive/Pig查询处理引擎(Hive:http://baike.baidu.com/subview/699292/10164173.htm)
计算引擎 MapReduce Spark
Hadoop集群 PG小数据处理 HBase实时计算
存储引擎 HDFS(http://baike.baidu.com/view/3061630.htm)
TDW项目地址:https://code.csdn.net/Tencent/tdw
TDW详情介绍:http://code.csdn.net/news/2819892
Hive项目地址:http://hive.apache.org/
TDW:Hive优化
TDW:计算优化,大集群内任务归属不同业务间影响。上千并发,使用Hyperloglog基数估值算法优化count distinct操作性能估值.
论文《HyperLogLog: the analysis of a near-optimal cardinality estimation algorithm》,解读Cardinality Estimation算法(第四部分:HyperLogLog Counting及Adaptive Counting)
功能扩充:基于角色的权限管理、兼容Oracle的分区功能、窗口函数、多维分析功能、公用表达式:CTE、DML-delete/update入库数据校验.
易用性:命令行工具、DB存储引擎、SQL语法细节、TDW集成开发环境
性能优化:Hash Join、按行Split、Oracle by limit优化、查询计划并行优化、元数据重构
Oracle窗口函数:http://www.blogjava.net/pengpenglin/archive/2008/06/28/211334.html
多维分析:http://www.cnblogs.com/jinspire/archive/2011/11/23/2259718.html
元数据:http://zh.wikipedia.org/zh-cn/%E5%85%83%E6%95%B0%E6%8D%AE
TDW存储优化:减少TDW Hive元数据压力、减少HDFS NamePlace压力、增强HDFS Raid效果
HDFS Raid:http://wiki.apache.org/hadoop/HDFS-RAID
List分区转换为Range分区——Range分区历史合并——分区合并之后HDFS文件合并
TDW实时计算:数据接入TDBank——实时计算应用——SQL/Pig-latin,Jstorm集群(Storm通过java改写)
作者的开源项目zhparser(是一个PostgreSQL中文分词的插件,通过它,可以使PostgreSQL支持中文的全文检索,详情请看http://amutu.com/blog/zhparser/)、https://github.com/amutu/zhparser/
Postgres-XC 的简介及最新进展 铃木幸一(NTT Intellilink Fellow)
What is Postgres-XC? http://francs3.blog.163.com/blog/static/4057672720125315352442/
项目地址:http://sourceforge.net/projects/postgres-xc/
Wiki:http://postgresxc.wikia.com/wiki/Postgres-XC_Wiki
Postgres-XC 1.0.1 Documentation:http://postgres-xc.github.io/1_0/index.html
根据错误去源码找:把错误的提示复制出来去源码里面找,然后看对应的上下文代码。
高性能Postgres的实践 朱贤文
CPU:cache越大越好,More Cache == more better
less CPUs,more core 1*12 core better than 2*6 cores
RAM:多多益善,越多越好;尽量使用ECC内存
IO:IOPS-band width:延迟低的硬件、有后备电池或电源;BBU。尽量使用本地存储设备,避免使用远程设备(no nfs and cifs)
如何分割IO: $PGDATA/pg_xlog:SSDs(SLC)、EXT2;$PGDATA/pg_log:syslog、$PGDATA/pg_stat_tmp:TMPfs(索引是多读少写:TMPfs);$PGDATA/base:ZFS、EXT4、xfs(推荐),不推荐Btrfs,不要使用ext3。
表空间(应该使用),相似的对象,索引/SSD(MLC),历史表/报表,ZFS/ext4/xfs;应该避免基于硬件的重复数据删除,SSD/HD不要混用(应该使用表空间来隔离),NFS,GlusterFS,FUSE,remote* storage.
存储子系统:DAS:JBOD、local disk;NAS:NFS、CIFS;SAN:FC SAN、IP SAN
Server:cpu,memory,少disk
Storage system:cpu,memory,多disk
DAS:开放系统的直连式存储,延迟小,速度快;
NFS/CIFS:不是考虑的选项,也不应该用于pg数据库
SAN:storage area network:速度快,IOPS;容量大,高级功能
文件系统:Ext4/ZFS/XFS/NTFS/VXFS
Mount option:noatime、Nodiratime、data=writeBack
Disk Cache:Need disabled
Filesystem block:8KB match db block
应用程序行为:DDS/OLAP非常少量运算量巨大的长连接,设置work_mem多些,先满足effective_cache,再满足shared_buffers
OLTP:大量短连接,考虑使用connection pool、将shared_buffer设置大些。
读写特性:如果读多autovacum不要太频繁,如果写多check point做快一点
升级策略:postgreSQL版本:xx.yy.zz;xx.yy主版本(8.4,9.2,9.3),zz次版本(9.1.4)
升级到最新版本:9.3.*——9.3.5;9.2.*——9.2.9
主版本升级:数据结构不再向后兼容;Dump/load;pg_upgrade;
富版本升级:替换二进制/可执行程序;启动数据库
14:00 - 17:00 Postgre DBA 管理 萧少聪 (神州立诚 CTO)
PostgreSQL术语:
通用数据库对象名称:
table or index:relation
row:Tuple
colcumn:attribute
存储对象名称:
data block:page(when block is on disk)
Page:buffer(when block is in memory)