전체보기
-
[SSMS] 플랫 파일을 SQL로 가져오기_엑셀 업로드RDS/Tool 2020. 10. 3. 11:02
플랫 파일 가져오기 마법사는 플랫 파일(.csv, .txt)에서 데이터베이스의 새 테이블로 데이터를 복사하는 간단한 방법입니다. 플랫 파일 가져오기 마법사는 쉼표로 구분된 서식 파일과 고정 너비 서식 파일을 모두 지원합니다. 1.데이터베이스 우클릭 -> 태스크 -> 데이터 가져오기 선택2.SQL Server 가져오기 및 내보내기 마법시 시작화면이 나오면 Next3.데이터 원본에서 Microsoft Excel을 선택 - Excel 파일 경로는 업로드할 엑셀 파일의 경로를 선택 - Excel 버전은 Microsoft Excel 97-2003으로 선택4.SQL Server Native Client 11.0을 선택5.SQL Server 인증 사용을 선택한 후 사용자 이름 및 암호를 입력한 Next6.하나 이상의..
-
친절한 SQL 튜닝_6장.DML 튜닝_4친절한 SQL 튜닝 2020. 10. 3. 10:51
DML 튜닝 6.4 Lock과 트랜잭션 동시성 제어 6.4.1 오라클 Lock 오라클은 공유 리소스와 사용자 데이터를 보호할 목적으로 DML Lock, DDL Lock, 래치, 버퍼 Lock, 라이브러리 캐시 Lock/Pin 등 다양한 종류의 Lock을 사용한다. 이 외에도 내부에 더 많은 종류의 Lock이 존재한다. 래치는 SGA에 공유된 각종 자료구조를 보호하기 위해 사용하며, 버퍼 Lock은 버퍼 블록에 대한 액세스를 직렬화하기 위해 사용한다. 라이브러리 캐시 Lock과 Pin은 라이브러리 캐시에 공유된 SQL 커서와 PL/SQL 프로그램을 보호하기 위해 사용한다. 애플리케이션 개발 측면에서 가장 중요하게 다루어야 할 Lock은 무엇보다 DML Lock이다. DML Lock은 다중 트랜잭션이 동시에..
-
친절한 SQL 튜닝_6장.DML 튜닝_3친절한 SQL 튜닝 2020. 10. 3. 09:44
DML 튜닝 6.3 파티션을 활용한 DML 튜닝 6.3.1 테이블 파티션 파티셔닝(Partitioning)은 테이블 또는 인덱스 데이터를 특정 컬럼(파티션 키) 값에 따라 별도 세그먼트에 나뉘서 저장하는 것을 말한다. 파티션이 필요한 이유를 관리적 측면과 성능적 측면으로 나뉘 짧게 요약하면 아래와 같다. 관리적 측면 : 파티션 단위 백업, 추가, 삭제 변경 -> 가용성 향상 성능적 측면 : 파티션 단위 조회 및 DML, 경합 또는 부하 분산 파티션에는 Range, 해시, 리스트 세 종류가 있다. Range 파티션 오라클 8 버전부터 제공된 가장 기초적인 방식으로 주로 날자 컬럼을 기준으로 파티셔닝한다. 아래는 주문 테이블을 주문일자 기준으로 분기별 Range 파티셔닝하는 방법을 예시하고 있다. 1 2 3..
-
친절한 SQL 튜닝_6장.DML 튜닝_2친절한 SQL 튜닝 2020. 10. 3. 09:03
DML 튜닝 6.2 Direct Path I/O 활용 온라인 트랜잭션은 기준성 데이터, 특정 고객, 특정 상품, 최근 거래 등을 반복적으로 읽기 때문에 버퍼캐시가 성능 향상에 도움을 준다. 반면, 정보계 시스템(DW/OLAP 등)이나 배치 프로그램에서 사용하는 SQL은 주로 대량 데이터를 처리하기 때문에 버퍼캐시를 경유하는 I/O메커니즘이 오히려 성능을 떨어뜨릴 수 있다. 그래서 오라클은 버퍼캐시를 경유하지 않고 곧 바로 데이터 블록을 읽고 쓸 수 있는 Direct Path I/O 기능을 제공하는데, 지금부터 살펴보자. 6.2.1 Direct Path I/O 일반적인 블록 I/O는 DB 버퍼캐시를 경유한다. 즉, 읽고자 하는 블록을 먼저 버퍼캐시에서 찾아보고, 찾지 못할 때만 디스크에서 읽는다. 데이터를..
-
친절한 SQL 튜닝_6장.DML 튜닝_1친절한 SQL 튜닝 2020. 10. 3. 08:52
DML 튜닝 6.1. 기본 DML 튜닝 6.1.1 DML 성능에 영향을 미치는 요소 인덱스와 DML 성능 테이블에 레코드를 입력하면, 인덱스에도 입력해야 한다. 테이블은 Freelist를 통해 입력할 블록을 할당받지만, 인덱스는 정렬된 자료구조이므로 수직적 탐색을 통해 입력할 블록을 찾아야 한다. 인덱스에 입력하는 과정이 더 복잡하므로 DML 성능에 미치는 영향도 크다. DELETE 할 때도 마찬가지다. 테이블에서 레코드 하나를 삭제하면, 인덱스 레코드를 모두 찾아서 삭제해 줘야 한다. UPDATE 할 때는 변경된 컬럼을 참조하는 인덱스만 찾아서 변경해 주면 된다. 그 대신, 테이블에서 한 건 변경할 때마다 인덱스에는 두 개 오퍼레이션이 발생한다. 인덱스는 정렬된 자료구조이기 때문이다. 예를 들어, ‘A..
-
친절한 SQL 튜닝_5장.소트 튜닝_4친절한 SQL 튜닝 2020. 9. 20. 11:43
소트 튜닝 5.4 Sort Area를 적게 사용하도록 SQL 작성 5.4.1 소트 데이터 줄이기 특정 기간에 발생한 주문상품 목록을 파일로 내리고자 한다. 아래 두 SQL 중 어느 쪽이 Sort Area를 더 적게 사용할까? [1번] 1 2 3 4 SELECT LPAD(상품번호, 30) || LPAD(상품명, 30) || LPAD(고객ID, 30) || LPAD(고객명, 30) || TO_CHAR(주문일시, ‘yyyymmdd hh24:mi:ss’) FROM 주문상품 WHERE 주문일시 BETWEEN :START AND :END ORDER BY 상품번호 Colored by Color Scripter cs [2번] 1 2 3 4 5 6 7 SELECT LPAD(상품번호, 30) || LPAD(상품명, 30)..
-
[SQL 문제] 오라클 계층구조 쿼리의 이해RDS/SQL 문제 2020. 9. 19. 11:39
[문제]사원번호(empno), 성명(ename), 상사의 사원번호(mgr) 를 가진 테이블 emp가 있습니다. 원본 테이블을 이용하여 계층구조 결과 테이블을 완성하는 쿼리를 작성하세요. [원본 데이터] [결과 데이터] [문제 풀이]함수를 이용한 재귀 쿼리12345678910SELECT EMPNO , ENAME , MGR , LEVEL AS LV -- LEVEL은 계층 구조에서 단계를 나타내는 함수 , SUBSTR(SYS_CONNECT_BY_PATH(ENAME, '-'), 2) ENAMES -- SYS_CONNECT_BY_PATH는 계층 구조에서 경로를 나타내는 함수 , PRIOR ENAME AS MGR_ENAME -- PRIOR는 계층 구조에서 상위값을 나타내는 함수 FROM EMP START WITH ..
-
[Oracle] WITH 문RDS/Oracle 2020. 9. 19. 10:36
WITH문 이란?오라클9 이후 버전부터 사용이 가능하며, 이름을 정의한 SubQuery를 사용하는 구문입니다. WITH문 장점- 전제척인 가독성을 높이고, 재사용할 수 있는 장점이 있습니다.- 일반 Subquery는 서로 참조할 수 없지만, WITH문은 서로 참조가 가능합니다.- 한번만 사용되면 Inline View, 두번이상 사용되면 Materialize View로 처리합니다. WITH문 문법123456WITH [ALIAS명] AS ( /* SQL Body */)SELECT * FROM [ALIAS명];cs WITH문 예제1.사원명, 부서명 조회123456789101112131415161718/* Sub Query를 이용하는 방법 */SELECT * FROM ( SELECT T1.ENAME , T2.D..
-
친절한 SQL 튜닝_5장.소트 튜닝_3친절한 SQL 튜닝 2020. 9. 18. 12:17
소트 튜닝 5.3 인덱스를 이용한 소트 연산 생략 인덱스는 항상 키 컬럼 순으로 정렬된 상태를 유지한다. 이를 활용하면 SQL에 Order By 또는 Group By 절이 있어도 소트 연산을 생략할 수 있다. 여기에 Top N 쿼리 특성을 결합하면, 온라인 트랜잭션 처리 시스템에서 대량 데이터를 조회할 때 매우 빠른 응답 속도를 낼 수 있다. 특정 조건을 만족하는 최소값 또는 최대값도 빨리 찾을 수 있어 이력 데이터를 조회할 때 매우 유용하다. 5.3.1 Sort Order By 생략 인덱스 선두 컬럼을 『종목코드+ 거래일시』 순으로 구성하지 않으면, 아래 쿼리에서 소트 연산을 생략할 수 없다. 1 2 3 4 SELECT 거래일시, 체결건수, 체결수량, 거래대금 FROM 종목거래 WHERE 종목코드 = ..
-
친절한 SQL 튜닝_5장.소트 튜닝_2친절한 SQL 튜닝 2020. 9. 18. 12:09
소트 튜닝 5.2. 소트가 발생하지 않도록 SQL 작성 5.2.1 Union vs. Union All SQL에 Union을 사용하면 옵티마이저는 상단과 하단 두 집합 간 중복을 제거하려고 소트 작업을 수행한다. 반면, Union All은 중복을 확인하지 않고 두 집합을 단순히 결합하므로 소트 작업을 수행하지 않는다. 따라서 될 수 있으면 Union All을 사용해야 한다. 그런데 Union을 Union All로 변경하려다 자칫 결과 집합이 달라질 수 있으므로 주의해야 한다. Union 대신 Union All을 사용해도 되는지를 정확히 판단하려면 데이터 모델에 대한 이해와 집합적 사고가 필요하다. 그런 능력이 부족하면 알 수 없는 데이터 중복, 혹시 모를 데이터 중복을 우려해 중복 제거용 연산자를 불필요하..