임시테이블과 테이블변수 SQLWorld Study Group - 최명환 -.

Slides:



Advertisements
Similar presentations
2008 년 11 월 20 일 실습.  실험제목 ◦ 데이터베이스 커넥션 풀  목표 ◦ 데이터베이스 커넥션 풀의 사용.
Advertisements

SQLWORLD.PE.KR 제 9 장 트랜잭션 INSIDE MICROSOFT SQL SERVER 2005: T-SQL PROGRAMMING.
오라클 백업과 복구.
PARK SUNGJIN Oracle 설치 PARK SUNGJIN
오라클 입문.
You YOungseok 데이터베이스 테이블 및 인덱스 You YOungseok.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
컴퓨터 프로그래밍 기초 [Final] 기말고사
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
12장 데이터 읽기 일관성과 락.
MySQL 및 Workbench 설치 데이터 베이스.
11 테이블 관리와 데이터 딕셔너리 데이터베이스 응용 프로젝트 개발 테이블 구조 변경 데이터 딕셔너리.
3장. 데이터베이스 구축의 전체 과정 미리 실습하기
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
5장. 참조 타입.
Root Filesystem Porting
3.2 SQL Server 설치 및 수행(계속) 시스템 데이터베이스 master
Root Filesystem Porting
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
19장. 트랜잭션과 락(LOCK) 트랜잭션이란? MySQL의 트랜잭션 락(LOCK) 쉽게 배우는 MySQL 5.x
컴퓨터응용과학부 Java Enterprize(DB) 제 15 주
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
KHS JDBC Programming 4 KHS
10장. 예외처리.
11장. 1차원 배열.
속성과 리스너 초기화 파라미터 외 파라미터에 대해 이해한다. 리스너를 생성해보고 사용에 대해 이해한다.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
You YoungSEok Oracle 설치 You YoungSEok
Grade Server Team14. Attention Seeker
웹 어플리케이션 보안 2016년 2학기 3. Mongo db.
DBMS 기능 DBMS 구성 요소 물리적 저장 구조
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
자바 5.0 프로그래밍.
CHAP 13. 방명록 만들기 실습.
1차 프로젝트 발표 GAME ENGINE 게임 공학과 이성진.
27장. 모듈화 프로그래밍.
메모리 관리 & 동적 할당.
제 10 장 의사결정이란 의사결정은 선택이다.
영상처리 실습 인공지능연구실.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
USN(Ubiquitous Sensor Network)
테이블 만들기 실습 목표 입력할 tableDB <실습1> SSMS에서 테이블 생성
2장. 변수와 타입.
Chapter 03. 관계 데이터베이스 설계.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
메모리 타입 분석을 통한 안전하고 효율적인 메모리 재사용
기말 프로젝트 계획 MVC 패턴 기반 웹 애플리케이션 개발 프로젝트명 : 팀명 : 팀원 :
14강. 세션 세션이란? 세션 문법 Lecturer Kim Myoung-Ho Nickname 블스
S-Work 2.0 DRM 신규 버전 설치 가이드 SOFTCAMP
Canary value 스택 가드(Stack Guard).
데이터 동적 할당 Collection class.
SQL Server 2000 세미나 View, SP &Trigger
10 데이터 조작어 데이터 조작어 데이터 입력 데이터 수정 데이터 삭제 MERGE 트랜잭션 관리 시퀀스.
10 데이터 조작어 데이터 조작어 데이터 입력 데이터 수정 데이터 삭제 MERGE 트랜잭션 관리 시퀀스.
제 18 장 (Oracle) 오라클에서 트랜잭션 지원
오라클 11g 보안.
.Net Web Application 2007 컴퓨터공학실험(Ⅰ)
14 뷰(View) 뷰의 개념 뷰 관리.
제 23 장 오라클에서 보안 기능.
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
10주 MariaDB에서 트랜잭션 지원 및 동시성 제어 기능
Mariadb 트랜잭션과 동시성 제어 장종원
07. DB 설계 명지대학교 ICT 융합대학 김정호.
CHAP 15. 데이터 스토리지.
14 뷰(View) 뷰의 개념 뷰 관리.
 6장. SQL 쿼리.
7 생성자 함수.
Presentation transcript:

임시테이블과 테이블변수 SQLWorld Study Group - 최명환 -

