SQL Server 818

메모리 최적화 테이블변수와 701 오류 (loop 사용으로 인한 메모리 부족 오류)

메모리 최적화 테이블변수와 701 오류 (loop 사용으로 인한 메모리 부족 오류) · Version : SQL Server 2014, 2016 메모리 최적화 테이블 변수에서 루프를 사용할 때 아래와 같은 메모리 부족 오류가 발생할 수 있다. 왜 이런 오류가 발생하는 것일까? Msg 701, Level 17, State 103, Line 11 There is insufficient system memory in resource pool ‘default’ to run this query. 이 오류는 메모리 최적화 테이블에서 의도된 디자인으로 발생한 오류이다. 메모리 액세스에 최적화된 테이블 변수에 관한 문서를 찾아보면 다음과 같은 설명이 있다. (https://technet.microsoft.com/ko-..

메모리 최적화 테이블에서 해시 인덱스 사용시 버킷 카운트의 중요성

메모리 최적화 테이블에서 해시 인덱스 사용시 버킷 카운트의 중요성 · Version : SQL Server 2014, 2016 SQL Server Memory optimized table(이하 메모리 최적화 테이블)은 기본적으로 메인 메모리에 상주한다. 메모리 최적화 테이블의 데이터는은 메모리에 상주하며 읽고 쓴다. 내구성의 목적으로 보조 복사본이 디스크에서 유지 관리 된다. 메모리 액세스에 최적화된 테이블의 데이터는 데이터베이스 복구중(또는 서버 재시작)에만 디스크에서 읽는다. 아래 스크립트는 메모리 최적화 테이블을 생성한다. CREATE TYPE [Sales].[SalesOrderDetailType_inmem] AS TABLE( [OrderQty] [smallint] NOT NULL, [Product..

인덱스 리빌드시 병렬로 실행계획이 생성되지 않는 이유

인덱스 리빌드시 병렬로 실행계획이 생성되지 않는 이유 · Version : SQL Server SQL Server에서 인덱스를 리빌드 할때 병렬이 아닌 싱글로 실행되는 경우가 있다. 실행 계획을 살펴보면 현재 어떤 방식으로 실행되었는지에 대한 내용을 확인할 수있으며 경우에 따라 병렬로 실행되지 않는 원인을 나타내기도 한다. 아래 예시는 실행계획에 표시하는 병렬로 처리하지 못한 이유를 나타낸다. But in this case, the query plan just say “CouldNotGenerateValidParallelPlan” like . 인덱스 작업과 함께 병렬 처리가 작동하는 방식에 대해서는 아래 링크를 참고 한다· Configure Parallel Index Operations : https:/..

Azure SQL Server AlwaysOn Listener 연결 오류 (서브넷 구성 오류)

Azure SQL Server AlwaysOn Listener 연결 오류 (서브넷 구성 오류) · Version : SQL Server on Azure SQL Server Azure 환경에서 리스너 IP에 대한 서브넷 마스크가 잘못 구성된 경우 Azure의 AlwaysOn Listener에 연결할 수 없다는 오류가 발생한다. “A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is c..

SQL Server R 설치

SQL Server R 설치· Version : SQL Server 2016, SQL Server R(In-Database) Microsoft R 관련글은 MSDN을 참고하여 번역 및 의역을 하였으며 전체 적인 구성은 MSDN을 준수하고 있으나 이해를 돕기 위해 추가 설명이 있음을 알려 드립니다. SQL Server R은 SQL Server 2016 부터 설치가 가능하다. 설치 마법사를 사용하여 R Service(In-Database)에 관련된 모든 구성요소를 설치 할 수 있다. 설치가 완료되면 R 서비스를 사용하기 위해서는 몇 가지 추가 단계가 필요하다. SQL Server 2016 설치 파일을 추가하고 설치 프로그램을 실행한다. [새 SQL Server 독립 실행형 설치 또는 기존 설치에 기능 추가]..

SQL Server R 소개

SQL Server R 소개· Version : SQL Server 2016 Microsoft R 관련글은 MSDN을 참고하여 번역 및 의역을 하였으며 전체 적인 구성은 MSDN을 준수하고 있으나 이해를 돕기 위해 추가 설명이 있음을 알려 드립니다. R은 통계 컴퓨팅, 기계학습 및 그래픽을 위한 세계에서 가장 강력하고 선호되는 프로그래밍 언어이다. R 은 오픈소스 프로젝트로 R에서 사용할 수 있는 애드온만해도 수천개에 달한다. 오픈소스 R에 대한 자료는 공식 프로젝트 사이트를 참고 할 수 있도록 한다.· R-Project : https://www.r-project.org/오픈소스 R이 널리 사용되고 있지만 엔터프라이즈 환경에서 R을 배포하는 경우, 데이터 양이 늘어나거나 프로덕션 환경에서 규모가 커짐에 ..

SQL Server 833오류 (15 Sec Slow IO Detected)

SQL Server 833오류 (15 Sec Slow IO Detected) · Version : SQL Server SQL Server I/O 요청 작업에서 15초 이상I/O delay가 발생하는 경우 833오류가 반환되고 에러로그에 기록 된다. SQL Server has encountered %d occurrence(s) of I/O requests taking longer than %d seconds to complete on file [%ls] in database [%ls] (%d). The OS file handle is 0x%p. The offset of the latest long I/O is: %#016I64x. 이전 버전의 SQL Server는 Lazy Writer 및 I/O Compl..

SQL Server nonpreemptive 모드에서Long Sync IO 오류

SQL Server nonpreemptive 모드에서Long Sync IO 오류 · Version : SQL Server SQL Server nonpreemptive모드에서 1000ms 보다 오래 걸리는 I/O 동기화 작업이 발생하면 SQL Server에러로그에 아래와 같은 로그가 기록된다. Long Sync IO: Scheduler 95 had 1 Sync IOs in nonpreemptive mode longer than 1000 ms SQL Server가 수행하는 I/O 유형은 일반적으로 2가지가 있다.· Async (대부분의SQL Server I/O 방식https://technet.microsoft.com/en-us/library/aa175396(v=sql.80).aspx) · Sync 이번 포스..

SQL Server DTC Transaction의 SPID = -2 반환

SQL Server DTC Transaction의 SPID = -2 반환 · Version : SQL Server SQL Server에서 Session ID (SPID) 값이-2 인 경우는 SQL Server에서 DTC 트랜잭션이 활성화 중이지만 트랜잭션에 사용중인 세션이 없음을 나타낸다. 간단하게 시나리오를 정리하면 아래와 같다.1. 클라이언트가 DTC트랜잭션을 생성하고 소유한다.2. 클라이언트는 SQL Server에 연결하고 DTC 트랜잭션을 등록한다.3. Connection은 DTC 트랜잭션의 일부 작업을 수행한다.4. 클라이언트 연결이 끊어진다 .(또는 NULL로 등록) 현재 DTC 트랜잭션의 상태는 여전히 활성 상태이고 클라이언트가 DTC 트랜잭션을 커밋하지 않고 기본 연결을 유지한다. SQL ..

SQL Server Read/Writer 동기화 작동 원리

SQL Server Read/Writer 동기화 작동 원리 · Version : SQL Server SQL Server는 스레드 동기화를 제공하여 경쟁을 방지한다. SQL Server 코드에는 다중 스레드 액세스를 고려해야하는 코드가 수많은 곳에 위치 하고 있다. 가장 일반적인 기술은 멀티스레드 코딩에 사용되는 읽기/쓰기 잠금이다. 읽기, 쓰기의 동기화 객체의 기본 개념은 쓰기 동기화와 함께 읽기에 대해서 병렬처리를 허용하는 것이다. 아래 예제는 싱글 단일 경로 동기화 객체의 간단한 패턴이다. (EX : Spinlock)· T1 - 읽기 액세스 획득· T1 - 일부 작업 시작 · T2 - 읽기 액세스 권한 요청 – spinlock 블럭킹, CPU는 더이상 진행 하지 않음. · T1 - 액세스 해제· T2..