메뉴 건너뛰기

bysql.net

Week1_박우창

2012.07.17 10:54

balto 조회 수:9893

[1장] 아키텍쳐 기반 튜닝 원리

1. 다음은 실행계획을 공유하지 못하는 같은 의미의 SQL 문장이다. 효율에 가장 영향을 미치는 경우는 어떤 것인가? (p490)

(1)

  SELECT * FROM CUSTOMER;

  SELECT * FROM Customer;

(2)

  SELECT * FROM CUSTOMER;

  SELECT /* 고객 데이터 */ * FROM CUSTOMER;

(3)

  SELECT * FROM CUSTOMER;

  SELECT * FROM HR.CUSTOMER;

(4)

  SELECT * FROM CUSTOMER WHERE LOGIN_ID = 'tommy';

  SELECT * FROM CUSTOMER WHERE LOGIN_ID = 'karajan';

 

2. Dynamic SQL에 대한 설명 중 틀린 것은? (p495)

(1) Static SQL과 차이점은 SLQ 문이 실행시 동적으로 바뀐다는 점이다.

(2) Precompile시 syntax, semantic 체크가 불가능하다.

(3) Toad, Orange 같은 툴에서 적성하는 SQL은 Dynamic SQL이다.

(4) String 형 변수에에 담지 않고 코드사이에 직접 기술한 SQL을 말한다.

 

3. 다음 Oracle과 Sqlserver의 파일 구조에 관한 용어를 서로 대응시켜본 것이다 가장 거리가 먼 것은?(p478)

   (Oracle-SQLServer 순서) 

(1) 블록-페이지

(2) 테이블 스페이스-파일 그룹

(3) Redo 로그-Transaction 로그

(4) Archived Redo 로그 - Online Redo 로그 

 

[2장] Lock와 트랜잭션 동시성 제어

4. SQL Server LOCK의 종류가 아닌 것은? (p536)

(1) 공유 LOCK

(2) 배타적 LOCK

(3) 의도 LOCK

(4) 테이블 LOCK

 

5. Dirty READ 현상이 발생하는 격리성 수준을 골라라 (p543)

(1) READ UNCOMMITTED

(2) READ COMMITTED

(3) REPEATABLE READ

(4) SERIALIZABLE READ

 

6. 동시성제어에 관한 설명중 틀린 것은?(p547)

(1) 동시성을 높이려면 Lock을 최소화 해야한다.

(2) 비관적동시성제어와 낙관적동시성제어가 있다.

(3) 낙관적동시성제어는 배타락을 사용하지 않는다.

(4) 비관적동시성제어는 공유락을 사용한다.   

 

[3장]

7. 다음 중 쿼리변환에 해당되지 않는 것은? (p571)

(1) 서브쿼리 NESTING

(2) 뷰머징

(3) 조건절 푸싱

(4) 불필요한 조인 제거

 

8. 다음은 SQL 문에 대하여 옵티마이저가 쿼리변환을 하여 수행한 실행계획이다. 해당되는 쿼리변환 이름은? (p574)

select * from emp where deptno in (select deptno from dept)

------------------------------------------------------------------

| Id | Operation | Name | Rows | Bytes| Cost (%CPU)|

------------------------------------------------------------------

| 0 | SELECT STATEMENT | | 10 | 350 | 2 (0) |

| 1 | TABLE ACCESS BY INDEX ROWID| EMP | 3 | 99 | 1 (0) |

| 2 | NESTED LOOPS | | 10 | 350 | 2 (0) |

| 3 | INDEX FULL SCAN | DEPT_PK | 4 | 8 | 1 (0) |

|* 4 | INDEX RANGE SCAN | EMP_DEPTNO_IDX | 3 | | 0 (0) |

------------------------------------------------------------------

Predicate Information (identified by operation id):

------------------------------------------------------------------

4 - access("DEPTNO"="DEPTNO")

 

(1) 서브쿼리 UNNESTING

(2) 뷰머징

(3) 조건절 푸싱

(4) 불필요한 조인 제거

 

9. Oracle 에서 힌트가 무시되는 경우를 설명한 것이다. 해당되지 않는 것은?(p568)

(1) 참조하는 테이블이 없을 때

(2) 참조하는 인덱스 이름이 맞지 않을때

(3) 힌트보다 더 좋은 실행계획이 있을 때

(4) 다른 주석과 문장이 섞여있을 때

 

 

[4장] 인덱스와 조인

10. 인덱스를 재 생성해야하는 경우가 아닌 것은? (p612)

(1) 인덱스 분할에 의한 경합이 현저히 높을 때 자주 사용되는 인덱스 스캔 효율을 높이고자 할 때.

(2) NL Join에서 반복 액세스되는 인덱스 높이(height)가 증가했을 때

(3) 대량의 delete 작업을 수행한 이후 다시 레코드가 입력되기까지 오랜 기간이 소요될 때

(4) 총 레코드 수가 일정한데도 인덱스가 계속 줄어들때

 

11. 클러스터형 인덱스가 유용한 경우가 아닌 것은? (p618)

