흐르는 시간의 블로그...

내가 DB 장애로 골머리를 앓고 있으니...

웹개발자인 직원이 아래의 쿼리를 보내 왔다.


아무 생각없이 돌려 봤다.

full outer join을 써 놨다.

우리회사에서 초당 업데이트가 70번 이상 발생하는 최강의 복잡도와 Lock이 최상인 테이블 두개를 붙여놨다.


결국 과거에 작업을 하고 뒤처리를 안한것이다. ㅠ.ㅠ

나도 그 직원도 서로 잊어버린 결과라고나 할까.

...


SELECT Disk_Reads DiskReads, Executions, SQL_Text SQLText

FROM

(

SELECT Disk_Reads, Executions, LTRIM(SQL_Text) SQL_Text,

Operation, Options,

Row_Number() OVER

(Partition By sql_text ORDER BY Disk_Reads * Executions DESC)

KeepHighSQL

FROM

(

SELECT Avg(Disk_Reads) OVER (Partition By sql_text) Disk_Reads,

Max(Executions) OVER (Partition By sql_text) Executions,

sql_text, p.operation,p.options

FROM v$sql t, v$sql_plan p

WHERE t.hash_value=p.hash_value AND p.operation='TABLE ACCESS'

AND p.options='FULL' AND p.object_owner NOT IN ('SYS','SYSTEM')

AND t.Executions > 1

)

ORDER BY DISK_READS * EXECUTIONS DESC

)

WHERE KeepHighSQL = 1

AND rownum <=30;