Osc scott linux下的数据库优化for_postgresql
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,234
On Slideshare
2,234
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
10
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Linux下的数据库优化 for PostgreSQL 演讲:萧少聪 邮箱:scott.siu@enterprisedb.org.cn
  • 2. 内 容 自我介绍 Linux操作系统优化 PostgerSQL数据库优化 Postgres-XC项目预览
  • 3. 自我介绍 程序 -> 系统 -> 数据库 红帽认证架构师 RHCA 参与篇写《Linux系统案例精解》 EnterpriseDB数据库产品经理 凑备enterprisedb.org.cn社区 深信开源可以带来真正的IT革命
  • 4. 操作系统优化
  • 5. 操作系统优化思路 问题重现,理解运作过程 性能监控 top vmstat free ps iostat sar ... nmon mrtg cacti nagios ... 分析及记录 输出重定向 日志 图表(Gnuplot、Excel)... 性能调整 对比 -> 性能调整
  • 6. 问题重现,理解运作过程 流程图 便于了解运作过程 各关键环节负责人 问题预测 问题重现 设计测试流程
  • 7. 性能监控及分析工具 ntp 时间服务 top free 实时的系统情况 iostat sar 系统运行记录 Gnuplot nmon
  • 8. iostat sar [root@server1 ~]# ls –l /var/log/sa 总计 10428 -rw-r--r-- 1 scott scott 580848 2008-11-01 sa01 -rw-r--r-- 1 scott scott 577424 2008-11-02 sa02 -rw-r--r-- 1 scott scott 580848 2008-11-03 sa03 -rw-r--r-- 1 scott scott 580848 2008-11-04 sa04 -rw-r--r-- 1 scott scott 578672 2008-10-28 sa28 -rw-r--r-- 1 scott scott 580848 2008-10-29 sa29 -rw-r--r-- 1 scott scott 580848 2008-10-30 sa30 -rw-r--r-- 1 scott scott 580848 2008-10-31 sa31 -rw-r--r-- 1 scott scott 633705 2008-11-01 sar01 -rw-r--r-- 1 scott scott 614991 2008-11-02 sar02 -rw-r--r-- 1 scott scott 633714 2008-11-03 sar03 [root@server1 ~]# sar -b -f /var/log/sa/sa04 -rw-r--r-- 1 scott scott 628709 2008-10-27 sar27 Linux 2.6.18-92.el5 (rac1) 10/05/2008 -rw-r--r-- 1 scott scott 620661 2008-10-28 sar28 -rw-r--r-- 1 scott scott 633705 2008-10-29 sar29 -rw-r--r— 1 scott scott 633705 2008-10-30 sar30 rtps 12:00:01 PM tps wtps bread/s bwrtn/s 12:10:01 PM 423.63 29.29 394.34 637.68 3852.12 -rw-r--r-- 1 scott scott 633705 2008-10-31 sar31 12:20:01 PM 419.81 24.26 395.55 495.33 3881.80 12:30:01 PM 421.92 33.01 388.90 777.04 3849.28 12:40:01 PM 420.26 30.92 389.34 712.69 3879.17
  • 9. Gnuplot (1) [root@server1 ~]# LANG=C sar -P ALL -f /var/log/sa/sa04 | awk '/^[012]/ {print $0}' | grep all > cpu.dat [root@server1 ~]# LANG=C sar -b -f /var/log/sa/sa04 | awk '/^[012]/ {print $0}' > io.dat 此处生成了两个规则的数据文件,以cpu.dat为例说明此组合命令: LANG=C 以24小时为时间统计标准 sar -P ALL -f /var/log/sa/sa04 获得所有CPU负载数据 awk '/^[012]/ {print $0}' 过滤出以0,1,2开始的行 grep all 过滤出带有all字眼的行 [root@server1 ~]# gnuplot gnuplot> set xdata time gnuplot> set timefmt "%H:%M:%S" gnuplot> set xlabel "TIME" gnuplot> set ylabel "CPU/IO" set xdata time 配置当前X轴的数据为时间 set timefmt “%H:%M:%S” 配置时间的显示格式 set xlabel “TIME” 命名X轴为“TIME” set xlabel “CPU/IO” 命名X轴为“CPU/IO” 通过cpu.dat文件的第3列输入数据,图表名字为CPU,以直线方式连接数据点,并生成图表 gnuplot> plot "cpu.dat" using 1:($3) title "CPU" with lines
  • 10. Gnuplot (2) 通过io.dat文件的第6列并将值缩小10倍输入数据,图表名字为IO,以直线方式连接数据点,并生成图表 叠加到原有图表中 gnuplot> replot "io.dat" using 1:($3/10) title "IO" with lines
  • 11. nmon
  • 12. 性能调整 (总则) 最常见的性能瓶颈 I/O,包括:磁盘、文件系统、网络 内存不足,导致swap CPU处理 应用程序问题
  • 13. 性能调整 (磁盘I/O) 优化思路 处理能力:转速、缓存、带宽 运作方式:减少读写混合,减少寻道时间
  • 14. 性能调整 (磁盘I/O) /sys/block/<device>/queue/scheduler CFQ:公平算法,适用于大部份系统应用 Deadline:适用于数据库等块操作应用 Anticipaory:适用于文件服务器ftp/samba等 NOOP:适用于带有TCQ的磁盘
  • 15. 性能调整 (文件系统I/O) noatime:不更新的访问时间 commit:数据同步间隔时间 data:日志模式 ordered writeback journal mount /dev/sdaX -o noatime,commit=N,data=writeback
  • 16. 性能调整 (网络I/O) Total buffers = Bandwidth * Delay Time UDP优化参考 Bandwidth 修改文件/etc/sysctl.conf加入以下几行: 1000M网:1000(Mebibits) / 8(bit) = 125(MiB) net.ipv4.udp_rmem_min = 1966080 net.core.rmem_default = 1966080 Delay Time = 2949120 net.core.rmem_max ping网关:xxxxxxxxxxxx time=15 ms net.ipv4.udp_wmem_min = 1966080 net.core.wmem_default = 1966080 125(MiB) * 0.015(s) = 1.875 (MiB) = 1966080(Bytes) net.core.wmem_max = 2949120 [root@server1 ~]# sysctl -p TCP优化参考 修改文件/etc/sysctl.conf加入以下几行: net.ipv4.tcp_rmem = 1966080 1966080 2949120 net.ipv4.tcp_wmem = 1966080 1966080 2949120 [root@server1 ~]# sysctl -p
  • 17. 性能调整 (CPU、内存) 多核CPU性能优化 IRQ [root@server1 ~]# cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 …… 10: 22 0 0 203 IO-APIC-level eth0 …… [root@server1 ~]# chkconfig irqbalance off [root@server1 ~]# reboot [root@server1 ~]# cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 …… 10: 210 0 0 0 IO-APIC-level eth0 Process [root@server1 ~]#taskset 0x00000001 -p 15748 内存:chkconfig关闭不用的服务
  • 18. PostgreSQL数据库优化
  • 19. PostgreSQL优化思路 合理的参数配置 分散I/O操作 使用适合的索引 独特的数据类型 专业版本的增强
  • 20. 合理的参数配置 根据实际应用情况配置postgresql.conf 是否要求冗机时数据完全不丢失 在系统崩溃时可接受多少数据丢失 数据库的读写比例 …… 不要期望由此可以得到巨大的性能提高 一个不错的优化说明:http://ruimemo.wordpress.com/2010/03/31/postgresql- performance-and-maintenance-(postgres-优化与维护/
  • 21. 分散I/O操作 独立的Data 独立的WAL 独立的index 独立的pg_log 表分区 Data WAL
  • 22. 使用适合的索引 B-tree、Hash、GiST、GIN 考虑以下问题 你正在做短信系统,基于庞大的电话号码查询 如:010-88888888 你在做财务系统,基于庞大的财务数据做查询 函数索引 对电话号码字段索引,md5(phone) 部份索引 只对6个月内的财务数据进行索引
  • 23. 独特的数据类型(1) 考虑以下问题 存储地区抵属关系/货品分类关系的表 存储IP数据的表 ltree数据类型 如:中国.北京.海淀 结合CLUSTER(簇)使用 网络数据类型 如:192.168.0.1/24 08:00:2b:01:02:03
  • 24. 独特的数据类型(2) 考虑以下问题 正在做物流系统,要判断各地路程及运费 正在做城市管理系统,要进行自定义规划 空间数据类型(GIS) 如:点、线、块、3D等 如:长度、面积、交点统计等
  • 25. 专业版本的增强 --EnterpriseDB企业版 Infinite Cache 透明的数据库二级缓存(本服务器/添加节点) 可无限扩展二级缓存节点 性能可达近10倍提升 DynaTuneTM 自动性能调整 查询优化标记(Hints) select /*+ NO_INDEX */ empno from emp; EDB*Loader导入 跳过SQL解析将格式数据直接导入数据库文件
  • 26. Postgre-XC项目预览
  • 27. 什么是Postgres-XC Multi-Master可扩展Postgres集群 NTT及EnterpriseDB公司合作开发(LGPL) 当前最新版本v0.9.2 性能:TPC-W(DBT-1)测试 测试环境:5台服务器 达到原PostgreSQL单机3.4X性能 V1.0版本预计2010年12月推出
  • 28. Postgres-XC架构
  • 29. Postgres-XC特性 Shared-nothing 读/写均可扩展,适用于各种OLTP环境 可通过任何Coordinator操作 支持PG-XC Servers间的分区及复制 可指定分区模式 Hash Range(future)
  • 30. 性能表现 • 整体性能表现很好 • 有很好的可扩展性能 - 当前版本可达10台Server以上 • 相对单个PG-XC(PG-2)没有明显性能下将 • 是什么影响了活加节点时的性能 - 添加服务器会使通信增加 - 添加服务器会增加2阶段提交 (消耗极少) * 以上的性能数据是最坏的情况,测试时PostgreSQL单机上的CPU使用率就达到了100%。如 果在一般的测试场景下性能会更好。
  • 31. 谢谢! 演讲:萧少聪 邮箱:scott.siu@enterprisedb.org.cn