| Oracle | Oracleのパフォーマンス分析に役立つSQLメモ | |
| 2004/02/21 |
●ライブラリキャッシュのヒット率
V$LIBRARYCACHEのGETHITRATIOを見てオブジェクト参照時のキャッシュヒット率を表示します。
SQL AREAのヒット率が90%を割っている場合には、アプリケーション・コードの改善を検討します。
select namespace, gethitratio
from v$librarycache;
|
select sum(pins) "EXECUTIONS",
sum(reloads) "MISSES",
sum(reloads)/sum(pins)*100 "MISS RATE"
from v$librarycache;
|
set serveroutput on size 10000
declare
ln_mem_object number;
ln_mem_sql number;
ln_mem_cursor number;
begin
-- オブジェクトが使っているサイズ
SELECT SUM(SHARABLE_MEM) INTO ln_mem_object
FROM V$DB_OBJECT_CACHE;
-- SQL文が使っているサイズ
SELECT SUM(SHARABLE_MEM) INTO ln_mem_sql
FROM V$SQLAREA;
-- カーソルが使っているサイズ
SELECT 250 * SUM(USERS_OPENING) INTO ln_mem_cursor
FROM V$SQLAREA;
DBMS_OUTPUT.PUT_LINE('オブジェクト:' || TO_CHAR(ln_mem_object));
DBMS_OUTPUT.PUT_LINE('SQL文 :' || TO_CHAR(ln_mem_sql));
DBMS_OUTPUT.PUT_LINE('カーソル :' || TO_CHAR(ln_mem_cursor));
end;
/
|
select namespace, pins, reloads, invalidations
from v$librarycache;
|
SELECT '表領域とデータファイルの空きを表示' FROM DUAL;
SELECT A.TABLESPACE_NAME || ' ' || B.FILE_NAME || ' ' ||
TO_CHAR(
ROUND((B.BYTES-SUM(A.BYTES))*100 / B.BYTES, 2)
, '90.99')
FROM DBA_FREE_SPACE A,
DBA_DATA_FILES B
WHERE A.FILE_ID = B.FILE_ID
GROUP BY A.TABLESPACE_NAME, B.FILE_NAME, B.BYTES;
|
●ヒントを使う
コストベースのオプティマイザを有効にしたときに、
表を分析すると自動的にルールベースからコストベースに切り替わりますが、
コストベースの際に採用されるハッシュジョインが遅い、
ルールベースの索引に基づくジョインに戻したい、というときに、「RULE」ヒントが使えます。
SELECT /*+ RULE */ a.ORDER_ID, a.UNIT_PRICE FROM ORDER a WHERE ... |
| もくじ | ||
| Oracle | (C) 2002-2003 MISUMI URANO (2002/02/18 - 2004/02/21) |