Cus*_*dio 16 oracle performance caching oracle10g
我正在尝试为我的数据测试新的汇总表的效用.
所以我创建了两个过程来获取某个间隔的数据,每个过程使用不同的表源.所以在我的C#控制台应用程序上,我只是调用一个或另一个.当我想重复几次以获得良好的响应时间模式时,问题就出现了.
我有这样的事情:1199,84,81,81,81,81,82,80,80,81,81,80,81,91,80,80,81,80
可能我的Oracle 10g正在进行不适当的缓存.
我怎么能解决这个问题?
Pet*_*ang 10
编辑:请参阅asktom上的这个主题,它描述了如何以及为什么不这样做.
如果您处于测试环境中,则可以使表空间脱机并再次联机:
ALTER TABLESPACE <tablespace_name> OFFLINE;
ALTER TABLESPACE <tablespace_name> ONLINE;
Run Code Online (Sandbox Code Playgroud)
或者你可以试试
ALTER SYSTEM FLUSH BUFFER_CACHE;
Run Code Online (Sandbox Code Playgroud)
但仅限于测试环境.
当您在"真实"系统上进行测试时,您在第一次调用后获得的时间(使用缓存数据的时间)可能会更有趣,因为您将拥有缓存数据.调用该过程两次,并仅考虑后续执行中获得的性能结果.
可能我的Oracle 10g正在进行不适当的缓存.
实际上,似乎Oracle正在做一些完全合适的缓存.如果这些表将被大量使用,那么您希望大多数时间都将它们放在缓存中.
编辑
在评论彼得的回应时,路易斯说
在通话前冲洗我得到了一些有趣的结果,如:1370,354,391,375,352,511,390,375,326,335,435,334,334,328,337,314,417,377,384,367,393.
这些发现是"有趣的",因为刷新意味着调用比行在数据库缓存中的时间要长一些,但不会像第一次调用那样长.这几乎可以肯定是因为服务器已将物理记录存储在其物理高速缓存中.避免这种情况的唯一方法是,真正针对空缓存运行是在每次测试之前重启服务器.
或者学会正确调整查询.了解数据库的工作方式是一个良好的开端.EXPLAIN PLAN比壁钟更好的调音辅助工具. 了解更多.
归档时间: |
|
查看次数: |
30297 次 |
最近记录: |