ORACLE数据库导致cpu使用率高的原因
用一台机子做服务器,装的ORACLE数据库,但是CPU的使用率不稳定,每隔一分钟或多长时间,cpu的使用率就一下子高了很多,可达90%多,在我们的机子上运行程序时,那CP...
用一台机子做服务器,装的ORACLE数据库,但是CPU的使用率不稳定,每隔一分钟或多长时间,cpu的使用率就一下子高了很多,可达90%多,在我们的机子上运行程序时,那CPU的使用率就更高了,就算不读取数据,cpu的使用率也是忽高忽低的。这是怎么回事呀?有具体的原因或解决办法吗?
不是什么内存,注册表之类的问题哦,也不是右键的。 不是自己的机子做服务器。也不是开机时cpu高,服务器就一直开启着,oracle也一直运行着,在不取数据,不执行操作时,Oracle占内存就不稳定;在运行项目时,Oracle更不稳定了,cpu更是忽上忽下的。
select count(*) from jam_status_detect_5 t
where
t.alarm_rank != -1
and t.alarm_confirm_status = 0
and t.status_time >=(select max(s.status_time) from jam_status_detect_5 s )- {0}/24
and t.status_time <=(select max(s.status_time) from jam_status_detect_5 s 这条语句该怎样优化 占用时间是3s多 展开
不是什么内存,注册表之类的问题哦,也不是右键的。 不是自己的机子做服务器。也不是开机时cpu高,服务器就一直开启着,oracle也一直运行着,在不取数据,不执行操作时,Oracle占内存就不稳定;在运行项目时,Oracle更不稳定了,cpu更是忽上忽下的。
select count(*) from jam_status_detect_5 t
where
t.alarm_rank != -1
and t.alarm_confirm_status = 0
and t.status_time >=(select max(s.status_time) from jam_status_detect_5 s )- {0}/24
and t.status_time <=(select max(s.status_time) from jam_status_detect_5 s 这条语句该怎样优化 占用时间是3s多 展开
3个回答
展开全部
Oracle使用过程中的CPU高说明有资源消耗,你看看创建数据库后,是否创建的有短时间内刷新的物化视图?而物化视图的SQL性能又比较低,也会造成CPU不稳定。再就是是否存在周期性的I/O问题?I/O拥塞也会导致CPU高。
另外,关于你的SQL的优化,首先考虑在Where中不要使用子查询,其次,看看执行计划,只贴语句是很难进行调优的。
另外,关于你的SQL的优化,首先考虑在Where中不要使用子查询,其次,看看执行计划,只贴语句是很难进行调优的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
自己的机子做服务器要把oracle设置成手动的启动,否则你开机就运行很多的资源所以你的cpu会很高。在运行里面输入services.msc进行设置oracle的服务运行状态。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select count(*) from jam_status_detect_5 t
where
t.alarm_rank != -1
and t.alarm_confirm_status = 0
and t.status_time >=(select max(s.status_time) from jam_status_detect_5 s )- {0}/24
and t.status_time <=(select max(s.status_time) from jam_status_detect_5 s
一条语句遍历三次 要是jam_status_detect_5这张表数据量大的话 那简直就是灾难。。你完全可以只使用一次遍历实现
另外 检查job 估计是有定时任务在执行 而这任务很耗时
where
t.alarm_rank != -1
and t.alarm_confirm_status = 0
and t.status_time >=(select max(s.status_time) from jam_status_detect_5 s )- {0}/24
and t.status_time <=(select max(s.status_time) from jam_status_detect_5 s
一条语句遍历三次 要是jam_status_detect_5这张表数据量大的话 那简直就是灾难。。你完全可以只使用一次遍历实现
另外 检查job 估计是有定时任务在执行 而这任务很耗时
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询