当数据库变慢时的解决方法有哪些.docx

上传人:b****4 文档编号:11781367 上传时间:2023-04-01 格式:DOCX 页数:6 大小:17.86KB
下载 相关 举报
当数据库变慢时的解决方法有哪些.docx_第1页
第1页 / 共6页
当数据库变慢时的解决方法有哪些.docx_第2页
第2页 / 共6页
当数据库变慢时的解决方法有哪些.docx_第3页
第3页 / 共6页
当数据库变慢时的解决方法有哪些.docx_第4页
第4页 / 共6页
当数据库变慢时的解决方法有哪些.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

当数据库变慢时的解决方法有哪些.docx

《当数据库变慢时的解决方法有哪些.docx》由会员分享,可在线阅读,更多相关《当数据库变慢时的解决方法有哪些.docx(6页珍藏版)》请在冰豆网上搜索。

当数据库变慢时的解决方法有哪些.docx

当数据库变慢时的解决方法有哪些

当数据库变慢时的解决方法有哪些

当数据库变慢时的解决方法有哪些加城,本文测重于Unix环境。

第一章检查系统的状态

通过操作系统的一些工具检查系统的状态,比方CPU、内存、交换、磁盘的利用率,根据经历或与系统正常时的状态相比对,有时系统外表上看起来看空闲,这可以能不是一个正常的状态,由于cpu可能正等待IO的完成。

除此之外,还应观注那些占用系统资源(cpu、内存)的进程。

1.1使用sar来检查操作系统能否存在IO问题

#sar-u210--即每隔2秒检察一次,共执行20次。

结果示例:

注:

在redhat下,%system就是所谓的%wio。

Linux2.4.21-20.ELsmp(YY075)05/19/2005

10:

36:

07AMCPU%user%nice%system%idle

10:

36:

09AMall0.000.000.1399.87

10:

36:

11AMall0.000.000.00100.00

10:

36:

13AMall0.250.000.2599.49

10:

36:

15AMall0.130.000.1399.75

10:

36:

17AMall0.000.000.00100.00

其中:

%usr指的是用户进程使用的cpu资源的百分比;

%sys指的是系统资源使用cpu资源的百分比;

%wio指的是等待io完成的百分比,这是值得观注的一项;

%idle即空闲的百分比。

假如wio列的值很大,如在35%以上,讲明系统的IO存在瓶颈,CPU花费了很大的时间去等待I/O的完成。

Idle很小讲明系统CPU很忙。

像以上的示例,能够看到wio平均值为11,讲明I/O没什么十分的问题,而idle值为零,讲明cpu已经满负荷运行了。

当系统存在IO问题时,能够从下面几个方面解决:

联络相应的操作系统的技术支持对这方面进行优化,比方hp-ux在划定卷组时的条带化等方面。

查找Oracle中不合理的sql语句,对其进行优化;

对Oracle中访问量频繁的表除合理建索引外,再就是把这些表分表空间存放以免访问上产生热门,再有就是对表合理分区。

1.2关注内存

常用的工具便是vmstat,对于hp-unix来讲,能够用glance。

Aix来讲能够用topas。

当发现vmstat中pi列非零,memory中的free列的值很小,glance、topas中内存的利用率多于80%时,这时讲明内存方面应该调节一下。

方法大体有下面几项:

划给Oracle使用的内存不要超过系统内存的1/2,一般保在系统内存的40%为益。

为系统增加内存;

假如你的连接十分多,能够使用MTS的方式;

打全补丁,防止内存漏洞。

1.3找到使用资源十分大的Oracle的session及其执行的语句

Hp-unix能够用glance或top。

IBMAIX能够用topas。

此外能够使用ps的命令。

通过这些程序能够找到点用系统资源十分大的这些进程的进程号,就能够通过下面的sql语句发现这个pid正在执行哪个sql,这个sql最好在pl/sqldeveloper、toad等软件中执行:

SELECTa.username,a.machine,a.program,a.sid,a.serial#,a.status,

c.piece,c.sql_text

FROMv$sessiona,v$processb,v$sqltextc

WHEREb.spid=ORCL

ANDb.addr=a.paddr

ANDa.sql_address=c.address(+)

ORDERBYc.piece;

能够把得到的这个sql分析一下,看一下它的执行计划能否走索引。

对其优化避免全表扫描,以减少IO等待,进而加快语句的执行速度。