(1) 넓은 범위를 주로 검색하는 테이블

(2) 데이터 입력과 조회 패턴이 서로 같은 테이블

(3) 칼럼 수가 적고 로우 수가 많은 테이블

(4) 크기가 작고 NL Join으로 반복 룩업하는 테이블

 

12. 질의문이 인덱스를 사용할 경우 인덱스의 맆노드 개수에 영향을 받지 않은 인덱스 스캔 방법은?(p600)

(1) Index Unique Scan

(2) Index Skip Scan

(3) Index Fast Full Scan

(4) Index Range Scan

 

[5장] 고급 SQL 튜닝

13. 다음은 정렬이 필요한 SQL 문이다. 그렇지만 인덱스를 키 컬럼 순으로 생성하면 정렬을 하지 않고 인덱스를 이용하여 질의 결과를 계산할 수 있다. 다음 질의와 인덱스 생성을 보고 여기에 해당되는 것과 가장 거리가 먼 것을 찾아라. (p700)

(1) select * from customer where X='A' order by Y

- (X+Y)로 인덱스를 만든다

(2) select distinct X from emp order by X

- (X)로 인덱스를 만든다.

(3) select X, count(*) from customer group by X

- (X)로 인덱스를 만든다.

(4) select max(X+Y) from 주문 where X=10;

- (X, Y)로 인덱스를 만든다.

 

14. 다음 중 소트를 발생시키지 않은 질의는? (p689)

(1) select count(*), max(sal) from emp;

(2) select * from emp order by ename;

(3) select deptno, count(*) from emp group by deptno order by deptno;

(4) select empno from emp union select empno from emp where empno=10;

 

15. Hash Join을 사용하면 좋은 상황을 설명한 것이다. 틀린 것은?(p651)

(1) 조인컬럼에 적당한 인덱스가 없어서 NL 조인이 비효율적일 때

(2) 조인컬럼에 인덱스가 있지만 NL조인 드라이빙 집합에서 인너조인으로 조인액세스량이 많아 Random 액세스 부하기 심할 때

(3) Sort Merge 조인하기에 두 테이블이 너무 커 소트부하가 심할 때

(4) 수행빈도가 낮고 쿼리수행시간이 적게걸리는 테이블을 조인할 떄

 

[주관식]

1. 다음 SQL 문은 SORT 연산을 발생시킨다. 질의를 바꾸어 SORT 연산이 발생하지 않도록 해보아라. (p696)

(질의)

select distinct deptno

from emp;

 

(변경된 질의)

select deptno

from emp a

where exists ( ? );

 

2. 다음 빈칸(*)에 들어갈 문장을 적어라

SQL> create index emp_deptno_idx on emp(deptno);

SQL> select * from emp where deptno = 20;

 

Oracle

Execution Plan ------------------------------------------------------

0 SELECT STATEMENT Optimizer=ALL_ROWS

1 0 TABLE ACCESS (BY INDEX ROWID) OF 'EMP' (TABLE)

2 1 (*) OF 'EMP_DEPTNO_IDX' (INDEX)

 

SQLServer 

StmtText

------------------------------------------------------------- |--Nested Loops(Inner Join, OUTER REFERENCES:([Bmk1000]))

|-- (*) (OBJECT:([..].[dbo].[emp].[emp_deptno_idx]), SEEK:([deptno]=20) ORDERED FORWARD)

|--RID Lookup(OBJECT:([..].[dbo].[emp]), SEEK:([Bmk1000]=[Bmk1000]) LOOKUP ORDERED FORWARD)

 

 

 

 

번호 제목 글쓴이 날짜 조회 수
» Week1_박우창 [1] balto 2012.07.17 9893
57 Week1_이주영 suspace 2012.07.17 5026
56 Week1_승대수 보라빛고양이 2012.07.17 3053
55 Week1_이진우 [5] ljw 2012.07.16 46277
54 Week1_위충환 [1] 실천하자 2012.07.16 9273
53 문제작성 실천하자 2012.07.16 5794
52 제5절_배치_프로그램_튜닝 보라빛고양이 2012.07.04 6906
51 제4절_파티션_활용 오예스 2012.06.26 5753
50 제3절_DML_튜닝 balto 2012.06.13 9074
49 제1절_고급_SQL_활용 실천하자 2012.06.11 6287
48 제1절 고급 SQL 활용 실천하자 2012.06.11 8397
47 제4절_고급_조인_기법 suspace 2012.06.05 31240
46 제2절_소트_튜닝 file ljw 2012.06.04 12024
45 제3절_조인_기본_원리 보라빛고양이 2012.05.31 3847
44 제3절 조인 기본 원리 보라빛고양이 2012.05.30 6980
43 제1절_인덱스_기본_원리 오예스 2012.05.22 7100
42 제2절_인덱스_튜닝 balto 2012.05.18 9904
41 제2절_쿼리변환 ljw 2012.05.14 5614
40 제1절_옵티마이저 실천하자 2012.05.12 7185
39 제3절_동시성_제어 운영자 2012.05.08 6036