목록DB/SQL 튜닝 (3)
YataNox
1.3 데이터 저장 구조 및 I/O 메커니즘1.3.1 SQL이 느린 이유대부분은 I/O 문제이다. I/O란 입출력을 뜻하는 말로 입출력 동안에는 프로세스가 잠을 잔다.프로세스가 일하지 않고 자는 이유는 여러가지가 있지만 가장 대표적인 이유는 I/O다. 프로세스는 '실행 중인 프로그램'을 나타내며 아래와 같은 생명주기를 갖는다.생성 이후로 종료 전까지 준비와 실행, 대기 상태를 반복한다. 실행 중인 프로세스는 수시로 인터럽트로 인해 준비 상태로 전환 했다가 다시 실행 상태로 전환되고는 한다. 여러 프로세스가 한 CPU를 공유할 수는 있지만 특정 순간에는 한 프로세스만 사용할 수 있기 때문에 해당 메커니즘이 필요하다. 인터럽트가 없었던, 열심히 일하던 프로세스도 디스크에서 데이터를 잃어야 할 땐 CPU를 O..
1.2 SQL 공유 및 재사용소프트 파싱과 하드 파싱의 차이점을 알아보고, 동시성이 높은 온라인 트랙잭션 처리 시스템에서 바인드 변수가 왜 중요한지 이해해보자.1.2.1 소프트 파싱 vs 하드 파싱SQL 파싱, 최적화, 로우 소스 코드 생성 과정을 거쳐 생성한 내부 프로시저를 반복 재사용할 수 있게 캐싱해 두는 메모리 공간을 라이브러리 캐시라고 한다. (SGA 구성요소) 사용자가 SQL문을 전달하면 DBMS는 SQL을 파싱 후 해당 SQL 라이브러리 캐시에 존재하는 지 확인한다. 캐시를 찾으면 바로 실행 단계로 넘어가지만, 찾지 못하면 최적한 단계를 거친다. 캐시를 찾아 바로 실행하는 것을 소프트 파싱찾는 데 실패해 최적화 단계를 거치는 것을 하드 파싱이라고 한다. 1.2.2 바인드 변수의 중요성* 이름..
1.1 SQL 파싱과 최적화1.1.1 구조적, 집합적, 선언적 질의 언어SQL은 Structured Query Language 의 줄임말이다. 그대로 구조적 질의 언어라 한다.SQL is designed for a specific purpose : to query data contained in a relational database.SQL is set-based, declarative query language, not an imperative language such as C or BASIC.오라클 PL/SQL, SQL Server T-SQL 처럼 절차적인 프로그래밍 기능을 구현 할 수 있는 확장 언어도 제공하지만, SQL은 기본적으로 구조적이고, 집합적이며, 선언적인 질의 언어다. 그러나 그 결과..