SQL2008 #6231B Maintaining a Microsoft SQL Server 2008 R2 Database
mssql강사 - 김문주
moonikan@gmail.com
Pa$$w0rd
121.160.55.240
Module1.
서비스팩2부터 안정화된 버전을 사용
새 제품은 보통 3년주기
1-4
total cost of ownership (tco) - 회사에서 최적화되어있다
스펙을 어떻게 잡을까?
스펙비교사이트-http://www.tpc.org
1-8
mssql - instance.. (db, db..)인스턴스데이터웨어
oracle - instance1(db1)
1-10
express(공짜디비) - cpu1개만 사용,데이터4gb만 지원
sql server edition
SQL Azure(클라우드 서비스)
패러럴데이터웨어하우스 =
SMP시스템 - 머신은 하나, CPU가 여러장
MPP시스템 - 물리적으로 서버가 여러대 , 논리적으로 한개로 묶어서 사용
MS-SQL2012에서 지원예정(?)
MASTER / SLAVE1,2,3
20%트랜잭션 / 80%조회
1-12
6.5까지 SYBASE
7.0이후 MSSQL
1-15
SQL에 인증하는 방법2가지
윈도우즈인증
SQL서버인증
1-16
client -> server 에 접근하기위해선 endpoints를 통한다
sql server native access component(snac) -> oledb,odbc를 포함해서 snac으로 관리 sql2005버전부터..
왜이렇게했나?
mdac의 제한이나 문제점을 해결하기우해 snac을 만듬
mdac는? 운영체제의 컴포넌트로 제공
Unix - Process
Windows-Thread(Process - Subprocess)
1-24
Books Online-기본적인 sql서버의 레퍼런스
1-31
tcp/ip 포트번호를 바꿔야한다. (1433은 알려짐)
-MSCS(MS 클러스터링) 사용율높이기 (Shared Nothing)
*분산관리구조
SVR1 SVR2 MailSVR1
Active Standby(Mail Standby) |
| | |
SAN Storage --------------------
-ORACLE은 (Shared All)
*중앙집중 관리구조
A A A A
| | | |
-----------------
|
Storage
Module2.
2-3
CPU 60~65% ->업그레이드 고려
DBMS는 느린 디스크의 데이터를 메모리에 캐쉬하여서 사용하고
한정적인 메모리의 데이터를 다시 디스크에 내려보내 저장시키는 프로그램
쿼리를 왜 캐쉬에 캐싱 시켜서 사용하는가?
select * from employees; (sql명령어) -> 0,1 기계어(컴파일 = db에선 파싱)
A와 B가 같은 명령을 사용했을 때 재활용한다.
2-4
Storage Engine - 트랜잭션 , 메모리버퍼 관리
2-6
Windows uses preemptive - 윈도우는 선점형 스케줄
CPU affinity mask(cpu친밀도) - 재시작없이 cpu를 교체할수있다
Tasks waiting on a resource are moved to a waiting list
리소스가 사용중이면 웨이팅 리스트에서 대기한다.
2-8
직렬화:(CPU:1) OLTP - 보통 사용
병렬화:(CPU 여러개) DSS
병렬처리는 오직 하나의 무거운 작업에서만 나눠써라
*쿼리날릴때 병렬도 지정 MAXDOP query hint
2-10
32비트에서 4GB 메모리 사용 -> 인스턴스 - 우클릭 - 속성 - 메모리 - AWE를 사용할 경우 2GB메모리는 커널 / 2GB는 MS-SQL이 사용
2-12
메모리<->디스크 쓸 때 8KB 페이지 단위(MSSQL I/O의 가장 작은 단위 page)
The Data Cache implements a least recently used (LRU) algorithm
최근에 사용되는 데이터만 캐싱 하는 알고리즘 LRU
체크포인트가 발생하면 디스크에 내려 씀
Lazy Writer가 내려 써주는 녀석
2-14
physical read
data file into the Buffer cache 데이터에서 메모리에 쓸때 피지컬 i/o발생
logical read
메모리에 데이터가 캐싱되어있을때는 논리i/o 발생
인스턴스 - 속성 - 메모리에서 sqlserver 메모리 max size 설정
데이터가 캐싱될때 늘어난다..
2-18
resource requirements를 평가하란 어렵다. 따라서 시스템을 실환경상태로 테스트해보고, 운영이 된다면 성장추이를 미리 예측해야한다.
*성장추이를 예측하여서 그래프화하여야 한다.
2-20
CPU사용률은 대략 30% 밑으로 유지를 해야한다.
많은 새로운 시스템이 NUMA아키텍처를 사용한다.
NUMA? CPU에 사용할 메모리를 미리할당
2-22
64bit
16g메모리 할당 -> o/s:2g db:8g(일단 절반정도 주고..늘려보자)
*늘렸을때의 성능 모니터링은 관리도구 안정성 및 성능도구에서 수집기로 확인
2-25
HBA카드(바깥쪽) = RAID CONTROLLER(안쪽)
PCI슬롯 직접연결= DAS VS SAN(DAS의 한정적인 슬롯을 커버하기위해 네트워크 광연결을 시작)
2-27
SQLIOSIM / SQLIO
따로 다운로드받아 사용하는 툴 , I/O확인량
-OLTP; 데이터가 들어오고 나가는 시스템(random read)
색인(index)을 만들어놓고 찾는 것
-OLAP; 대용량의 데이터를 분석하는 시스템(sequential read)
처음부터 쭉(sequentiol) 찾는 것
2-29
*saturation point 포화점
성능에 부하를 주면서 최대 포화점까지 확인하라..(이후로는 성능이 떨어짐)
SQLIOSIM/SQLIO 두개로 I/O사용
Module3. mssql 설치
3-7
도메인 컨트롤러(인증서버)에는 sql을 설치하지말라
AD(액티브디렉토리)=도메인컨트롤러
사용자 -> SVR1 인증
-> SVR2 인증
=> 도메인컨트롤러가 인증을 여러번 받는 것을 해소해주는데 그 위에는 설치하지말라는 것
3-9
.NET 프레임웍은 재부팅을 자주요하기 때문에 주의하여 설치하라
3-10
tempdb / transaction logs 는 빠른 디스크에 저장하라 ->raid5 는 x(writing할 때 나눠서 넣기 때문에) , raid1 추천
3-12
도메인 계정으로 관리하는 것이 좋다
3-16
sql server 설치
1번째 new install 선택
3번째 failover (clustering)
.net 프레임웍 3.5 SP1이상이 설치되어 있어야한다.
다음 다음 누르고..위 화면 정도로 체크를 해주자
이미 기본 db가 설치되어 있어서(MSSQLSERVER) 디폴트 말고 네임드로 하나 더 추가해준다..
authority \ system으로 설치한다.
가장 강력한 권한을 갖은 SA아이디 패스워드를 지정하고, 현재 사용자를 지정한다.(ADD CurrentUser)
이렇게 설치가 된단다.. next next
설치가 끝나면 인스턴스가 하나 더 추가 될 것이다 (instance aware)
3-21
인스톨 로그는 %programfiles%\Microsoft SQL Server\100\Setup Bootstrap\Log 밑에 남는단다
3-25
in-place upgrade
시스템파일 몇가지만 추가하는 쉽고 자동화된 업그레이드
side-by-side upgrade
아예 새로운 버전에 설치하고 테스트하는
3-27
무인설치 , 업그레이드









