2016-10-07 2 views
1

Я пытаюсь измерить время выполнения запроса в oracle 12c для базы данных в базе данных на базе диска. На стороне клиента я использую JDBC для запуска запроса.Как узнать, что запрос работает в базе данных в базе данных или в базе данных диска

Как узнать, ищет ли запрос требуемую базу данных в памяти или на диске? Есть ли опция, которая сообщает серверу oracle db, которая ищет базу данных сначала в в памяти, а затем в диск?

ответ

0

Как узнать, ищет ли запрос требуемую базу данных в памяти или на диске?

Вы можете видеть, что оракул изучил память или диск для данных в Плане выполнения, как показано ниже.

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, что искать в базе данных первого в в памяти, а затем в диск?

Oracle Doc says-

INMEMORY _QUERY используется для включения или отключения в памяти запросов для всей базы данных на сессии или системном уровнях. Этот параметр полезен, если вы хотите протестировать рабочие нагрузки с использованием и без использования хранилища столбцов в памяти (хранилище столбцов IM).

отключить запрос в памяти, как:

SQL> alter session set inmemory_query = disable; 

Вы даете INMEMORY подсказку оптимизатору искать в памяти для данных, как показано ниже.

select /*+ INMEMORY */ * from t1;