文档章节

公司报表数据库优化

hnairdb
 hnairdb
发布于 2018/12/10 10:55
字数 876
阅读 17
收藏 0

报表系统优化

背景:

11.22早晨 刚放下背包,收到一份邮件,邮件意思是公司报表数据库慢,让我帮忙看看。邮件还附带了一个SQL文本,指出这个SQL慢。随后电话了开发人员了解事情来龙去脉,原来是在一个月前 DB组帮他们迁移了报表数据库,现在感觉这个新环境比没迁移前还要慢(由于老环境已经回收了,到底慢多少已经无从考证了),老环境15分钟跑完的任务新环境需要1个小时。新环境的硬件资源比老环境高了很多。

环境信息:

DB: oracle 11.2.0.4.0

OS:rhel 6.8

由于库被迁移过,询问实施人员,包括统计信息,执行计划固定都做过,按理说问题不大。

由于现在数据库整体比较慢,而且比老库慢了4倍,所以初步断定是系统级别没设置好导致。

我抓取了业务忙时的报告 发现3个问题:

1Buffer Hit % =  54.32% db cahce命中率过低;

db buffercache hit命中率极低,建议调整大一点,可以缓解IO的压力。

 

2、IO延迟;

从awr报告可以看出 IOPS为712,显然偏低。

通过iostat 测试,发现系统IO热点太集中,询问系统管理员 得知这个系统使用的是一个低端存储,且存储层面和数据库层面没有做条带化。

 

  1. redolog日志切换过于频繁

Log file switch 切换等待事件,发生这种等待事件要么是系统太忙,要么是日志组过小,要么是手动发起了切换命令。

查看数据库日志文件大小,

 

一看吓一跳,一个报表系统的日志组 才256MB?这不是搞笑的嘛!

数据库redolog日志 27MB/s产生 ,现在数据库配置的 redolog 256M,这样计算一个redolog 256/27=9s ,一个redolog 9s被写满。

从查询来看,切换基本上也是9s,切换频率过快,这样会导致IO繁忙,

 

在同步数据的时候我看他们添加了 append ,建议结合使用 +nologging 插入方式。

 

总结:

  1. Buffer hit%命中率太低;

---通过增加dbbuffercache 大小,如果是ASMM管理模式,可以增加SGA大小可以解决。大小可以参考 v$db_cache_advice

  1. 磁盘IO延迟太严重;

   ---需要提高存储IO能力或者降低系统IO读写次数(优化SQL,降低物理读 逻辑读,开发不想改SQL)。在系统层面可以通过dd 、iostat 来测试和监控IO指标。

  1. 增加redolog日志组大小;

----redog log切换推荐15~20分钟一次,按照业务量计算设置为2G合适。

 

结果:

周六迁移存储到闪存,周一早上跑业务 11分钟执行完成。由一小时到11分钟,主要优化了 redolog 日志组大小,dbbuffercache 大小和更换了存储。

其实还可以进一步优化系统能力,既然领导能接受现状,我就不找事了。

 

 

© 著作权归作者所有

共有 人打赏支持
hnairdb
粉丝 20
博文 122
码字总数 121718
作品 0
深圳
数据库管理员
私信 提问
加载中

评论(1)

LanceToBigData
LanceToBigData
高手呀,请问您是怎么学习的 数据库调优
上海大众点评急聘--资深 MySQL DBA、Java、.net、ETL、BI、搜索、邮件开发、资深android

1、ETL/BI开发工程师(10-20K) 2、邮件系统高级开发工程师(10-20K) 3、财务系统开发工程师(10-20K) 4、资深android开发工程师 (10-20K+) 5、高级Java后台开发工程师(10-20K) 6、搜索...

找工作的看过来
2011/08/17
1K
4
开源 BI 系统相关知识综合解读

这些众多的BI(商业智能)项目从规模和对BI系统支撑的完善程度上来说,大体可以分为Framework、Stand-aloneTools和BISuit三种类型。 Framework 开源框架,这是在商业BI系统中所没有的。我们可...

红薯
2009/05/05
684
0
报表性能优化方案之报表取数

取数原理 设计器拼出最终的SQL,将SQL语句传给数据库,数据库执行,将数据返回给设计器。 由于计算过程首先要通过SQL语句从数据库中取数据,我们可以通过控制数据量的大小和对数据的提前预处...

九月你好123
2015/09/21
49
0
用报表工具Style Report制作分组报表

分组报表,是所有报表中最基本、最常见的报表类型,也是所有报表工具中都支持的报表格式。从一般概念上来讲,分组报表就是只有纵向的分组。传统的分组报表制作方式是把报表划分为条带状,用户...

敏捷商业智能
2011/08/30
0
0
JEECG 3.6.2 移动能力版发布,快速开发平台

平台介绍: JEECG(J2EE Code Generation)是一款基于代码生成器的智能开发平台。引领新的开发模式(OnlineCoding模式->代码生成器模式->手工MERGE智能开发), 可以帮助解决Java项目60%的重复...

Jeecg
2016/03/15
3.8K
7

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
18分钟前
0
0
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
23分钟前
0
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
54分钟前
2
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
54分钟前
2
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部