'2016/01'에 해당되는 글 2건

  1. 2016.01.22 [SQLP] 3-2. Lock과 트랜잭션
  2. 2016.01.14 [SQLP] 3-1. 아키텍처 기반의 튜닝 원리 1

1. Lock에 의한 성능 저하를 최소하는 방안으로 옳지 않은 것을 고르시오. P535

  1) 트랜잭션을 가능한 짧게 정의한다.
  2) 트랜잭션이 활발한 주간에 대용량 갱신작업을 수행하지 않도록 한다.
  3) for update와 nowait, wait 등의 옵션을 적절히 사용하여 교착상태를 방지한다. 
  4) 트랜잭션 격리성 수준을 상향 조정한다.
  5) SQL 문장이 가장 빠르게 처리되도록 튜닝을 한다. 


2. Oracle Lock에 대한 설명으로 잘못된 것을 모두 고르세요. P359

  1) 다른 트랜잭션이 갱신 중인 레코드를 읽고자 할 때 대기하지 않아도 된다. 
  2) 다른 트랜잭션이 갱신 중일 레코드를 갱신하고자 할 때 대기해야 한다. 
  3) 다른 트랜잭션이 읽고 있는 레코드를 갱신하고자 할 때 대기해야 한다. 
  4) 아무리 많은 데이터를 동시에 갱신하더라도 Lock Escalation이 발생하지 않는다.
  5) select 문을 실행시 어떤 Lock 도 발생시키지 않는다.


3. Oracle Table Lock  중에서 insert, update, delete문 실행시 발생되는 lock 으로, 동일 종류에 Lock에 대해서는 호환성을 갖는 항목을 고르세요  P 540 

  1) Row Share 
  2) Row Exclusive 
  3) Share
  4) Share Row Exclusive
  5) Exclusive 


4. 다음  트랜잭선 격리성 수준 중  Oracle에서는 지원하지 않아 쿼리 조회시 for update 구문을 활용해서 이용해야하는 것으로, Phantom Read현상은 방지할 수 없는 수준을 고르세요. 

  1)   Read Committed 
  2)  Read Uncommitted
  3)  Serializable Read
  4)  Repeatable Read


5. 동시성과 일관성은 반비례 관계로 하나를 성능을 개선하면 하나의 성능은 저하되는 것이 일반적이지만, 읽기 작업과 쓰기 작업을 병행가능하면서 데이터의 일관성도 특정 시점 ( 쿼리 또는 트랜잭션 시작 시점)으로 고정되어 유지되도록 방법으로 (1.                             , 영문 :                                                             )이 있으나,  이 방식의 단점으로는 대용량 데이터 처리시 (                                 ) 에러가 발생할 수 있다는 점이다.  


  

  

 



 




Posted by 꿈을펼쳐라
,

1. 다음의 오라클 대기 이벤트 중 Call이나 네트워커의 부하와 관련이 없는 이벤트는 무엇인가요? (P 485)

  1) SQL*Net message from client

  2) SQL*Net message to client 

  3) SQL*Net more data to client 

  4) SQL*Net more data from client 


2. 다음의 오라클/SQL Server의 데이터 구조를 설명하는 내용  중 적당하지 않을 것을 모두 고르세요. (Page 476, 477)

  1) 블록은 공간을 할당하는 단위로, 옵티마이저가 최적화를 할때 기준이 되는 값이다.

  2) 블록이나 익스텐트 모두, 오라클에서는 설정을 통해 그 크기가 변경될 수 있지만, SQL Server에서는 고정된 크기를 사용한다. 

  3) 익스텐트내에 블록은 논리적으로 연속된 공간을 할당 받는다. 

  4) SQL Server 의 익스텐트는 균일/혼합 타입이 있는데, 모든 테이블의 처음 공간은 균일 익스텐트로 시작한다. 

  5) 세그먼트는 테이블, 인텍스, undo처럼 각 오프젝트와 1:1 관계를 갖는 단위로 한 세그먼트는 테이블 스페이스 내에 하나의 

    데이터 파일에 저장된다.


3. 다음 오라클 메모리 공간에 대한 설명으로 틀린 것을 모두 고르세요. 

  1) 데이터를 읽고자 할 때는 읽고자 하는 블록을 먼저 버퍼 캐시에서 찾아보고 없을 경우에 Disk로 접근한다. 단 예외는 있다.     

  2) 데이터 변경시에도 버퍼에 적재된 블록에 먼저 기록한 후 주기적으로 DBWR 프로세스를 통한 Disk에 기록된다.

  3) 모든 버퍼는 반드시 세가지- Free, Dirty, Pinned - 중 하나의 상태에 놓여져 있다.

  4) 서버 프로세스가   버퍼 캐시에 변경하기 전에  Undo  버퍼에 기록, 주기적으로 LGWR 프로세스가 데이터 파일에 기록한다. 

  5) 사용자가 수행한  SQL문이나 실행계획, Stored Procedure 등은 공유 풀 중 Dictionary Cache에 저장된다.


4. 다음 중 I/O 시 발생되는 대기 이벤트 중에서 db file scattered read와 관련 있는 항목을 모두 고르세요. 

  1) Index Range scan 

  2) table full scan

  3) random Access 

  4) Index full scan

  5)  Index fast full scan


5. 다음 중 User call 부하 최소화 방법으로 적절하지 않을 항목을 모두 고르세요. 

   1) Loop 구간 내의 반복적인 SQL 호출을 해결할 수 있는 one-SQL을 구현한다.

  2) 한번 SQL 수행으로 여러 레코드를 동시에 처리할 수 있는 Array Proccessing을 전체 과정 중 처리 과정 중 일부라도 먼저 적용한다. 

  3) 부분 범위처리 기법을 활용하여 상황에 필요한 정보만 가져올 수 있도록 구현한다.  

  4) 사용자 정의 함수는 Context Switching을 야기하여 성능 저하에 원인이 되므로, 가급적 사용하지 않아야 한다. 

  5) 효과적인 페이지 처리 방식을 통해 호출 부하를 최소화 한다.

Posted by 꿈을펼쳐라
,