小编McG*_*lin的帖子

Oracle 11g - 即使使用NOCACHE提示,查询也会缓存

我正在使用cx_Oracle模块在Python中进行一些数据库基准测试.为了对结果进行基准测试,我运行了150个独特的查询并计算每个查询的执行时间.我正在运行这样的事情:

c = connection.cursor()
starttime = time.time()
c.execute('SELECT /*+ NOCACHE */ COUNT (*) AS ROWCOUNT FROM (' + sql + ')')
endtime = time.time()
runtime = endtime - starttime
Run Code Online (Sandbox Code Playgroud)

每个查询都通过变量传递sql,并且它们在长度,运行时和它们访问的表方面有很大差异.话虽如此,所有查询都表现出以下行为:

第一轮:很慢(相对)

第二轮:明显更快(需要1/2到1/5的时间)

第三轮:比第二轮快一点

所有后续运行> = 4:大约等于第3次运行

我需要禁用缓存来获得准确的结果,但前几次运行实际上是在抛弃我的数据; 这好像NOCACHE根本不起作用......这里发生了什么?

编辑:艾伦回答了我的问题,但是对于任何可能感兴趣的人,我做了一些研究并发现了这两个页面也很有用:

如何清除Oracle中的所有缓存项

http://www.dba-oracle.com/t_flush_buffer_cache.htm

python oracle cx-oracle oracle11g

7
推荐指数
1
解决办法
4098
查看次数

标签 统计

cx-oracle ×1

oracle ×1

oracle11g ×1

python ×1