提示:

在做优化sql时,经常碰到使用in的语句,这时一定要用exists把它给换掉,由于Oracle在处理In时是按Or的方式做的,即便使用了索引也会很慢。

比方:

SELECTcol1,col2,col3FROMtable1a

WHEREa.col1NOTIN(SELECTcol1FROMtable2)

能够换成:

SELECTcol1,col2,col3FROMtable1a

WHERENOTEXISTS

(SELECTxFROMtable2bWHEREa.col1=b.col1)

1.4查找前十条性能差的sql语句

SELECT*FROM(SELECTparsing_user_id,executions,sorts,command_type,

disk_reads,sql_textFROMv$sqlarea

ORDERBYdisk_readsDESC)

WHEREROWNUM

第二章检查会话状态

要快速发现OracleServer的性能问题的原因,能够求助于v$session_wait视图,看系统的这些session在等什么,使用了多少的IO。

下面是参考脚本:

--脚本讲明:

查看占I/O较大的正在运行的session:

SELECTse.sid,se.serial#,pr.spid,se.username,se.status,se.terminal,

se.program,se.module,se.sql_address,st.event,st.p1text,

si.physical_reads,si.block_changes

FROMv$sessionse,v$session_waitst,v$sess_iosi,v$processpr

WHEREst.sid=se.sidANDst.sid=si.sid

ANDse.PADDR=pr.ADDR

ANDse.sid6

ANDst.wait_time=0

ANDst.eventNOTLIKE%SQL%

ORDERBYphysical_readsDESC;

对检索出的结果的几点讲明:

1.以上是按每个正在等待的session已经发生的物理读排的序,由于它与实际的I/O相关。

2.能够看一下这些等待的进程都在忙什么,语句能否合理?

SELECTsql_addressFROMv$sessionWHEREsid=;

SELECT*FROMv$sqltextWHEREaddress=;

执行以上两个语句便能够得到这个session的语句。

也以用altersystemkillsessionsid,serial#把这个session杀掉。

3.应观注一下event列,这是调优的关键一列,下面对常出现的event做以扼要的讲明:

1)bufferbusywaits,freebufferwaits这两个参数所标识是dbwr能否够用的问题,与IO很大相关的,当v$session_wait中的freebufferwait的条目很小或没有时,讲明系统的dbwr进程决对够用,不用调整;freebufferwait的条目很多,系统感觉起来一定很慢,这时讲明dbwr已经不够用了,它产生的wio已经成为数据库性能的瓶颈,这时的解决办法如下:

增加写进程,同时要调整db_block_lru_latches参数:

示例:

修改或添加如下两个参数

db_writer_processes=4

db_block_lru_latches=8

开异步IO。

IBM这方面简单得多,hp则费事一些,能够与Hp工程师联络。

2)dbfilesequentialread,指的是顺序读,即全表扫描,这也是应尽量减少的部分,解决方法就是使用索引、sql调优,同时能够增大db_file_multiblock_read_count这个参数。

3)dbfilescatteredread参数指的是通过索引来读取,同样能够通过增加db_file_multiblock_read_count这个参数来提高性能。

4)latchfree与栓相关,需要专门调节。

5)其他参数能够不十分观注

补充:

解决系统变慢的常用技巧方法

1、在我的电脑窗口,右击要清理的盘符―属性―清理磁盘--勾选要删除的文件--确定--是。

2、右键阅读器e――属性――点2个删除1个去除(都要逐一确定)――确定。

3、把C:

\WINDOWS\Prefetch(预读文件)把里面的文件全部删除

4、用优化大师或超级兔子清理注册表和垃圾文件。

5、开场――运行中输入msconfig――确定――启动――除了输入法ctfmon以外的勾全去掉。

6、右键我的电脑――属性――点高级――点启动和故障恢复中的设置――去掉所有的勾――写入调试信息选择无――确定――点高级下面错误报告――点禁用――2次确定。

7、开场..打开控制面板中的文件夹选项..点查看..点去末项自动搜索文件夹前面的勾..确定。

8、右键我的电脑――属性――硬件――设备管理器――双击IDE控制器――次要通道――高级设置――传送形式都选DMA――设备类型选无――确定――主要通道也同样设置――确定。

9、右键C盘进行磁盘清理和其它选项中的系统复原清理。

10、删除不用的程序软件。

当数据库变慢时的解决方法有哪些

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1