데이터베이스

Total 205
Today 0
profile_image
슈퍼아이피
19-02-24 11:25 0개 568회
MSSQL
SQL Server 설정

처음에 SQL Server를 설치 한 후에 설정해야 하는 값들을 정리해봤습니다.설정 이외에 왜 설정을 하는지 간단한 이유를 기입하였습니다.

버전은 SQL Server STD 2008R2 위주로 작성되었으며,(제가 가장 많이써서...) 혹시 문제가 있거나 틀린 부분은 댓글을 남겨주세요. (_ _)

설정하는 방법이 아닌 왜 설정해야 하는가를 위주로 포스트를 작성 하였습니다.




목차 

Ⅰ. SYSTEM 설정

1. 하이퍼스레딩

2. 전원 계획 사용옵션 

3. 프로세서 사용계획

4. Lock Pages In Memory

5. RAID 구성

6. 바이러스 백신 프로그램 관리


Ⅱ. SQL Server 설정

1. 포트설정

2. 시작 계정 관리

3. Flag 설정

4. 구성관리자 설정

5. Memory 설정

6. 계정 설정

7. TempDB 설정

8. SQL Error Logs 설정

9. 데이터베이스 파일 설정



본론으로 들어가보겠습니다. 여기저기서 그림을 퍼온게 많습니다. 어디서 많이 보셨던 그림 일 수도 있습니다.





Ⅰ. SYSTEM 설정




1. 하이퍼스레딩

Hyper Threading은 가장 흔히 알듯이 CPU가 2배로 보입니다.

아래의 그림은 Windows 작업 관리자에서 보이는 CPU입니다. 하이퍼스레딩을 켤 경우 이 CPU의 코어 개수가 2배로 보입니다. 

아래의 초록색 꼬불꼬불 선이 나타나 있는 것들이 각각의 코어입니다. 현재 이 PC에는 8개의 코어가 있습니다. (하이퍼스레딩 안켰으므로)

215F4C3B558A107F06



하이퍼스레딩을 가장쉽게 이해 할수 있는 것이 아래의 그림입니다. 아래의 그림 중에 보면 우측에 그림에 그 설명이 매우 잘 나옵니다.

우측 그림에서 빨간색 선을 기준으로 첫번째 부터 싱글코어,듀얼코어,하이퍼스레딩 입니다. 

264AA03C558A103625

