DB2开始运行效率还行,过不了多久速度就会很慢,这是怎么回事?

wanwangzhiwang 2004-09-22 10:51:19
数据库大概有600多张表,最多的表也就2000多条记录,开始运行效率还行,过不了多久速度就会很慢,在程序里检测发现:执行一个很简单的查询都会很慢。2G的内存,2.4G的CPU,操作系统是2003Server;

数据库的数据库配置

数据库配置发行版级别 = 0x0a00
数据库发行版级别 = 0x0a00

数据库领域 = CN
数据库代码页 = 1386
数据库代码集 = GBK
数据库国家/地区代码 = 86

动态 SQL 查询管理 (DYN_QUERY_MGMT) = DISABLE

对此数据库的 Discovery 支持 (DISCOVER_DB) = ENABLE

缺省查询优化类 (DFT_QUERYOPT) = 5
并行度 (DFT_DEGREE) = ANY
在算术异常时继续 (DFT_SQLMATHWARN) = NO
缺省刷新有效期 (DFT_REFRESH_AGE) = 0
保留的高频值的数目 (NUM_FREQVALUES) = 10
保留的分位点数目 (NUM_QUANTILES) = 20

备份暂挂 = NO

数据库是一致的 = NO
前滚暂挂 = NO
复原暂挂 = NO

启用的多页文件分配 = NO

恢复状态的日志保留 = NO
记录状态的用户出口 = NO

Data Links 标记失效时间间隔(秒) (DL_EXPINT) = 60
Data Links 写标记初始时间间隔 (DL_WT_IEXPINT) = 60
副本的 Data Links 数目 (DL_NUM_COPIES) = 1
删除后的 Data Links 时间(天数) (DL_TIME_DROP) = 1
大写的 Data Links 标记 (DL_UPPER) = NO
Data Links 标记算法 (DL_TOKEN) = MAC0

数据库堆(4KB) (DBHEAP) = 2000
数据库共享内存大小(4KB) (DATABASE_MEMORY) = AUTOMATIC
目录高速缓存大小(4KB) (CATALOGCACHE_SZ) = 694
日志缓冲区大小(4KB) (LOGBUFSZ) = 2000
实用程序堆大小(4KB) (UTIL_HEAP_SZ) = 14416
缓冲池大小(页) (BUFFPAGE) = 4000
扩充存储段大小(4KB) (ESTORE_SEG_SZ) = 16000
扩充存储段的数目 (NUM_ESTORE_SEGS) = 0
锁列表的最大存储量(4KB) (LOCKLIST) = 400

应用程序组内存集的最大大小(4KB)(APPGROUP_MEM_SZ) = 11448
应用程序组堆的内存百分比 (GROUPHEAP_RATIO) = 70
最大应用程序控制堆大小(4KB) (APP_CTL_HEAP_SZ) = 144

共享排序的排序堆域值(4KB) (SHEAPTHRES_SHR) = (SHEAPTHRES)
排序列表堆(4KB) (SORTHEAP) = 1807
SQL 语句堆(4KB) (STMTHEAP) = 2048
缺省应用程序堆(4KB) (APPLHEAPSZ) = 1000
程序包高速缓存大小(4KB) (PCKCACHESZ) = 859
统计信息堆大小(4KB) (STAT_HEAP_SZ) = 4384

检查死锁的时间间隔(ms) (DLCHKTIME) = 10000
每个应用程序的锁定百分比列表 (MAXLOCKS) = 61
锁定超时(秒) (LOCKTIMEOUT) = 15

更改的页阈值 (CHNGPGS_THRESH) = 60
异步页清除程序的数目 (NUM_IOCLEANERS) = 1
I/O 服务器的数目 (NUM_IOSERVERS) = 5
索引排序标志 (INDEXSORT) = YES
顺序检测标志 (SEQDETECT) = YES
缺省预取大小(页) (DFT_PREFETCH_SZ) = 32

跟踪修改的页数 (TRACKMOD) = OFF

容器的缺省数目 = 1
缺省表空间数据块大小(页) (DFT_EXTENT_SZ) = 32

活动应用程序的最大数目 (MAXAPPLS) = 40
活动应用程序的平均数目 (AVG_APPLS) = 1
每个应用程序的最大打开 DB 文件数 (MAXFILOP) = 64

