iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >DB2性能优化- REORG慢的分析
  • 509
分享到

DB2性能优化- REORG慢的分析

2024-04-02 19:04:59 509人浏览 独家记忆
摘要

什么是REORG?我们知道,数据库中有许多表的存在,而我们可能会经常地需要对表数据进行增删改等操作,经过一系列更改后,逻辑上连续的数据可能会位于不连续的物理数据页上,在许多插入操作创建了溢出记录时尤其如此。

什么是REORG?

我们知道,数据库中有许多表的存在,而我们可能会经常地需要对表数据进行增删改等操作,经过一系列更改后,逻辑上连续的数据可能会位于不连续的物理数据页上,在许多插入操作创建了溢出记录时尤其如此。按这种方式组织数据时,数据库管理器必须执行其他读操作才能访问顺序数据。而在删除大量行后,也需要执行其他的读操作。

REORG(重组)表的操作会整理数据碎片来减少浪费的空间,并对行进行重新排序以合并溢出记录,从而加快数据访问速度并最终提高查询性能。

 

什么时候需要做REORG?

当数据库里某个表中的记录变化量很大时,则需要在表上做REORG操作来优化数据库性能。

针对数据库对象的大量操作,如反复地删除表,存储过程,会引起系统表中数据的频繁改变,在这种情况下,也要考虑对系统表进行REORG操作。

 

完整的REORG表的过程

一个完整的REORG表的过程应该是由下面的步骤组成的:

 

RUNSTATS ->   REORGCHK ->   REORG ->   RUNSTATS -> BINDREBIND

注: 执行此部分命令前需要连接数据库

 

此处我们就不对REORG做过多介绍,此次主要分享造成REORG慢的原因。

 

 

情景:

某电信网络发票系统每周五晚上9点开始做数据库维护,包括REORG,RUNSTAT,REBIND,维护时间需要大约10 个小时,期间会影响系统正常作业。经优化脚本生成详细维护日志,检查维护部分表的REORG时间过长。整个数据库大小为500GB。

 

操作系统版本:aiX 7.1

数据库版本  :DB2 V9.7

 

问题:

当前使用串行REORG的脚本,维护时间需要大约10个小时;

改用并行的REORG的脚本,维护时间仍然需要大约9个小时;

 

恢复到使用串行的REORG脚本,并观察系统资源消耗情况,一开始REORG速度很快,但过了不久后,到达了REORG比较慢的表此时使用topas查看系统资源,发现资源消耗下降到一个较低的值,如io吞吐量:

DB2性能优化- REORG慢的分析

理想的吞吐量



DB2性能优化- REORG慢的分析

当前REORG 慢的吞吐量

 

 

分析:

1.       首先查看DB2的诊断日志(db2diag.log)及DB2的管理通知日志(db2inst1.nfy),均没有发现报错;

2.       列举有可能造成REORG时数据量低的原因

1)表空间参数限制(PREFETCH)读写速度

2)操作系统参数瓶颈

3)存储性能瓶颈

4)DB2 Bug

5)数据损坏

 

下一步计划方向

-操作系统

-存储

-DB2

-网络

-内存

 

既然我们是负责数据库的,那就先由数据库入手,

 

解决:

1.       DB2入手,监控DB2的监控进度

db2pd -d sample -reorg

 

观察CurCount字段增长,增长慢的话表示REORG的速度很慢

DB2性能优化- REORG慢的分析


2.       找到正在执行的语句,REORG语句db2 reorg table schema.tablename longlobdata

DB2 9.7 中表重组功能也相应做了扩充,REORG 命令多了 LONGLOBDATA 参数。LONGLOBDATA 参数只对 long 和 LOB 列有效。 默认情况下是不启用 LONGLOBDATA 的,因为对 long 和 LOB 列的重组很消耗时间。

官方说明请查看以下链接:

https://www.ibm.com/developerworks/cn/data/library/techarticles/dm-1008kongzh/index.html

 

我们知道DB2表普通数据和LONG/LOB数据是分开存放的,普通数据只存放有LONG/LOB的数据指针和长度,而且在处理LOB数据都是按记录逐条解析,所以REORG时按记录逐条解析就会变得很慢。(如果需要转换分开存放的 LOB 到内联的 LOB 就要使用这个参数;当表特别大时,LOB 的重组耗费的时间会较长)

 

3.       去掉longlobdata, 再次REORG

REORG的时间由原来的6个小时下降到10分钟,系统吞吐量也恢复到理想状态。

 

 

总结:

这里列举一下数据库出现问题时的初步解决思路——

1.       查看DB2的诊断日志(db2diag.log)及DB2的管理通知日志(db2inst1.nfy),看是否有报错,如果有报错信息,可根据对应的报错信息了解目前可分析的问题方向。

2.       如果数据库有报错,根据报错信息对可造成此问题的原因做出假设;如果数据库没有报错,则结合系统各项指标分析可能的原因。

3.       对做出的假设做一步步推论,论证所有可能性,并从中找出根本的原因。


您可能感兴趣的文档:

--结束END--

本文标题: DB2性能优化- REORG慢的分析

