查看原文
其他

Db2 高可用及优化 7 个难题解析

点击蓝字关注👉 twt企业IT社区 2024-02-18

目前Db2数据库的高可用方案主要有以下几种:

  · Db2 HADR实现本地数据库高可用  

  · Db2 GDPC(PureScale集群)+HADR实现两地三中心灾备  

  · Db2 PureScale 集群实现双活  

  · Db2 HADR+备库只读,实现高可用和AQ的双活 

从社区调研的企业数据库用户来看,对于不同技术路线的高可用架构设计、具体产品和技术应用落地过程中都面临不同问题。  除此之外,对于相当一部分数据库架构师和管理员,面临的数据库难题还有数据库升级方面。尤其是对现有的数据库进行高可用改造,要求更高、需要解决的问题更难、更多。企业信息系统复杂、数据量大,在其系统升级改造过程中, 往往又涉及到Db2前后版本、新旧摸块的升级、衔接与切换等问题。  

为了帮助大家更深入的了解Db2高可用方案,从而选择适合自己需求的方案,更顺利的进行Db2的升级和优化,twt社区3月15日在上海举办了交流活动,特别邀请了某证券、某商业银行、IBM的Db2专家来分享先进经验,解答大家的疑难问题。为使读者也能够获得相关参考,现将交流中探讨到的7个难题及其解答总结于此:


Q1:Db2 版本升级,数据库端、应用端需要做哪些测试?有哪些停机时间短且能支持回退的方案?有什么升级前后SQL性能对比的手段?

解答1:

为避免风险,做全部应用的测试,高并发的还需要做压力测试;

停机时间短的方案有cdc,hadr和追日志,使用cdc可以进行回退;

通过Db2batch或者dsm捕捉一些常用交易的执行时间,但dsm不支持9.7的一些低版本以及9.7之前的版本。

解答2:

方案一般是根据停机时间和系统重要程度来做的。

如果时间要最短,可以使用复制软件把数据库复制到新版本数据库中,这样停机时间短,可以回退。

如果用本机直接升级的话,一般时间也是很快的,备份时间+升级时间。但是如果回退,时间会比较长。

SQL语句性能这个要在测试环境做好比对,一般不会有啥问题。

生产上就按照正常的监控处理就好了。


Q2:Db2 SQL执行计划影响的因素有哪些?

解答1:

Db2 SQL执行计划影响因素主要包括:

1) 数据库统计信息:表和索引的统计信息,列分布统计信息等。

2) 数据库设计信息:表空间、表分区、索引等。

3) 系统和数据库配置信息:CPU速度、存储I/O速度等硬件配置,缓冲池、排序堆大小等内存配置等。

4) 优化参数信息:并行模式、优化级别、寄存器等。

5) 给定查询SQL:SQL写法也很重要。

解答2:

记录数,索引,列的数据分布,optimizer guideline


Q3:SQL概要文件相关问题:概要文件如何编写?由开发还是运维负责?

解答1:

Db2 SQL优化概要文件有关说明:

1) 使用优化概要(optimize profile)的目的是定制执行计划(access plan)。

2) 优化概要文件分为两类:嵌入式、独立式。

3) 嵌入式的优化概要是将优化概要嵌入到查询SQL中。这种方式需要开发人员来负责。

4) 独立式的优化概要文件是把优化概要文件发布到Db2元数据表OPT_PROFILE中。这种方式可以由运维人员来负责。

5) 优化概要文件编写,要点就是为查询SQL指定特定的表访问方式、表连接方式和连接顺序等,按照优化概要文件XML格式编制即可。

解答2:

Db2 的概要文件不大好写。我的经验是通过修改统计信息,来改变访问计划。统计信息的维护建议运维负责。

解答3:

SQL概要文件的编写请参考Db2信息中心或者developerworks上下面的文章,编写概要文件需要熟悉optimizer guideline:

https://www.ibm.com/developerworks/cn/data/library/techarticles/dm-1008pengxq/

如果执行计划不是最优时,可以先考虑使用OPTGUIDELINES,它和 概要文件的使用相比较会简单些。

通常在具有了一定的Db2使用经验之后,才会了解到概要文件,一般的开发人员基本上不接触概要文件,因此概要文件的编写建议是由有经验的使用者来编写,可能是开发人员,也可能是调优的DBA。


Q4:Db2分库的标准是怎么样的?最大单库有多大?

解答:

主要按照业务特性来分库,当然还要考虑数据量、访问效率等因素。

1) 以业务特性(业务领域)为主要因素来考虑数据库划分(即分库)。

2) 按照业务特性分库之后,如果数据量还是很大,可以考虑按照当前数据、历史数据来划分数据库(分库)。

3) 也可以结合访问效率考虑进一步分库,例如划分为读写库、只读库等。

4) 单库大小实际上没有标准,只要满足业务系统读写效率就可以。

5) 与MySQL相比,Db2是强大的商业数据库,Db2单库规模可以很大。


Q5:单库后台对应几个存储?

解答:

一般来说,核心数据库都是挂接SAN高端存储,而且存储划分需要离散化。

1) 现在存储都是SAN存储,通过存储虚拟化来集中管理大量物理存储。

2) 一般思路都物理盘=>RAID=>LUN=>HDISK=>VG这种模式。

3) 尽量离散化存储访问,提高存储I/O并行性。


Q6:如何比对发布前后数据库语句执行计划的?遇到问题的回退方案是怎么样的?

解答:

在升级前把数据库package的执行计划取出来,等升级后在把package的执行计划取出来,利用compare工具作对比,由于证券的业务特殊性,测试\升级都是在周六做,周六并没有业务数据,所以在遇到问题需要回退时,直接用升级前的备份,做数据库恢复。


Q7:数据表lob字段reorg速度很慢,有什么办法可以加速吗?

解答:

可以从下面几个方面尝试解决:

1)使用32k的页面大小,lob字段使用inline length,这样和小的页面比较,可以将更多的大对象和其他列存放在同一个页面里;

2)如果打对象的长度没有超过32k,建议使用varchar数据类型代替lob字段;

3)增加util_heap_sz配置参数的值;

4)使用离线重组;

5)将long tablespace和数据表空间存放在不同的磁盘上;

在重组过程中,收集iostat的信息,看看IO主要在哪些盘上,IO能不能调整的均衡些。


 推荐资料:

Db2数据库高可用及灾备概述

http://www.talkwithtrend.com/Document/detail/tid/423115

某银行DB2数据库日常管理及性能优化案例分享

http://www.talkwithtrend.com/Document/detail/tid/403367


点击阅读原文关注社区 "Db2" 技术主题 ,将会不断更新优质资料、文章,您也可以前往提出疑难问题,与同行切磋交流:


下载 twt 社区客户端 APP

与更多同行在一起

高手随时解答你的疑难问题

轻松订阅各领域技术主题

浏览下载最新文章资料


长按识别二维码即可下载

或到应用商店搜索“twt”


长按二维码关注公众号


继续滑动看下一个

Db2 高可用及优化 7 个难题解析

点击蓝字关注👉 twt企业IT社区
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存