請慎重分析物件!
When you generate statistics for a table, column, or index, if the data dictionary already contains statistics for the object, then Oracle updates the existing statistics. Oracle also invalidates any currently parsed SQL statements that access the object.
session1:
SQL> alter system flush shared_pool;
系統已更改。
SQL> alter system flush buffer_cache;
系統已更改。
SQL> select * from tt;
ID NAME AGE
---------- ----------------------------------- ----------
3 b 0
4 b 0
6 b 0
0 a 0
SQL> select namespace,reloads,invalidations from v$librarycache;
NAMESPACE RELOADS INVALIDATIONS
--------------- ---------- -------------
SQL AREA 240 1326
TABLE/PROCEDURE 958 0
BODY 6 0
TRIGGER 0 0
INDEX 0 0
CLUSTER 0 0
OBJECT 0 0
PIPE 0 0
JAVA SOURCE 0 0
JAVA RESOURCE 0 0
JAVA DATA 0 0
已選擇11行。
SQL> select a.*,b.name
2 from v$sesstat a , v$statname b
3 where a.statistic#=b.statistic#
4 and b.name like '%parse%'
5 and a.sid=(select sid from v$mystat where rownum=1);
SID STATISTIC# VALUE NAME
---------- ---------- ---------- -----------------------------------
137 430 146 parse time cpu
137 431 479 parse time elapsed
137 432 1623 parse count (total)
137 433 557 parse count (hard)
137 434 4 parse count (failures)
為了準確觀察parse的次數,減少在同一個session中analyze table tt compute statistics;所引起的干擾,另開一個session執行analyze table tt compute statistics:
session2:
SQL> analyze table tt compute statistics;
表已分析。
再回到session1:
SQL> select * from tt;
ID NAME AGE
---------- ----------------------------------- ----------
3 b 0
4 b 0
6 b 0
0 a 0
SQL> select namespace,reloads,invalidations from v$librarycache;
NAMESPACE RELOADS INVALIDATIONS
--------------- ---------- -------------
SQL AREA 331 1328
TABLE/PROCEDURE 986 0
BODY 8 0
TRIGGER 0 0
INDEX 0 0
CLUSTER 0 0
OBJECT 0 0
PIPE 0 0
JAVA SOURCE 0 0
JAVA RESOURCE 0 0
JAVA DATA 0 0
已選擇11行。
SQL> select a.*,b.name
2 from v$sesstat a , v$statname b
3 where a.statistic#=b.statistic#
4 and b.name like '%parse%'
5 and a.sid=(select sid from v$mystat where rownum=1);
SID STATISTIC# VALUE NAME
---------- ---------- ---------- -----------------------------------
137 430 146 parse time cpu
137 431 479 parse time elapsed
137 432 1629 parse count (total)
137 433 558 parse count (hard)
137 434 4 parse count (failures)
SQL>
透過對比發現分析tt前後的INVALIDATIONS和parse count
都增加了,儘管執行了相同的sql:select * from tt;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/19602/viewspace-1002596/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 嫁程式設計師?請慎重!程式設計師
- 請教:關於物件導向的分析方法物件
- Tomcat 7 的一次請求分析(二)Socket 轉換成內部請求物件Tomcat物件
- [譯]Flask教程–請求物件Flask物件
- XHR物件的get請求物件
- Django請求響應物件Django物件
- 索引rebuild和rebuild online時要慎重索引Rebuild
- request和response——請求響應物件物件
- 請問大家如何設計物件池?物件
- golang物件導向分析Golang物件
- javaScript BOM物件分析整理JavaScript物件
- 為什麼說Java中要慎重使用繼承Java繼承
- HttpContext請求上下文物件HTTPContext物件
- 命令模式-將請求封裝成物件模式封裝物件
- go http請求流程分析GoHTTP
- Java 物件記憶體分析Java物件記憶體
- swift 物件儲存地址分析Swift物件
- 物件導向建模分析(一)物件
- 請教db4o delete物件後,關聯物件未刪除delete物件
- 索引rebuild和rebuild online時要慎重(轉載)索引Rebuild
- 設計開發時慎重決定列是否為空
- Mybatis foreach 請求引數是物件集合MyBatis物件
- 請教一個物件設計的問題物件
- java值物件的傳輸問題請教Java物件
- 請教 NIO 中物件流通訊的問題物件
- urllib.request.Request物件封裝請求物件封裝
- Laravel 請求類原始碼分析Laravel原始碼
- Okhttp同步請求原始碼分析HTTP原始碼
- 原始碼分析Retrofit請求流程原始碼
- PictureToTv 程式分析--請前輩指正
- 請教:如何去分析原始碼原始碼
- Joomla 物件注入漏洞分析報告OOM物件
- C++物件模型:編譯分析C++物件模型編譯
- 智慧電視慎重購買!入手之前一定了解明白
- Python學習筆記(2)慎重使用全域性變數Python筆記變數
- 設計開發時慎重決定列是否為空(二)
- 請問怎麼透過HttpServletRequest和HttpServletResponse 物件取得ServletContext物件HTTPServlet物件Context
- 請問怎麼透過HttpServletRequest或HttpServletResponse物件取得ServletContext物件HTTPServlet物件Context