Professional SQL Server 2012 Internals and Troubleshooting 정리 SNI (SQL Server Network Interface) : 프로토콜 계층에 속하는 것으로 클라이언트와 서버간의 네트워크 커넥션을 성립시키는 것이다. 여기서 말하는 클라이언트는 단순히 사용자(사람 혹은 어플리케이션)가 아닌 다른 것을 포함한다. 그 이유는 SNI의 종류가 여러가지이며, 각각의 역할이 다르기 때문이다. 또한 우리가 어떤 방식으로 연결할지 직접적인 결정을 하는 것이 아니다. 단지 우리는 네트워크 구성을 할 뿐이다. SNI의 종류 1) Shared Memory: 로컬 컴퓨터에 있는 SQL server와 Client를 연결하는 역할이다. 설정 속성이 필요하지 않으며, 로컬 머신에서 항상 먼저 연결 시도 되는 부분이다. 2) TCP/IP: 가장 많이 사용하는 프로토콜, SQL Server에 IP, Port로 연결할 수 있도록 하는 것. 기본 포트는 TCP 1433이고, SQL Browser Service는 UDP 1434를 사용한다. 3) Named Pipes: 주로 복제시 사용하며, 해당 기능을 사용하기 위해서는 445 Port가 열려 있어야 한다. 해당 기능을 사용하기 위해서는 SQL Configuration Manager에서 Alias 기능을 설정해야 한다. 4) VIA(Virtual Interface Adapter): 고성능을 가능케 하는 어댑터로 사용을 위해서는 두 시스템 간의 전용 연결이 필요하다. 2012 버전에는 사용되지만 추후 버전에서는 지원하지 않을 예정 출처: Professional SQL Server 2012 Internals and Troubleshooting 7p
Professional SQL Server 2012 Internals and Troubleshooting 내용 정리 Update query의 실행과정은 Select와 유사하다. Select와 다른 부분부터 설명해본다. Update Query는 Access Methods 부분부터 확인하면 된다. Update라는 것은 이미 존재하고 있는 데이터를 변경하는 것이다. Access Methods에서 I/O Request가 아닌 디스크에 존재하는 데이터의 변경을 요청 해야 한다. 이 작업을 해주는 것이 바로 Transaction Manager이다. - Transaction Manager Transaction Manager는 Lock Manager와 Log Manager로 다시 나뉜다. Lock Manager는 동시성을 책임지며, 해당 부분에서는 다루지 않는다. Log Manager는 Access Methods가 수정을 요청하는 부분을 log로 만든다. 그리고 해당 로그를 Transaction Log에 쓴다. 이러한 과정을 WAL(Write-ahead Logging)이라고 한다. Transaction Log에 쓰는 것은 디스크에 쓰는 것이다. CPU, 메모리가 아닌 디!스!크! 이유는 바로 장애에 대비해서 휘발성을 띄고 있는 CPU와 메모리에 쓰지 않는 것이다. 데이터가 수정이 되는 것은 Transaction Log에 입력 된 것이 확실 시 되었을 경우에만 쓰인다. Transaction Log의 핵심적인 역할이 바로 이것이다. Transaction Log에 변경 데이터가 기록이 되었으면 Transaction Manager는 해당 내용을 Access Methods에 전달해준다. 그리고 Access Methods는 완료된 해당사항을 Buffer Manager에게 전달한다. - Buffer Manager 캐시에 가지고 있는 페이지는 수정된 데이터를 가지고 있어야한다...
댓글
댓글 쓰기