本文链接: https://www.lsjlt.com/news/35548.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • DB2性能优化- REORG慢的分析
    什么是REORG我们知道,数据库中有许多表的存在,而我们可能会经常地需要对表数据进行增删改等操作,经过一系列更改后,逻辑上连续的数据可能会位于不连续的物理数据页上,在许多插入操作创建了溢出记录时尤其如此。按...
    99+
    2022-10-18
  • Python性能优化分析
    本篇内容介绍了“Python性能优化分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!python为什么性能差:当我们提到一门编程语言的效率...
    99+
    2023-06-17
  • MySQL优化 - 性能分析与查询优化
    MySQL优化 - 性能分析与查询优化    优化应贯穿整个产品开发周期中,比如编写复杂SQL时查看执行计划,安装MySQL服务器时尽量合理配置(见过太多完全使用默认配置安装的情况),根...
    99+
    2022-10-18
  • MySQL性能优化的案例分析
    这篇文章主要介绍MySQL性能优化的案例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言MySQL索引底层数据结构与算法MySQL性能优化原理-前篇实践(1)--MySQL性能...
    99+
    2022-10-18
  • Android性能优化分析总结
    一,布局优化 主要包括以下几个部分  1.1,UI渲染机制 要想做好布局优化,首要要了解AndroidUI渲染机制;在Android中,系统是通过VSYNC信号触发对UI渲染...
    99+
    2022-06-06
    优化 Android
  • PostgreSQL性能优化举例分析
    这篇文章主要讲解了“PostgreSQL性能优化举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PostgreSQL性能优化举例分析”吧!背景在空间数...
    99+
    2022-10-19
  • MySQL limit性能分析与优化
    一、结论 语法结构: limit offset, rows 结论:rows 相同条件下,offset 值越大,limit 语句性能越差 二、测试 执行测试: 5750000 条数据 sql 1 执行时间:...
    99+
    2022-10-18
  • php性能优化实例分析
    这篇文章主要介绍了php性能优化实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php性能优化实例分析文章都会有所收获,下面我们一起来看看吧。前言如何提高程序运行速度,减轻服务器压力是服务端开发必须面对的...
    99+
    2023-07-02
  • Android性能优化方案分析
    本篇内容介绍了“Android性能优化方案分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、指标量化性能的指标有很多,但最重要的就是以下...
    99+
    2023-06-25
  • 前端性能优化的示例分析
    这篇文章给大家分享的是有关前端性能优化的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。反复看下以下三个问题。有木有不同的人问过你:什么是前端性能优化?有木有不同的面试官问...
    99+
    2022-10-19
  • Android性能优化之内存优化的示例分析
    这篇文章主要介绍Android性能优化之内存优化的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、Android内存管理机制1.1 Java内存分配模型先上一张JVM将内存划分区域的图程序计数器:存储当前线...
    99+
    2023-06-15
  • mysql中慢查询优化的示例分析
    这篇文章主要介绍mysql中慢查询优化的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一个用户反映线上一个SQL语句执行时间慢得无法接受。SQL语句看上去很简单(本文描述中修...
    99+
    2022-10-18
  • 对mysql语句的性能分析与优化
    1.使用explain,查看查询计划 2.使用show processlist查看查询过程(处于哪个状态),完整命令如下 mysql -uroot -p -e ‘show processlist \G’ |...
    99+
    2022-05-25
    mysql
  • 性能优化的分析(free buffer wait等待)
    查看相关的文档,发觉free buffer wait等待一般是由于buffer太小而导致的,可以通过增加buffer的大小解决,如果buffer够大, 则可能在进行全表扫描,调整应用(查询出相关的...
    99+
    2022-10-18
  • 怎么分析MySQL性能优化的参数
    怎么分析MySQL性能优化的参数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。MySQL的优化我分为两个部分,一是服务器物理硬...
    99+
    2022-10-19
  • GaussDB for MySQL性能优化的示例分析
    小编给大家分享一下GaussDB for MySQL性能优化的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!背景我们先来看看MySQL 8.0的事务提交的...
    99+
    2023-06-15
  • MySQL慢日志优化的案例分析过程
    这期内容当中小编将会给大家带来有关MySQL慢日志优化的案例分析过程,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。最近在分析一个问题的时候,...
    99+
    2022-10-18
  • MySQL性能优化InnoDB buffer pool flush分析
    这篇文章主要讲解了“MySQL性能优化InnoDB buffer pool flush分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL性能优化I...
    99+
    2022-10-18
  • MySQL数据库性能优化之SQL优化的示例分析
    这篇文章将为大家详细讲解有关MySQL数据库性能优化之SQL优化的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。  注:这篇文章是以 MySQL 为背景,很多内容...
    99+
    2022-10-19
  • Angular13+开发模式慢的原因及构建性能优化解析
    目录1 Angular 13+ 开发模式太慢的原因与解决1.1 解决 Angular 12+ 开发模式慢的问题1.2 问题:开启 aot 后 pug 编译报错2 进一步优化:Angu...
    99+
    2022-12-20
    Angular 13+性能优化 Angular开发模式性能优化
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作