목록원리와 해법 (36)
정미나닷컴
작년 SQLP 시험에 소트 연산에 관한 문제가 출제됐었는데 시험장을 나온 후 틀렸음을 깨닫고 내 머리를 쥐어박았던 기억이 있다. 다시 나온다면 결코 틀리지 않으리라는 각오로 지금부터 소트에 대해 파보려고 한다.소트 수행 원리- SQL 수행 도중 데이터 정렬이 필요할 시 PGA 메모리에 Sort Area를 할당① 메모리 소트 (in-memory sort): 전체 데이터의 정렬 작업을 메모리 내에서 완료(=Internal Sort)② 디스크 소트 (to-dist sort): 할당받은 Sort Area 내에서 정렬을 완료하지 못해 디스크 공간까지 사용(=External Sort) ※ 디스크 소트 과정① PGA에서 정렬된 중간 결과집합을 Temp 테이블스페이스의 Temp 세그먼트에 임시 저장* Sort Run:..
DB에 대해 쥐뿔도 아는게 없던 시절에도 Lock이라는 단어는 많이 들어봤었다.애플리케이션에서 뭔가가 수정이 안되거나 저장이 안될 때면 늘 누군가 외쳤었으니깐. "락 걸린 것 같아!" 대학 시절 deadlock에 대해 배우면서 아래와 같은 그림도 뻔질나게 봤었다.근데 막상 "Lock의 종류나 원리에 대해 설명해봐라." 라고 하면 말문이 막히기 일쑤다.흠.. 대학교에선 들입다 외워서 시험보느라 바빴고회사에선 Lock을 1초라도 빨리 푸는데만 바빴다고 구차하게 변명해본다.그럼 이제부터 Lock에 대해 본격적으로 파헤쳐보자. 오라클이 제공하는 Lock에는 꽤 여러 종류가 있다.DML Lock, DDL Lock, Latch, 버퍼 Lock, 라이브러리 캐시 Lock/Pin 등등..대충 아는 것도 있고, 저건 뭐..
트랜잭션 수준 읽기 일관성 앞서 알아보았던 문장수준 읽기 일관성이 쿼리 시작 시점을 기준으로 삼았다면 트랜잭션 수준 읽기 일관성은 트랜잭션이 시작된 시점을 기준으로 일관성 있게 데이터를 읽어들이는 것을 말한다. ☑
Snapshot too old, 말 그대로 Snapshot이 너무 오래됐다는 말이다.Snapshot이 뭔데?* Snapshot : Data Buffer Cache 블록에 갱신이 일어날 때 복사해 놓은 Copy본 (CR 블록)CR 블록이 뭔지 모르겠다면 ☑[Oracle] 오라클 다중 버전 읽기 일관성 모델 알아보기 그럼 오라클에서 이런 에러가 나는 이유에 대해 알아보도록 하자. Undo 실패- 데이터를 읽어 내려가다가 쿼리 SCN 이후에 변경된 블록을 만나 과거 시점으로 롤백한 'Read Consistent' 이미지를 얻으려고 하는데, Undo 블록이 다른 트랜잭션에 의해 이미 재사용 돼 필요한 Undo 정보를 얻을 수 없는 경우 (Undo 세그먼트가 너무 작을때)① SCN 123 시점에 1시간 쯤 걸리는..
오늘은 어디선가 들어본 적 있는 블록 클린아웃에 대해 알아보자.우선 cleanout은 '청소'라는 뜻이므로 『블록 청소』 뭔가 dirty 상태의 블록을 free 상태로 바꿔주는 행위같다는 느낌적인 느낌이 든다. 블록 클린아웃 (Block Cleanout)- 트랜잭션에 의해 설정된 로우 Lock을 해제하고 블록 헤더에 커밋 정보를 기록하는 오퍼레이션- 보통은 트랜잭션 커밋 후 블록 클린아웃까지 완료해야 완전한 커밋이라고 할 수 있지만 대량 갱신 작업 후에는 시간 관계상 커밋 정보를 트랜잭션 테이블에만 기록하고 빠르게 커밋을 완료, 나중에 해당 블록이 처음 액세스되는 시점에 블록 클린아웃을 함흠.. 커밋을 때리면 Redo Log Buffer의 정보를 Redo Log File에 기록한다 라고 알고 있는데 위 ..
지난 번에 Consistent 모드로 블록을 읽으면 읽기 일관성이 보장된다는 것을 알았다. ☑[Oracle] 오라클 다중 버전 읽기 일관성 모델 알아보기 이제 오라클에 존재하는 Consistent 모드 읽기와 Current 모드 읽기의 차이점에 대해 알아보도록 하자. Consistent 모드 읽기 - 쿼리 실행 시간에 상관없이 항상 쿼리가 시작된 시점의 데이터를 가져옴 [ SQL Trace ]call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.00 0.00 0 0 0 0 Execute 1 0.41 1.15 66 28..
"오라클의 다중 버전 읽기 일관성 모델(Multi-Version Read Consistency Model)은 완벽한 문장수준 읽기 일관성을 보장한다." 뭐래냐... 다중 버전 읽기 일관성 모델은 뭐고, 문장수준 읽기 일관성은 뭐지..?누가 만들었는지 몰라도 말 참 어렵게 만들어 놨다.일단 문장수준 읽기 일관성이 뭔지 알아보자. * 문장수준 읽기 일관성이란 - 단일 SQL문이 수행되는 도중에 다른 트랜잭션에 의해 데이터의 추가, 변경, 삭제가 발생하더라도 일관성 있는 결과 집합을 리턴하는 것 음.. 저기서 말하는 '문장'이 SQL문의 '문장'을 의미하고 '읽기'라는 것은 SELECT를 의미하는 것 같구만.다른 표현으로 'SQL문 단위의 읽기 일관성' 정도로 기억하면 쉬울 듯.. 예를 들어 TX1에서 잔고를..
Direct Path I/O오라클 DB Buffer Cache를 경유하지 않고 곧바로 데이터 블록을 읽고 쓸 수 있도록 제공되는 기능* Conventional Path I/O : DB Buffer Cache를 경유하는 일반적인 I/O 작업 Direct Path I/O가 작동하는 경우① Direct Path Read/Write Temp 대량의 데이터 정렬 시 PGA의 Sort Area가 부족할 경우 Temp 테이블 스페이스 이용→ Sort Area에 정렬된 데이터를 Temp 테이블 스페이스에 쓰고 이를 다시 읽을 때 Direct Path I/O 발생② Direct Path Read병렬 쿼리로 Full Scan 수행 시 Direct Path Read 발생→ 병렬도를 2로 주고 병렬쿼리 수행 시 쿼리 수행 속..