Agenda
教你三招
什么是性能问题 找到性能瓶颈 硬件规划
实战案例分享
DATAGURU专业数据分析社区
DB2设计与性能优化 讲师 王飞鹏
什么是DB2性能问题?
性能问题比功能问题难
– 性能变慢,出现大量的锁超时,原因竟然是统计信息过时,全表扫描导致 – 性能问题有时候是间歇性的
– 性能问题是可以避免的
解决性能问题的通常办法(假如是新手) – 慌乱
– 随机性调整,靠运气
– 买更多的硬件(CPU、内存、磁盘等)
– 指责DB2…
• AIX / Windows / Linux… • IBM/HP/Sun/…
DATAGURU专业数据分析社区
DB2设计与性能优化 讲师 王飞鹏
六种类型的瓶颈
系统性能问题
-
硬件检查
-
vmstat
-
iostat
-
nmon
-
netstat 6. top
-
db2top
磁盘瓶颈
CPU瓶颈
懒惰系统
内存瓶颈
DATAGURU专业数据分析社区
网络瓶颈
(性能上限)
高级技术优化
DB2设计与性能优化 讲师 王飞鹏度量性能的三个指标
响应时间: 数据库服务器收到应用请求后完成处理并返回给应用总共所消耗的时
间, 它反映了服务器的处理速度。 事务吞吐量:
通常用每分钟处理的事务数(TPM)来计算,这个指标反映了系统的 事务处理能力。
资源利用率:
数据库服务器在处理事务或者查询的过程中,系统资源包括CPU、I/O 以及磁盘的使用情况,这个指标反映了系统资源是否被服务器有效利 用。
DATAGURU专业数据分析社区
DB2设计与性能优化 讲师 王飞鹏Agenda
教你三招
什么是性能问题 找到性能瓶颈 硬件规划
实战案例分享
DATAGURU专业数据分析社区
DB2设计与性能优化 讲师 王飞鹏制定优化目标
根据成本效益分析(Cost-BenefitAnalysis)模型,付出的努力永 远要和获得的收益取得平衡。
优化无止境,因为没有目标就不知道何时停止研究更好的解决方案。 因为性能是有时间和金钱成本的。
当DBA考虑需要多少时间和金钱用于性能优化时,要评估一下所花 费的时间成本和金钱成本。
DATAGURU专业数据分析社区
DB2设计与性能优化 讲师 王飞鹏测试的方法:性能基准测试
(Benchmarking)
涉及开发和运维整个数据生命周期 基于可控条件
– 重复运行有性能问题的应用 – 迭代之间,更换条件:
• 参数配置
• SQL语句
• 索引
• 表空间配置 • 硬件配置
– 重复,直到整个应用性能满足要求 性能基准测试的要求:
– 测试可重复
– 每次迭代启动时,系统状态相同 – 没有其他应用干扰
– 软硬件和生产环境基本一致
DATAGURU专业数据分析社区
DB2设计与性能优化 讲师 王飞鹏分析的方法:解决性能问题的四个步骤
第一步,问题监控:监控硬件和数据库
第二步,配置检查:硬件配置、操作系统配置和数据库配置 第三步,设计检查:逻辑设计和物理设计的正确性
第四步,性能优化:考虑投入产出比,寻找合适的解决方案
DATAGURU专业数据分析社区
DB2设计与性能优化 讲师 王飞鹏性能调优的限制
多少时间和金钱可以被投入? – 考虑投资回报率
调优可以解决的问题 – 响应时间慢的问题 – 事务吞吐低的问题
更好的解决方案是从架构着手 – 更快更多的存储
– 更快更多的CPU
– 更多的内存
– 更快的网络 DB2设计与性能优化 讲师 王飞鹏
DATAGURU专业数据分析社区Agenda
教你三招
什么是性能问题 找到性能瓶颈 硬件规划
实战案例分享
DATAGURU专业数据分析社区
DB2设计与性能优化 讲师 王飞鹏CPU
OLAP/BI应用:
– 每处理器内核支撑200-300 GB活动数据
OLTP:
浏览www.tpc.org TPC-C DB2 9 测试结果
– 8 core IBM POWER5 1.9 GHz = ~430K TPM
– 8 core IBM POWER6 4.2 GHz = ~630K TPM
– 64 core IBM POWER6 5.0 GHz = ~6M TPM
– 8 core Intel Xeon 3.33 GHz = ~314K TPM
– 16 core Intel Xeon 2.93 GHz = ~517K TPM
DATAGURU专业数据分析社区
DB2设计与性能优化
讲师 王飞鹏存储
考虑因素: -
I/O吞吐
– I/Os per Second (IOPS)
– Megabytes per Second (MPS) -
容量
-
单独的日志空间
经验公式:
15K RPM drive = ~150-175 IOPS @ 7-8 milliseconds response time 10 to 20 disk per core
– 10 for Intel/AMD (System x)
– 20 for POWER5 and POWER6 (System p)
DATAGURU专业数据分析社区
DB2设计与性能优化 讲师 王飞鹏内存
CPU和磁盘之间的缓冲 受共享内存的限制
– 32 bit ~4GBs (Windows /Linux)
– 64 bit ~无限制
4-8GB RAM per core
– 4GB per core for Intel/AMD (System x)
– 8GB per core for POWER5 and POWER6 (System p)
DATAGURU专业数据分析社区
DB2设计与性能优化 讲师 王飞鹏Agenda
教你三招
什么是性能问题 找到性能瓶颈 硬件规划
实战案例分享
DATAGURU专业数据分析社区
DB2设计与性能优化 讲师 王飞鹏索引优化-加强治理 背景:
在客户环境中,我们通常通过在表上建各种索引来提高查询速度,但索引过多过 滥严重影响了插入和更新时的性能和存储开销,如何选择合适的列作为索引成了 用户比较头疼的问题。
案例:
某电信公司,一个表上建立了包含3个列(A, B, C)的索引,如果(A, C)或者(B, C)这 样的组合查询条件很多情况下是无法利用(A, B, C)索引的,那么怎么提升他们的 查询速度呢?
解决办法:
1,方法一:单独为(A, C)和(B, C)建立索引,这导致索引过多过滥。
2,方法二:利用DB2 V10提供的Jump Scan技术,无需建立额外索引,(A, C) 和(B, C)这样的查询可以直接用上(A,B,C)上的索引。
DATAGURU专业数据分析社区
DB2设计与性能优化 讲师 王飞鹏大表优化-启用压缩 背景:
在生产环境中,经常面临数据快速增长的问题,为了减少存储空间,我们 通过对大表或者流水表进行压缩来减少存储空间。
案例:
某银行,有一个非常大的流水表,目前已近有2600万行记录,每天增长 100万条,数据量增长非常快,按照目前的增长速度,再过一段时间就会 把表空间占满。
解决办法:
1,方法一:使用DB2 v9.7提供的表压缩技术对其进行压缩,取得了一定 效果,但是还不够。
2,方法二:利用DB2 V10提供的自适应压缩(Adaptive Compression) 技术,再次对底层的数据页进行压缩,这使得在表压缩的基础上,数据再
压缩40% - 50%。
DATAGURU专业数据分析社区
DB2设计与性能优化 讲师 王飞鹏热表优化-将表按照访问频度分组(1) 背景:
数据库存在“二八法则”,20%的表往往是被80%的用户经常访问, 80%的表被20%的用户经常访问。针对这种不同访问频度的表,需要有针 对性的优化方案。
案例:
某券商在某个月,某些持仓大户的数据需要频繁读取并且对IO性能要求高 ;某些持仓散户的数据需要一般性的读取;其他散户则不怎么读取。用户
数据的访问频度不固定,下个月可能就会发生变化了。 解决办法:
1,方法一:为不同读取频度的用户数据,创建不同的表空间,数据访问 越频繁,容器就建在越快速的I/O设备上。如果发生变化,DBA需要花费很 多精力在不同表空间之间移动数据。
2,方法二:(下一页)
DATAGURU专业数据分析社区
DB2设计与性能优化 讲师 王飞鹏热表优化-将表按照访问频度分组(2)
解决办法:
方法二: DB2 Galileo提供了存储组的特性:
• 创建存储组(StorageGroup)
db2 create stogroup sg_hot on ‘/ssdisk’;
db2 create stogroup sg_warm on ‘/raidisk’;
db2 create stogroup sg_cold on ‘/normaldisk’;
• 创建表空间
db2 create tablespace tbshot using stogroup sg_hot;
db2 create tablespace tbswarm using stogroup sg_warm; db2 create tablespace tbscold using coldgroup sg_cold;
• 表空间在线更改(从sg_warm->sg_hot,sg_hot->sg_warm) db2 alter tablespace tbswarm using stogroup sg_hot;
db2 alter tablespace tbswarm using stogroup sg_warm;
DATAGURU专业数据分析社区
DB2设计与性能优化 讲师 王飞鹏数据仓库优化-提升实时性 背景:
目前国内数据仓库进行分析的数据都是从生产系统抽取-转换-加载(ETL)而来,由 于这些操作必须在维护窗口执行,所以无法做到实时,通常都会滞后1天,也就是说 是T+1的。
案例:
某电信公司, 使用ETL工具将业务数据加载到基于DB2的经分系统中,由于数据越
来越大,在维护窗口内无法完成所有数据的加载工作,导致从T+1变成了T+1.5 解决办法:
1,方法一:使用CDC进行24小时实时复制,不需要维护窗口,但是实施复杂。
2,方法二:利用DB2 V10提供的CDI
(Continous Data Ingest) 工具,与ETL工具相比, CDI运行时,目标表是可用的,加载数据不需要 维护时间窗口。可以对数据进行格式转换, 完成简单的ETL功能。还可以从上一次失败的 地方重新开始加载数据。
DATAGURU专业数据分析社区
DB2设计与性能优化 讲师 王飞鹏Thank You
DATAGURU专业数据分析社区
DB2设计与性能优化 讲师 王飞鹏炼数成金逆向收费式网络课程
Dataguru(炼数成金)是专业数据分析网站,提供教育,媒体,内容,社区,出版, 数据分析业务等服务。我们的课程采用新兴的互联网教育形式,独创地发展了逆向收 费式网络培训课程模式。既继承传统教育重学习氛围,重竞争压力的特点,同时又发 挥互联网的威力打破时空限制,把天南地北志同道合的朋友组织在一起交流学习,使 到原先孤立的学习个体组合成有组织的探索力量。并且把原先动辄成千上万的学习成 本,直线下降至百元范围,造福大众。我们的目标是:低成本传播高价值知识,构架 中国第一的网上知识流转阵地。
关于逆向收费式网络的详情,请看我们的培训网站 http://edu.dataguru.cn
DATAGURU专业数据分析社区
DB2设计与性能优化 讲师 王飞鹏FAQ时间
DATAGURU专业数据分析网站
29




