簡體   English   中英

Oracle AWR - 高 SQL 解析調用但 0 次執行

[英]Oracle AWR - high SQL Parse Calls but 0 Executions

我試圖了解導致 Oracle (10) 數據庫打開查詢的原因。

在 AWR 上,它顯示了非常多的解析調用(例如,1 小時內超過 15,000 次),但執行次數為 0。

怎么能不執行查詢,然后解析 15000 次呢?

解析調用:15,000+

執行次數:0

SQL 文本:從 AVIEW 中選擇 *

SQL 中的 * 將解釋重復解析。 您應該將其替換為字段名稱列表。

甲骨文 11、java、jdbc 11.2.0.3

當您像這樣從插入中獲取序列時會出現問題

PreparedStatement ps = connection.prepareStatement(QUERY, new String[] { "student_id" });

我們發現 jdbc 驅動程序在每次插入之前准備“SELECT * FROM”語句。 只有解析操作沒有執行。

T4CConnection.doDescribeTable

T4CStatement localT4CStatement = new T4CStatement(this, -1, -1);
localT4CStatement.open();
String str1 = paramAutoKeyInfo.getTableName();
String str2 = new StringBuilder().append("SELECT * FROM ").append(str1).toString();
localT4CStatement.sqlObject.initialize(str2);

Oracle 解析器不會緩存帶有“*”的解析查詢,因此每次插入都有額外的解析操作。

零執行表示查詢未在 AWR 快照內完成

我們有一個類似的問題,但查詢略有不同:

select col1, col2, col3 from table

結果是一樣的。 高解析率但零執行。

原因是來自 spring-jdbc 的 StatementCreatorUtils#setNull。 ver 4.2.7 執行時:

insert into table (col1, col2, col3) values (val1, null, null)

有一個參數類型對數據庫的調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM