Database/MS-SQL

전문가 과정 2일차

99iberty 2016. 10. 11. 17:09

 

3 lab3 audit

 

  • Server audit 레벨 (demo 8)

    • 로그인

    • Configuration 변경

  • Database audit 레벨 (demo 9)

    • DML

    • 특정 스키마가 변경됐을 때

 

3lab4 encryption

TDE -> EE여야만 한다.

데이터를 encryption된 상태로 disk에 저장.

메모리에 올라가서 사용자가 조회 중 일때는 decryption된 상태.

TDE를 적용하는 시점의 부하를 제외하고는 부하가 없다.

 

 

4

Sql 서버는 tcp/ip, named pipe, 로컬에서는 share memory 프로토콜 통해 들어온다 요청이.

  • Sqlos 처리 범위

클라이언트가 접속을 해서 쿼리를 수행한다 가정.

이 쿼리를 수행하기 위한 스레드가 필요.

스케줄링 : 쿼리에 스레드들을 할당해서 어떤 순서로 할지 등등을 정의.

 

  1. Client -> connection이 맺어지면 session이 생긴다.

  2. 그 세션에서는 request를 수행한다

  3. Requestworker가 할당된다.

  4. request에는 여러 task가 있다. (하나의 쿼리에 여러 task가 생길 수 있다.)

  5. 해당 taskworker가 처리한다.

  6. 처음에 worker를 할당 받으면 thread1은 스케줄의 runnable 큐에 들어간다.

    스케줄은 여러 개가 있을 수 있다.

  7. 실제 한 스케줄러에서 할당된 cpu는 하나뿐이다. 그때 windows에 그 스레드를 보내는 것.

  8. 4개의 cpu(core단위)가 있는 sql서버에서는 4개의 스케줄러가 있는 것.

  9. 플러스알파가 있는데 running 큐에 안들어가고 스케줄러에 포함되지 않고 바로 os에 올라갈 수 있다. 그걸 Preemptive라고 한다. 그건 sql의 스케줄러의 관장을 받지 않고 바로 os로 올려 버린다.

  10. Sql의 스케줄러의 관장을 받는 건 non-preemptive라고 한다.

  11. 해당 스레드가 수행하다가 디스크를 갔다와야 하면 해당 cost는 비싸기 때문에 IO큐에 들어가고 IO가 끝나면 다시 runnable queue의 맨 끝으로 간다. 이걸 yielding 이라고 한다. (양보한다는 뜻)

  12. Running state는 한 core당 하나씩밖에 동시에 있을 수가 없다.

 

 

Why NUMA?

예전에는 cpu가 모두 메모리를 공유했다.

Numacpu에 메모리가 각각 할당되어 있는거고, 다른 cpu에 할당된 메모리는 foreign memory라고 함.

sql에서 DM의 가장 상위 개념은 node이다.

select * from sys.dm_os_nodes

 

select * from sys.dm_os_memory_nodes

 

 

signal wait time vs wait time

runnable 큐에서 대기하는 timesignal wait time

전체 대기 시간이 wait time

순수 리소스에서 대기하는 timewait time – signal wait time

 

 

Latch

  • Latch_*

    • Tempdb 때문에 자주 발생… (설명은 잘 못알아듣겠다)

    • Datainsert를 할 때 인덱스를 추가한다. 인덱스는 b-tree 타입이다 보니, 젤 마지막 페이지에 계속 insert가 일어나고 split이 발생하고 이럴 거다.

  • Pagelatch_*

  • Pageiolatch_*

    • 디스크에서 읽어올 때 pageiolatch 발생함.

 

 

Lazy writer : 물리메모리가 부족한 상태다. 인터널 메모리(sql레벨에서)가 부족한 상태다.

많이 사용하지 않는 페이지들을 내려버리는 역할을 함.

Lazy writer가 많이 돈다는 건 메모리 사용이 효율적이지 않다라는 것.

 

Buffer pool trimming : sql서버가 갖고 있는 메모리가 외부에서 요청에 의해 뺏기는 것

락 페이지 메모리로 방지할 수 있음.


 


'Database > MS-SQL' 카테고리의 다른 글

sql전문가 과정 3일차  (0) 2016.10.12
문제상황시 유용한 sql쿼리들  (0) 2016.10.12
sqlserver stress test  (0) 2016.10.11
전문가 과정 1일차  (0) 2016.10.10
mssql 2일차 교육  (0) 2016.09.21