(附上awr报告)为了解决逐表慢,多线程(>10)同时查询,单表时间总时间反而变长

[复制链接]
查看11 | 回复9 | 2011-11-1 16:20:28 | 显示全部楼层 |阅读模式
本帖最后由 allnew 于 2011-11-9 13:20 编辑
为了解决逐个串行查表慢,多Job(10以上)同时查询时,每个表的查询时间反而变长,得不偿失。
库内有100张大表,每表查询耗时0.5秒左右,想采用同时启动多个查询线程(比如2),2个线程基本可以并行,耗时缩短一半,
但并行线程数达到10以上时,每个表的查询时间明显变长,由原来的0.5秒变为4-5秒,反而没有串行查的快了。
服务器上看了一下,CPU利用率一直没有超过12%,而且出现很多IO写,按理说纯查询不应出现太多写。
专家给点建议,谢谢。
Oracle 11.1 64-bit on Linux

附件是1个查询任务 和 同时10个查询任务的awr报告,每个任务都是5个查询线程。
先把概要部分贴一点出来,我觉得有问题的。
1任务Instance Efficiency Percentages (Target 100%)
Buffer Nowait %:
回复

使用道具 举报

千问 | 2011-11-1 16:20:28 | 显示全部楼层
查同样的数据库?同一个表?
回复

使用道具 举报

千问 | 2011-11-1 16:20:28 | 显示全部楼层
并行不见得快,要看IO能力的
回复

使用道具 举报

千问 | 2011-11-1 16:20:28 | 显示全部楼层
本帖最后由 allnew 于 2011-11-8 13:10 编辑
〇〇 发表于 2011-11-8 10:51
查同样的数据库?同一个表?
多个Job不查同一个表,
一个库内,业务表每天记录很多,每天一表,每张表在1千万以上。
所以:表多,每张表的记录数也多,所以采用多Job并行。
回复

使用道具 举报

千问 | 2011-11-1 16:20:28 | 显示全部楼层
本帖最后由 allnew 于 2011-11-8 17:42 编辑
chwp 发表于 2011-11-8 12:52
并行不见得快,要看IO能力的
但是,Orace内用多个Job(我将其认为是数据库的线程),明显变慢。
Job少的时候,效果不错。比如2个Job同时查询,则总查询时间为逐表查的一半,3Job则1/3。
但是如果Job数到了6以上效果就不明显了,10以上就变慢了。

回复

使用道具 举报

千问 | 2011-11-1 16:20:28 | 显示全部楼层
下午又做了测试,写了客户端程序进行查询,场景如下:
要查的表:50,查询任务开5个线程,每个线程自己去取未查过的表,这样总耗时可以减到1/5。比如原来
但是同时提交多个查询任务的时候,每个查询任务的总耗时明显增加,10个同时查询时,每个任务的耗时为单个任务的6、7倍。
为什么?每次任务都查这50个表,但是多个任务时同时查相同表的概率极低,怎么会变慢呢?
那,Oraccle的并发数是什么意思。
回复

使用道具 举报

千问 | 2011-11-1 16:20:28 | 显示全部楼层
sga pga不够大?
回复

使用道具 举报

千问 | 2011-11-1 16:20:28 | 显示全部楼层
你算一下5,6个任务时是否IO已经到极限了?

回复

使用道具 举报

千问 | 2011-11-1 16:20:28 | 显示全部楼层
〇〇 发表于 2011-11-8 18:16
sga pga不够大?

请版主明示,我的机器是32G内存,是自动内存管理
回复

使用道具 举报

千问 | 2011-11-1 16:20:28 | 显示全部楼层
4个和10个各做个awr报告吧,贴出来有人会看...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行