日志文件大小(4KB) (LOGFILSIZ) = 2000
主日志文件的数目 (LOGPRIMARY) = 8
辅助日志文件的数目 (LOGSECOND) = 0
已更改的至日志文件的路径 (NEWLOGPATH) =
日志文件路径 = D:\DB2\NODE0000\SQL00
002\SQLOGDIR\
溢出日志路径 (OVERFLOWLOGPATH) =
镜像日志路径 (MIRRORLOGPATH) =
第一活动日志文件 =
磁盘上已满的块日志 (BLK_LOG_DSK_FUL) = NO
事务使用的最大活动日志空间的百分比(MAX_LOG) = 0
1 个活动 UOW 的活动日志文件的数目 (NUM_LOG_SPAN) = 0

组落实计数 (MINCOMMIT) = 1
软检查点前回收的日志文件的百分比 (SOFTMAX) = 320
启用的恢复的日志保留 (LOGRETAIN) = OFF
启用的记录的用户出口 (USEREXIT) = OFF

启用的自动重新启动 (AUTORESTART) = ON
索引重新创建时间 (INDEXREC) = SYSTEM (ACCESS)
loadrec 会话的缺省数目 (DFT_LOADREC_SES) = 1
要保留的数据库备份的数目 (NUM_DB_BACKUPS) = 12
恢复历史记录保留(天数) (REC_HIS_RETENTN) = 366

TSM 管理类 (TSM_MGMTCLASS) =
TSM 节点名 (TSM_NODENAME) =
TSM 所有者 (TSM_OWNER) =
TSM 密码 (TSM_PASSWORD) =

...全文
511 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
homeland520 2004-11-28
  • 打赏
  • 举报
回复
帮你顶,up
wanwangzhiwang 2004-11-19
  • 打赏
  • 举报
回复
ding
heislazy 2004-10-09
  • 打赏
  • 举报
回复
LOGBUFSZ需要这么大么?

io_servers,你的库在一个硬盘上还是一个阵列上?阵列里几块硬盘?

如果所有表空间的pagesize大小相同,用一个缓冲池既可。

一般有几个用户并发?maxlocks是否合理?


解决问题的最好方法就是对其监控。
wanwangzhiwang 2004-09-30
  • 打赏
  • 举报
回复
jcs5094(振东)

visual explor 是什么东东?从哪里能搞到?
lydong 2004-09-30
  • 打赏
  • 举报
回复
回复人: iceleighton(冰雪) ( ) 信誉:100 2004-09-27 08:23:00 得分: 0
另外,如果你的表内容经常变化,还要定期进行reorg.

+runstats
jcs5094 2004-09-29
  • 打赏
  • 举报
回复
建议用visual explor 跟踪一下SQL的 执行情况
wanwangzhiwang 2004-09-28
  • 打赏
  • 举报
回复
zgdtxf(zgdtxf)

我的缓冲池有两个,自定义的大小是32768,大小应该够了吧?

增加了数据库堆何日志缓冲区大小性能基本上看不出改变

还有,同样的程序数据库改成SQLServer的,速度就会明显快非常多,当然,这与DB2不支持服务器端光标有关,但是也不至于慢这么多啊?而且,我提到,数据库重建后开始的一段时间速度还是非常快的,只是在运行一段时间后会变得很慢。会不会是日志的问题呢?
iceleighton 2004-09-27
  • 打赏
  • 举报
回复
另外,如果你的表内容经常变化,还要定期进行reorg.
wanwangzhiwang 2004-09-23
  • 打赏
  • 举报
回复
自己顶一下
zgdtxf 2004-09-23
  • 打赏
  • 举报
回复
缓冲池大小(页) (BUFFPAGE) = 4000
数据库堆(4KB) (DBHEAP) = 2000
日志缓冲区大小(4KB) (LOGBUFSZ) = 2000

你目前的缓冲池大小太小了,如果你每页是4K的话,只有4K X 4000只=16M,太小了,虽然你的操作系统有2G内存,其实只用了很小一部分。同时可以修改dbheap的大小和LOGBUFSZ大小。
你目前的配置应该是你的硬盘灯狂闪。
还有你应该考虑复合SQL的复杂程度,如果语句本身太复杂,建议使用临时表,可以大大提高效率。
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 愿景我们的愿景是成为 MyBatis 超好的搭档,就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。 特性无侵入:只做增强不做改变,引入它不对现有工程产生影响,如丝般顺滑损耗小:启动即自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进强大的 CRUD 操作支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库内置性能分析插件:可输出 Sql 语句以及其执时间,建议开发测试时启用该功能,能快速揪出查询内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作 我们将通过理论与实操的方式来阐述 MyBatis-Plus 的强大功能,体验和学习MyBatis-Plus技术。

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