为了测试一个删除sql句的性能,而多次执行了这个删除sql句在每次执行sql句之前,都发行了以下2个语句:
1.alter system flush buffer_cache;
2.alter system flush shared_pool;被删除的表里有600万数据,每次执行删除sql句都被删除100万。为什么每次发行“alter system flush buffer_cache”所消耗的时间越来越长,由开始的1分钟变成了10分钟
并且删除sql句的执行时间差别也很大,第一次1200秒,第二次1900秒,第三次1600秒

解决方案 »

  1. .alter system flush buffer_cache
    .alter system flush shared_pool这两语句的作用是清除缓冲区和共享池。
    为什么要执行这2个语句,对删除的测试有什么影响吗?当你删除了100万,这100万会进入缓冲区,所以清理的时间会变长,这很正常。
      

  2. 执行这个语句的结果是将缓存在library cache和data dictionarycache 中的sql,pl/sql和数据字典定义都从共享池中清除了,在负载很重的生产库里执行flush shared_pool无异于自杀...慎用!
      


  3. 你好,请问,你说的“执行flush shared_pool无异于自杀”,是指对测试性能有影响,还是对整个数据库会产生影响,谢谢
      

类似问题 »