메뉴 건너뛰기

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)

 

 

 

 

번호 제목 글쓴이 날짜 조회 수
58 Front Page file 운영자 2012.02.21 186700
57 Week1_이진우 [5] ljw 2012.07.16 46278
56 제1절_성능_데이터_모델링의_개요 file ljw 2012.03.04 44546
55 제4절_고급_조인_기법 suspace 2012.06.05 31240
54 제1절_Lock balto 2012.05.05 25259
53 제1절_데이터_모델의_이해 실천하자 2012.03.04 22594
52 제5절_식별자 file ljw 2012.03.04 18958
51 제1절_표준_조인(STANDARD_JOIN) file ljw 2012.03.19 15924
50 제3절_반정규화와_성능 file ljw 2012.03.04 15292
49 제5절_WHERE_절 file 보라빛고양이 2012.03.10 14879
48 제4절_관계(Relationship) [1] 실천하자 2012.03.04 13028
47 제5절_그룹_함수(GROUP_FUNCTION) file balto 2012.03.31 12458
46 제2절_소트_튜닝 file ljw 2012.06.04 12024
45 제2절_DDL(DATA_DEFINITION_LANGUAGE) [1] file balto 2012.03.09 11722
44 제7절_GROUP_BY_HAVING_절 suspace 2012.03.12 11531
43 제1절_데이터베이스_아키텍처 [2] ljw 2012.04.23 11523
42 제4절_서브쿼리 오예스 2012.03.27 11516
41 제1절_관계형_데이터베이스_개요 balto 2012.03.09 10446
40 제2절_정규화와_성능 file ljw 2012.03.04 10394
39 제2절_인덱스_튜닝 balto 2012.05.18 9904