两个办法:一、优化硬件(CPU、内存和硬盘等),优化I/O子系统,增强IO读写能力;第二、优化SQL语句。第一种办法治标不治本,建议用第二种办法,你的截图里边那几个几百秒的SQL语句是有问题的,要进一步优化。查看一下执行这些语句是在哪些页面,查询了什么数据,数据量多大,判断一下业务逻辑,然后再去优化。
创新互联公司主营兴山网站建设的网络公司,主营网站建设方案,app软件开发公司,兴山h5重庆小程序开发搭建,兴山网站营销推广欢迎兴山等地区企业咨询
(如有帮助,请采纳,谢谢)
分散IO啊,1,把文件搭配着放在不同的磁盘分区。2,看看你的是RAID几。 最好做成RAID 10。3,再不行 就换SSD盘。就这些
首先不知道你的数据库在什么系统下:
window:
找到数据文件存放的位置,比如D:\存放的是oracle的数据文件,如果表空间采用的是自动管理方式,考虑将一些数据文件移到其他盘符下,比如:e:\等
linux/unix
du -sk * 查看oracle数据库相关文件夹下每个文件的空间使用情况,删除垃圾文件
如果没有垃圾文件,尝试整理表空间,可以释放一些空间,只是暂时解决文件
增加裸设备
如果使用asm的方式管理的,考虑将asm里增加pv。
以上,希望能帮助你!
释放连接只能是让一些连接的进程断开连接。
查询哪个user的连接数最多,先跟他们的用户说,不能连接这么多的进程,让他们释放一些,如果释放了,系统正常了,那么就限制每个用户连接数,不让他们连接这么多。
如果不释放,你就在操作系统层面把他们那些进程kill掉,有人来找就让他们对系统夯住负责,然后限制用户的连接数。
不过这么操作的风险还是不小的,自己掂量。
Oracle中的IO问题及其解决思路
对于负载偏重点不同,我们可以简单的将数据库系统分为CPU负载系统(CPU Bound System)和IO负载系统(IO Bound System)。顾名思义,CPU负载系统的资源瓶颈在于CPU,而IO负载系统的瓶颈在于磁盘IO。
我们可以通过操作系统的一些命令来确认一个系统是否是存在IO负载。在UNIX下,可以使用"iostat"或者"sar -d"来看系统的IO情况;在windows下,可以通过系统的性能监视器查看,但由于性能监控器中看到的IO是静态的IO总量信息,并不直观,因此也可以用本站的TopShow工具来查看实时的IO信息。
在UNIX系统下,发现CPU IDEL很低并不一定代表这是一个CPU负载系统。一个IO负载系统在表面上看CPU的IDEL值也可能很低
重新创建一个临时表空间,把原来的默认临时表空间drop掉(包括里面的临时数据文件)再重新建立
SQL create temporary tablespace temp2
2 tempfile '/home/oracle/oracle/product/10.2.0/oradata/hatest/temp02.pdf' size 512M reuse
3 autoextend on next 640k maxsize unlimited;
Tablespace created.
SQL alter database default temporary tablespace temp2;
Database altered.
SQL drop tablespace temp including contents and datafiles;
Tablespace dropped.
(注意:由于临时表空间的数据文件比较大,所以这步可能会花费比较长的时间)
SQL create temporary tablespace temp
2 tempfile '/home/oracle/oracle/product/10.2.0/oradata/hatest/temp01.pdf' size 512M reuse
3 autoextend on next 640K maxsize unlimited;
Tablespace created.
SQL alter database default temporary tablespace temp;
Database altered.
SQL drop tablespace temp2 including contents and datafiles;
Tablespace dropped.
SQL exit