데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

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

 

이번 포스트에서 다룰 내용은 Sync variety이다간단히 말하면 입출력이 완료  때까지 스레드는 대기한다기본적으로SQL Server 동기화를 위해 수행하는 작업은 I/O호출(WriteFile, ReadFile, FlushFileBuffers ) 타이머로 래핑하는 것이다순서는 아래와 같다.

1.       SQL Server 에러로그에 메시지 작성

2.       타이머 시작

3.       WriteFile 호출 : I/O 작업이 완료될 때까지 API 호출 스레드로 제어를 반환하지 않음

4.       타이머 정지

5.       경과시간이 > 1000ms 이고 작업자가 nonpremeemptive 모드 인경우 I/O 문제를 반환

 

 Sync IO 에러로그는SQL Server 스레드(작업자) 1000ms 보다 오래 걸린 API 호출을 수행했음을 의미한다어느  시점에서 하나의 작업자만 스케줄러를 소유   있기 때문에 스케줄러가 어떠한 느린 조건을 만났음을 의미한다. SQL Server 스케줄러 컨텍스트 스위치는  4ms이므로 1000ms 속도는 SQL Server 처리에 영향을 미칠  있다. SQL Server 오류로그에 기록 함으로써 사용자가 해결해야할 I/O 병목 현상을 알려준다해당 문제가 발생하면 아래 링크를 참고하여 문제를 해결   있도록 한다.

·         https://blogs.msdn.microsoft.com/psssql/2008/03/03/how-it-works-debugging-sql-server-stalled-or-stuck-io-problems-root-cause/

·         https://blogs.msdn.microsoft.com/psssql/2010/03/24/how-it-works-bob-dorrs-sql-server-io-presentation/

 

 

[참고자료]

https://blogs.msdn.microsoft.com/bobsql/2016/08/17/how-it-works-sync-ios-in-nonpreemptive-mode-longer-than-1000-ms/

 

 


 

SQL Server, MSSQL, Sync IO, I/O operation, IO동기화, DBA, DB Tuning, SQL Scheduler, I/O stall problem




강성욱 / jevida@naver.com

Microsoft SQL Server MVP

Blog : http://sqlmvp.kr

Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
2090 SQL Server DBA 체크리스트 jevida(강성욱) 2017.05.31 6715
2089 SQL Server 데이터베이스 백업이 성공적인지 확인하는 방법 jevida(강성욱) 2017.05.31 3729
2088 트리거가 적용된 메모리 최적화 테이블에서 alter table 실패 jevida(강성욱) 2017.05.31 3247
2087 메모리 최적화 테이블 변수 및 예상 행수 jevida(강성욱) 2017.05.31 2939
2086 백업 파일 복원과 3241 오류 (Microsoft® SQL Server® Backup to Microsoft Azure®Tool 사용) jevida(강성욱) 2017.05.31 3091
2085 In-Memory OLTP를 사용할 때 체크포인트 파일이 너무 많아 지는 이유 jevida(강성욱) 2017.05.31 2671
2084 메모리 최적화 테이블변수와 701 오류 (loop 사용으로 인한 메모리 부족 오류) jevida(강성욱) 2017.05.31 3334
2083 메모리 최적화 테이블에서 해시 인덱스 사용시 버킷 카운트의 중요성 jevida(강성욱) 2017.05.31 2936
2082 인덱스 리빌드시 병렬로 실행계획이 생성되지 않는 이유 jevida(강성욱) 2017.03.13 4927
2081 SQL Server 833오류 (15 Sec Slow IO Detected) jevida(강성욱) 2017.03.13 4294
» SQL Server nonpreemptive 모드에서Long Sync IO 오류 jevida(강성욱) 2017.03.13 3094
2079 SQL Server DTC Transaction의 SPID = -2 반환 jevida(강성욱) 2017.03.13 2394
2078 SQL Server Read/Writer 동기화 작동 원리 jevida(강성욱) 2017.03.13 2749
2077 SQL Server가 논리 및 물리 프로세서를 결정하는 방법 jevida(강성욱) 2017.03.13 2861
2076 데이터베이스에서 사용자 삭제 오류 jevida(강성욱) 2017.03.13 2788
2075 SQL Server ODBC Driver 및 Command package Tool 설치 jevida(강성욱) 2017.01.11 4761
2074 SQL Server Install on Linux (Ubuntu – 16.0.4) jevida(강성욱) 2017.01.11 4995
2073 SQL Azure blob storage 백업을 위한 프록시 세팅 jevida(강성욱) 2017.01.11 4197
2072 SQL on Azure 환경에서 SQL 서버 연결 불능 문제(VNET 설정 문제) jevida(강성욱) 2017.01.11 3285
2071 SQL Server 2016 자동 통계 업데이트 임계값 변경 jevida(강성욱) 2017.01.11 4523





XE Login