2016-10-07 46 views
1

我試圖測量oracle 12c中針對基於磁盤的數據庫的內存數據庫的查詢執行時間。在客戶端,我使用JDBC來激發查詢。如何知道查詢是在內存數據庫還是磁盤數據庫上運行

如何知道查詢是查找內存還是光盤中的必需數據庫?是否有任何選項告訴oracle數據庫服務器首先查找數據庫內存中然後寫入光盤

回答

0

如何知道查詢是查找內存還是光盤中的必需數據庫?

您可以看到,oracle是否查看了執行計劃中的數據的內存或磁盤,如下所示。

SQL> desc t1 
Name      Null? Type 
----------------------------------------- -------- ---------------------------- 
COL1       VARCHAR2(20) 
COL2       VARCHAR2(20) 

SQL> alter table t1 inmemory; 

Table altered. 

SQL> explain plan for select * from t1; 

Explained. 

SQL> select * from table(dbms_xplan.display()); 
Plan hash value: 3617692013 

------------------------------------------------------------------------ 
| Id | Operation   | Name | Rows | Bytes | Cost (%CPU)| 
------------------------------------------------------------------------ 
| 0 | SELECT STATEMENT  |  | 1 | 24 | 0 (0)| 
| 1 | TABLE ACCESS INMEMORY FULL| T1 | 1 | 24 |  | 
------------------------------------------------------------------------ 

8 rows selected. 

SQL> alter table t1 no inmemory; 

Table altered. 

SQL> explain plan for select * from t1; 

Explained. 

SQL> select * from table(dbms_xplan.display()); 
Plan hash value: 3617692013 

-------------------------------------------------------------------------- 
| Id | Operation  | Name | Rows | Bytes | Cost (%CPU)| Time  | 
-------------------------------------------------------------------------- 
| 0 | SELECT STATEMENT | |  1 | 24 |  2 (0)| 00:00:01 | 
| 1 | TABLE ACCESS FULL| T1 |  1 | 24 |  2 (0)| 00:00:01 | 
-------------------------------------------------------------------------- 

8 rows selected. 

有沒有告訴查找數據庫首先到內存,然後進入光盤上的Oracle數據庫服務器的任何選項?

甲骨文文件says-

INMEMORY _query用於啓用或禁用在內存的查詢用於在會話或系統級整個數據庫。當您想要使用和不使用內存列存儲(IM列存儲)來測試工作負載時,此參數很有用。

SQL> alter session set inmemory_query = disable; 

你給INMEMORY暗示優化器尋找到的數據的存儲,如下圖所示:

你作爲禁用內存查詢。

select /*+ INMEMORY */ * from t1; 
相關問題