1. 아키텍처 개관
가. 모델링의 정의
oracle에서는 디스크에 저장된 데이터 집합(datafile, redo log file, control file 등)을 데이터베이스라고 한다.
sga 공유 메모리 영역과 이를 액세스하는 프로세스 집합을 합쳐서 인스턴스라고 부른다.
기본적으로 하나의 인스턴스가 하나의 데이터베이스만 엑세스 하지만, rac 환경에서는 여러 인스턴스가 하나의 데이터베이스를 액세스 할 수 있다. 하나의 인스턴스가 여러 데이터베이스를 액세스 할 수는 없다.
기본은 인스턴스 ---(엑세스)---> 데이터베이스가 1:1인데
rac 환경에서는 인스턴스 ---(엑세스)--> 데이터베이스 (N:1)
하나의 인스턴스 ---(엑세스)---> 데이터베이스 3개 (X)
나. SQL Server 아키텍처
sql server는 하나의 인스턴스 당 최고 32,767개의 데이터베이스를 정의해 사용할 수 있다.
기본적으로 master, model, msdb.tempdb 등의 시스템 데이터베이스가 만들어지며, 여기에 사용자 데이터베이스를 추가로 생성하는 구조다.
데이터베이스 하나를 만들 때마다 주 데이터 파일과 트랜잭션 로그 파일이 하나씩 생기는데,
주 데이터 파일은 확장자가 mdf이고, 트랜잭션 로그 파일의 확장자는 ndf다.
* oracle과의 차이점
오라클은 하나의 인스턴스가 여러개의 DB를 접근할 수 없는데
SQL Server는 하나의 인스턴스가 여러개(3만2천개)의 DB를 접근 할 수 있음
복습 포인트
1. 인스턴스란?
2. oracle에서 한 인스턴스가 여러개의 데이터베이스에 엑세스 할 수 있다. (O, X)
3. SQL Server에서 데이터베이스 만들 때 생성되는 로그 파일 중 주데이터파일의 확장자는 ndf다(O, X)
4. SQL Server에서 데이터베이스 만들 때 생성되는 로그 파일 중 트랜잭션 로그 파일의 확장자는 ?
2. 프로세스
SQL Server는 쓰레드 기반 아키텍처이므로 프로세스 대신 쓰레드라는 표현을 써야한다.
SQL Server 뿐만 아니라 Oracle도 윈도우즈 버전에서는 쓰레드를 사용하지만, 프로세스와 일일이 구분하기 힘드니까 프로세스로 통칭, 역할은 비슷함
프로세스는 서버 프로세스와 백그라운드 프로세스 집합으로 나뉜다.
서버 프로세스는 전면에 나서 사용자가 던지는 각종 명령을 처리
백그라운드 프로세스는 뒤에서 주어지는 역할 수행
가. 서버 프로세스
사용자 프로세스와 통신 하면서 사용자의 명령 처리, sql server에서는 worker 쓰레드가 같은 역할을 담당
sql을 파싱하고 필요하면 최적화 수행, 커서(?)를 열어 sql을 실행하면서 블록을 읽고, 읽은 데이터를 정렬, 클라이언트가 요청한 결과집합을 만들어 네트워크를 전송 -> 전부 서버 프로세스가 함
나. 백그라운드 프로세스
스는 전
댓글