임시 저장소 임시 저장소 - 임시 테이블, 테이블 변수, 뷰, 인라인 테이블값 사용자 정의 함수, 파생 테이블, 공통 테이블식(CTE) 임시 저장의 필요성 - 성능상의 이슈 - 중간 결과의 보존 필요 - 프로그램 구현상 용이성 - 로직 해독의 편이 임시 저장 사례 - 일정 기준에 따라 집계된 데이터를 통한 재처리 쿼리 - 페이징 처리용 쿼리 - 중간 결과를 활용한 쿼리 - CUBE/ROLLUP의 재사용 - 계층구조(BOM) 구현 - 오류나 특정 로직에 의한 예외 처리용

임시 테이블과 테이블 변수 임시 테이블 - 임시로 데이터를 저장하기 위한 테이블 Object - CREATE TABLE “#table_name”으로 생성 - Tempdb에 저장(?) - OBJECT_ID로 확인 임시 테이블의 종류 - 로컬 임시 테이블 : # 사용 세션에 독립적 세션 연결이 끊기면 삭제 - 전역 임시 테이블 : ## 사용 모든 세션에서 사용 생성 세션이 끊기고 사용중인 세션 없을 시 삭제 테이블 변수 - 임시 테이블을 저장하기 위한 테이블 Variable - “DECLARE @table_name TABLE” 사용 - 메모리에 저장(?) - 확인 불가(?)

Tempdb로의 물리적 저장 저장 여부 저장 확인 • 임시 테이블과 테이블 변수 모두 - 현재 DB Context와 상관없이 tempdb에 생성 - 메모리 여유 있을 시 캐시에, 없을 시 tempdb에 저장 저장 확인 • 임시 테이블 - tempdb.dbo.sysobject에서 확인 • 테이블 변수 - tempdb.information_schema.tables에서 확인

참조범위? 가시성? SET CONTEXT_INFO? 참조 범위와 가시성 참조 수준 • 임시 테이블 - 생성된 세션에서만 사용 가능 - 생성된 세션에서 호출되는 하위 수준의 배치도 사용 가능 - 상위 수준에서는 사용 불가 - 세션 종료 시 자동 삭제 • 테이블 변수 - 생성된 세션에서만 사용 가능 - 상위/하위 수준 배치에서 접근 불가 - 세션 종료 시 해제 참조범위? 가시성? SET CONTEXT_INFO?

트랜잭션 컨텍스트 트랜잭션과 잠금 • 임시 테이블 - 외부 트랜잭션의 일부로 동작 - 롤백 지원, 롤포워드 지원 않음 - 로그 기록 - 잠금은 최소한으로 유지 • 테이블 변수 - 외부 트랜잭션으로 동작하지 않음 - 문장 단위 롤백 기능 지원 - 로그 기록 외부 트랜잭션? 문장 단위 롤백?

카디널리티? 재컴파일 임계값(RT)? KEEP PLAN? 통계 통계 정보 관리 및 성능 • 임시 테이블 - 분포 통계 정보 및 카디널리티 정보 관리 - 실행 계획 최적화, 성능에 유리 - 임시 테이블 통계로 인한 재컴파일 유발 - 통계 관리 비용, 재컴파일 비용 비교 • 테이블 변수 - 통계 정보 유지 하지 않음 - 비효율적 실행 계획 생성 - 재컴파일 유발 가능성 적음 카디널리티? 재컴파일 임계값(RT)? KEEP PLAN? 2000과 2005의 recompile수준?

임시 테이블 이름 확인(resolution)? 사용 제한 제한사항 • 다른 세션의 호출 - 임시 테이블, 테이블 변수 모두 불가 • 하위 배치 사용 - 임시 테이블만 가능 - Resolution으로 혼란 발생 • 인덱스 생성 - 임시 테이블은 모두 가능 - 테이블 변수는 PK, UK외에 인덱스 생성 불가 • 스키마 변경 - 임시 테이블은 생성 후 alter로 스키마 변경 가능 - 테이블 변수는 declare 이후 변경 불가 • insert~ exec 사용 - 임시 테이블 가능 - 테이블 변수도! 가능 임시 테이블 이름 확인(resolution)?

Tempdb 고려 사항 Tempdb 최적화 • Tempdb 최적화 필요성 - 다양한 저장 내역으로 병목 현상 발생 - tempdb에 대한 경합 발생 • 전용 디스크 어레이 사용 - 전용 디스크 어레이 고려(spindle 높임) - RAID 1+0 최적 • tempdb 증가에 따른 자동 증가 부하 발생 - 재시작시 적절한 기본 크기 미리 설정 • 재시작시 tempdb는 재생성 - tempdb의 모든 개체는 휘발성 - 영구 전역 임시 테이블 필요시 sp_procoption에서 설정 • 다수 사용자, 동시 세션에서의 경합 현상 해결 - CPU개수만큼 tempdb 데이터 파일 생성 - CPU당 스레드 생성으로 경합 감소