在oracle 10gr2上,我有几个sql查询,我正在比较性能,但是在第一次运行之后,v $ sql表存储了用于缓存的执行计划,因此对于其中一个查询我在第一次运行时从28秒开始到.5秒后。
我试过
ALTER SYSTEM FLUSH BUFFER_CACHE; - 运行此命令后,查询始终以5秒运行,我认为这不准确。
认为可能会从缓存中删除订单项本身: 从v $ sql中删除sql_text就像'select * from .... 但是得到一个关于无法从视图中删除的错误。
答案 0 :(得分:51)
答案 1 :(得分:17)
自从我使用Oracle以来已经有一段时间了,但我相信执行计划会缓存在共享池中。试试这个:
alter system flush shared_pool;
缓冲区缓存是Oracle存储最近使用的数据的地方,以便最大限度地减少磁盘空间。
答案 2 :(得分:0)
我们最近在性能调优查询方面做了大量工作,而且查询性能不一致的罪魁祸首是Oracle所处的文件系统缓存。
当您刷新Oracle缓存时,文件系统仍然可能存在查询要求的数据,这意味着查询仍将快速返回。
不幸的是我不知道如何清除文件系统缓存 - 我只是从我们非常有用的系统管理员中使用一个非常有用的脚本。