如果注意到一直使用 SQL 语句高速缓存的某一查询的响应时间突然增加,那么查询的高速缓存条目可能已被删除。 您可以通过显示 onstat -g ssc 命令输出来监视 SQL 语句高速缓存的使用情况并检查已舍弃条目或已删除条目。
当一个条目标记为已删除时,数据库服务器在下次执行该 SQL 语句时必须对其重新进行语法分析和重新优化。 例如,图 1显示在执行第一条和第二条 SQL 语句之间,对 items 和 orders 表执行 UPDATE STATISTICS 之后,onstat -g ssc 命令显示的条目。
图: 已舍弃条目的样本 onstat -g ssc 命令输出
onstat -g ssc ... Statement Cache Entries: lru hash ref_cnt hits flag heap_ptr database user ----------------------------------------------------------------------------- ... 2 232 1 1 DF aa3d020 vjp_stores virginia SELECT C.customer_num, O.order_num FROM customer C, orders O, items I WHERE C.customer_num = O.customer_num AND O.order_num = I.order_num 3 232 1 0 -F aa8b020 vjp_stores virginia SELECT C.customer_num, O.order_num FROM customer C, orders O, items I WHERE C.customer_num = O.customer_num AND O.order_num = I.order_num ...