(출처 : http://smsinfo.tistory.com/m/post/514)


하이퍼 스레딩은 CPU가 마치 2개 인것 처럼 놀고 있는 부분을 1개의 코어가 처리하는 것으로써 배타적 작업이 많을 때에 유리 합니다.

위의 그림에서 1개의 작은 네모칸이 1개의 연산을 할 수 있는 곳이라고 할때 여러개의 연산이 가능 한 부분중에 항상 모든 곳이 작업을 

하고 있는 것은 아니므로, 놀고 있는 곳을 사용 함으로써 마치 2개의 코어가 일하는 것 처럼 보이는 것 입니다.


보통 (작은)OLTP 환경 즉, 게임 같은 서버에서는 하이퍼스레딩을 켜주면 성능 향상에 효과를 볼 수 있습니다.

하지만 큰 대용량 작업이 많은 OLAP 같은 환경에서는 CPU의 코어를 나눠서 파워를 분산함으로써 더욱 처리가 늦어 질 수 있습니다.

하여, 결론적으로 작은 OLTP환경에서는 사용을 하며, OLAP등 (DW,로그)등의 환경에서는 사용을 하지 않습니다.





2. 전원계획 사용옵션

설정법 : 실행 -> 전원 옵션


224C2F47558A12AD03

전원계획은 설정에 따라서 그 파워의 차이로 인하여, 성능에 영행을 줄 수 있습니다.

총 3가지 형태가 있는데, 균형조정/절전/고성능이 있습니다. 무조건 SQL Server가 있는 서버에서는 고성능을 선택해야지 100%의 성능을

발휘 합니다. 균형조정과 절전모드는 최소 프로세스 상태이므로, 5%의 파워를 고성능은 100%의 파워를 냅니다. 

결론적으로 고성능 옵션을 사용하는 것이 바람직 합니다.


물론 전기세가 증가하지만.. 성능을 포기하고 전기료를 아낄분은 없을것이라 생각 됩니다.


참조 사이트 

㉠전원 계획 사용옵션에 따른 성능 차이 테스트 링크

https://sqlserverperformance.wordpress.com/2010/09/28/windows-power-plans-and-cpu-performance/




3. 프로세서 사용계획

설정법 : 제어판 -> 성능 정보 및 도구 -> 시각효과 조정 -> 고급탭 


252CD343558A13820B


프로세서 사용계획은 2가지로 성능이 가능 합니다. 프로그램/백그라운드 서비스로 설정이 가능한데, 보통 SQL Server만 사용하는 서버에서는 

백그라운드 서비스를 사용합니다. 그 이유를 대부분이 SQL Server는 Service에 등록되어 백단에서 움직이므로, 그렇게 설정한다고 알고 있는데

잘못된 내용입니다.


백그라운드 서비스로 설정하는 것은 맞으나, 이렇게 설정하는 이유는 Context Switch 를 최소화 시키기 위해서 입니다. 결론적으로 백그라운드 

서비스로 설정하는 것이 바람직 합니다. Context Swith의 내용 및 자세한 사항은 아래의 링크를 참조하시면 좋을 듯 합니다.


참조 사이트

㉠ 백그라운드 서비스 관련 링크

http://blogs.technet.com/b/sankim/archive/2009/06/10/windows-vs.aspx





4. Lock Pages In Memory 설정

설정법 : 실행 -> gpedit.msc -> Windows 설정 -> 보안설정 -> 로컬정책 -> 메모리에 페이지 잠금


Lock Pages In Memory 는 매우 중요한 부분 입니다. 이것은 꼭 설정이 필요 합니다.

26463A3D558A16F81E


메모리에 페이지 잠금 속성 더블 클릭

263D093E558A17A22D


사용자 또는 그룹추가 클릭하여, SQL Server 시작 계정 등록

257C6144558A17D10D


이것을 설정하는 가장 큰 이유는 가상메모리 사용을 방지하기 위함인데, 가상 메모리란 메모리가 부족하여 디스크를 메모리 처럼 사용 하는 것을 말 합니다. 

디스크를 메모리 처럼 사용하다 보니, 그 성능이 매우 느려져서 성능 저하를 가져 오는 것 입니다. 메모리를 디스크 처럼 사용 하는 것을 Hard faults라고 하며,

Perfmon항목에서 Pages/sec를 확인하여, 이 수치가 높다면 Memory 항목에 Page faults/sec(Hard faults)를 유심히 봐야 합니다. 

21663D33558A19011C


Lock Pages In Memory 를 설정하지 않으면 다음과 같은 문제가 발생 할 수 있습니다.

1. SQL Server 성능이 갑자기 저하됨

2. SQL Server 실행하는 컴퓨터가 잠시 응답하지 않음

3. SQL Server 응용 프로그램에 대한 Time out 발생

4. 시스템에서 응용 프로그램을 사용 할 때 문제가 발생 함


참조 사이트

㉠ Lock Pages in Memory 설정 방법 및 설정하지 않을시 문제점

http://cclassic2.cafe24.com/?mid=SQL_Tip&search_target=tag&search_keyword=%ED%8E%98%EC%9D%B4%EC%A7%80&page=1&document_srl=8324

㉡ 가상 메모리 설명

http://egloos.zum.com/sweeper/v/2988689

㉢ 메모리 관리 및 Perfmon 보는 방법

http://blog.daum.net/question0921/1031



5. RIAD 

레이드는 SE 분들이 설정을 하시며 DBA는 DB서버에서 최적의 성능을 발휘할 레이드를 고려해야 합니다. 주로 게임환경에서 사용하는 레이드는 1+0 입니다. 

게임에서 가장 많이 사용하며, 안정성과 성능을 모두 확보할 수 있습니다. 우선 1+0을 이해하기 위해서는 레이드 0과 1을 알아야 합니다.


㉠레이드 0 

레이드 0의 경우 빠른 속도가 강점입니다. 레이드 0의 경우 데이터를 스트라이핑을 통해 DISK 4개에 나누어 뿌리는 방식으로 데이터를 저장 하므로, 그 처리 속도가

매우 빠릅니다. 하지만 DISK 중에 1개라도 깨진다면 데이터가 모두 손실됩니다. (중간에 이빨이 빠진것으로 이해하면 좋을 듯 합니다.)

25135037558A1A9225

(출처 : http://www.acnc.com/raidedu/0_1)


㉡ 레이드 1

레이드 1의 경우 0과 다르게 안정성이 뛰어납니다. 레이드 1은 데이터를 미러링하여, 동시에 저장하기 때문에 1개의 DISK가 깨져도 복구가 가능합니다. 

하지만 250GB씩 4장의 DISK를 꽂아서 1TB로 사용할 경우 미러링을 위해 500GB밖에 사용 할 수 없습니다.

 또한 레이드 1을 구성하기 위해서는 최소 2장의 DISK가 필요 합니다. 

225D4F4F558A1AFF04

(출처 : http://www.acnc.com/raidedu/0_1)


㉢ 레이드 1+0 

레이드 1+0의 경우 레이드 0으로 묶여진 레이드를 다시 레이드 1로 묶는 것을 말 합니다. 이렇게 함으로써 스트라이핑으로 데이터를 저장 함과 동시에

미러링을 하므로, 그 안정성과 성능의 이점을 모두 얻을 수 있습니다. 

21799934558A1C8030


(출처 : http://cappleblog.co.kr/133)


㉣ 레이드 0+1

레이드 0+1의 경우 위의 1+0과 반대로 생각하면 됩니다. 레이드 1로 묶여진 것을 다시 레이드 0으로 묶은 것 입니다. 위와 마찬가지로 속도 및 안정성을

모두 확보 가능 하지만 이것이 깨졌을때 그 문제점이 나타므로, 사용하지 않습니다.

2466A44E558A1B8F37

(출처 : http://cappleblog.co.kr/133)



* 레이드 1 + 0을 사용하는 이유 

1. 0 + 1로 묶은 레이드에서 디스크가 깨졌다고 가정 할때 위의 그림에서 첫번째 레이드의 A1 데이터가 손상 된다면, 전 데이터를 사용 불가능 합니다. 

하지만 반대로 1 + 0의 경우 A1의 데이터가 있는 디스크가 깨져도 옆에 그대로 미러링 된 데이터가 있으므로, 지장이 없습니다.


2. 복구시에도 그 차이가 분명히 드러납니다. 만약에 위와 마찬가지로 첫번쨰 레이드가 깨졌다고 가정 할 경우 0 + 1의 경우 데이터를 정렬 및 재 구성을

위해서 전부 복원 해야 하지만, 1 + 0 의 경우 아직 살아있는 옆의 미러링된 디스크에서 데이터를 복사하여 복원 하므로, 처리 시간 및 리소스에 비용이

현저하게 줄어 듭니다.


이밖에 레이드는 레이드5 등도 자주 사용하지만 게임회사인 저는 1 + 0을 거이 대부분 사용하였기에 나머지 자료는 링크를 참조 부탁드립니다.


참조 사이트

㉠ 레이드 동작 플래쉬

http://www.acnc.com/raidedu/0_1

㉡ 레이드 1 + 0과 0 + 1의 차이점

http://lab.gamecodi.com/board/zboard.php?id=GAMECODILAB_Lecture&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=103

㉢ 레이드 설명 

http://cappleblog.co.kr/133




6. 바이러스 백신 프로그램 관리

바이러스 및 백신 프로그램은 주로 일 단위, 주단위로 검사를 수행 합니다. 하지만 데이터베이스의 데이터파일 및 백업 파일등은 그 검사 대상에서 제외되어야 합니다.

만약 MDF , NDF , LDF 파일등이 있는 폴더를 검사하게 된다면, 검사 시 대기현상이 발생하거나 성능에 영향을 줄 수 있습니다. 


버전별로 정리된 바이러스 백신 관련 설정은 MSDN에 설정을 참조하시길 바랍니다.


참조 사이트

㉠ 백신 프로그램 관리

https://support.microsoft.com/en-us/kb/309422/ko








Ⅱ. SQL Server 설정



1. 포트 설정

설정 법 : 실행 -> SQL Server 구성 관리자 -> SQL Server 네트워크 구성 -> (인스턴스명)에 대한 프로토콜 -> TCP/IP -> IP주소 탭 -> TCP포트 부분 변경


2434AB3F558A21482C

포트를 설정하는 가장 큰 이유는 보안의 문제가 나타나기 때문입니다. 보통 SQL Server를 처음 설정 했을 경우 기본 포트는 1433입니다. 하지만 이 1433포트를 그대로

사용 하는 경우는 극히 드문 경우 입니다. 그 이유는 1433 포트는 알려진 포트이므로, 공격의 대상이 됩니다. 이러한 공격의 한 종유로 브루트 포스(Brute Force Attack)공격이 있습니다.

이것은 무차별 적으로 암호를 변경해가며, sa 계정으로 1433 포트로 접근을 계속해서 시도하는 공격 입니다. 이로 인해 차후에 나오겠지만 sa 계정도 사용하지 않습니다.


이러한 공격이 초단위로 수백 ~ 수천번씩 공격하기 때문에 부하가 심할 수 밖에 없습니다. SQL Server의 포트는 기본 1433이 아닌 다른 포트로 변경 하며, 변경 후 에 SQL Server를 

재시작 해야 합니다.


참고 자료

㉠ 포트 관련 공격

http://ozit.tistory.com/35





2. 시작 계정 관리

설정 법(계정 생성) : 실행 -> 컴퓨터 관리 -> 로컬 사용자 및 그룹 -> 사용자 폴더 우클릭 -> 새 사용자

 

컴퓨터 관리로 접속하여, 로컬 사용자 및 그룹을 탭으로 갑니다.

2279BE3D558B4F7003


로컬 사용자 및 그룹 탭에 사용자 폴더를 우클릭하여, 새 사용자를 추가합니다.

22573E45558B553106


새 사용자는 SQL Server 시작 계정으로만 사용하므로, 네이밍을 SQL 또는 SQL Server등 분별하기 쉽게 주는게 좋습니다.

27748244558B559B13


생성된 계정을 우클릭하여 속성을 누르고, 속성에서 소슥그룹탭에 있는 모든 소슥그룹을 제거합니다. 기본적으로 Users로 소속그룹이 되어 있습니다.

소속 그룹을 제거하는 이유는 Users 소속그룹에 속해 있을시 응용프로그램 실행, 로컬 및 네티워크 프린터 사용 , 컴퓨터 잠금과 같은 일반적인 작업을 수행 할 수 있기

떄문 입니다. 하여, SQL Server 만 수행하기에 아무런 소속그룹도 필요하지 않습니다. 


소속스룹에 따른 권한 관련 링크

https://technet.microsoft.com/ko-kr/library/cc771990.aspx

2402943E558B55E819



설정 법(시작 계정 설정) 

SQL Server 구성관리자 -> SQL Server 서비스탭 클릭 -> SQL Server(인스턴스명) 우클릭 -> 속성 클릭 -> 로그온탭에서 계정 변경 (생성한 계정으로)


SQL Server의 구성관리자를 실행하여 SQL Server 서비스 탭을 클릭하면 다음과 같이 서비스들이 나옵니다. 여기서 SQL Server (인스턴스명) 을 우클릭하여 속성을 들어갑니다.

2563383F558B56EB08


계정을 변경하고, 적용 후 SQL Server를 재시작 합니다.

결론적으로 생성된 아무 권한이 없는 오직 SQL Server만 실행하는 계정을 이용해 SQL Server를 구동해야 합니다.

222F574C558B574738





3. Flag 설정

설정법 : SQL Server 구성관리자 접속 -> SQL Ser

추천 0 비추천 0

댓글목록

등록된 댓글이 없습니다.