(주)씨퀄로 대표컨설턴트/이사,
SQLBigEyes 솔루션 개발자,
인프런 지식공유자,
탈잉 튜터,
스킬서포트 교육센터 강사,
Microsoft Data Platform MVP
소개 즉시 초기화(또는 인스턴트 파일 초기화, 이하 IFI)는 파일 크기 증가 시 일명 Zeroing이라고 부르는 새로운 공간의 초기화 작업을 생략하므로써 빠른 처리를 지원하는 동작입니다. 특히 대용량의 파일 생성이나 증가 시 빠른 시간에 처리가 되어서 관리 측면 뿐만 아니라 성능 면에서도 큰 도움이 될 수 있습니다. 아쉬운 점은 Data(mdf or ndf) 파일에만 이러한 동작이 지원되는 것입니다.…
소개 통계(Statistics) 개체는 특정 열의 어떤 값이 어떻게 분포되어 있는지 히스토그램을 포함한 여러가지 통계 정보를 저장하고 있는 개체입니다. 이는 Query Optimizer가 해당 열의 행 수 추정을 할 때 참조하는 중요 정보이며 다양한 방식으로 생성됩니다. [그림-1] 참고 – CustKey 라는 열의 “가상”의 히스토그램 예를 들어, 인덱스를 생성하면 단일 열의 경우 해당 열에, 복합 열의 경우 첫…
소개 인덱스를 온라인 옵션으로 생성할 때 WAIT_AT_LOW_PRIORITY 추가 옵션이 SQL Server 2017부터 ALTER INDEX 문으로 지원되었습니다. SQL Server 2022 (또는 Azure SQL)부터는 CREATE INDEX 문에서도 지원합니다. 그에 따르는 추가 옵션 MAX_DURATION과 ABORT_AFTER_WAIT 옵션을 알아보겠습니다. 참고 자료 CREATE INDEX 에서 WAIT_AT_LOW_PRIORITY 옵션 WAIT_AT_LOW_PRIORITY 옵션 온라인 인덱스와 관련된 다양한 옵션들과 기능들이 보다 세심하고 넓은 범위로 지원을 확대하는…
소개 인덱스를 온라인 옵션으로 생성 시 필요에 따라 일시 정지해 두고 이후 다시 재시작하거나 중지할 수 있는 방법이 SQL Server 2019(또는 Azure SQL)부터 지원되었습니다. SQL Server 2022부터는 Primary Key와 Unique Key 제약 조건을 생할 때도 동일한 기능을 지원합니다, PK와 UQ도 인덱스로 생성되기 때문이죠. 참고 자료 다시 시작 가능한 테이블 제약조건 추가 재시작 가능한 PK/UQ 온라인…
소개 비용 기반 쿼리 최적화(Cost-based Query Optimizing)를 가진 현대의 대부분의 RDBMS에서 쿼리 최적화의 절대적 영향력을 가진 열 단위 정보가 바로 통계(Column Statistics)일 겁니다 (아래 참고 자료의 MS 문서 참조). 열 단위 통계 정보를 저장하는 통계 개체 또한 만들고(Create), 내용을 최신 데이터로 갱신하고(Update), 필요 시 삭제(Drop)하는 과정들이 필요하고 그것이 쿼리 최적화 시 통계 정보를 참조하는 작업과…
소개 OpenAI, ChatGPT, Bing 채팅, DALL-E, Copliot 등 언론 매체나 세미나 등을 통해 이미 많이 들어 알고 있거나 이미 사용하고 계시죠? 저도 Bing AI, Github Copliot, Microsoft Designer 등을 이용해서 Visual Studio에서 개발할 때, Azure Data Studio를 이용해서 SQL를 사용할 때, 텍스트 기반으로 이미지를 생성할 때, 그 외 투자나 기타 정보가 필요할 때 등등 다양하게…
소개 DB튜닝 관련 교육 시 항상 말씀드리는 주제가 있습니다. 대용량 메모리(적어도 수 백GB 이상 특히 1TB 이상)를 사용하게 되면 이전에 없었던 새로운 유형의 성능 이슈들을 접하게 된다고 따라서 그에 따른 진단, 튜닝, 안정화가 필요하다는 것입니다. 이번에 소개하는 Buffer Pool 스캔 이슈도 해당 범위에 포함된다고 생각합니다. Buffer Pool은 SQL Server가 데이터베이스용으로 사용하는 주 메모리 영역입니다. 아래와…
소개 Accelerated Database Recovery(이하 줄여서 ADR) 기능은 SQL Server 2019에서 처음 도입되었습니다, 목적은 SQL Server를 재시작하거나, Standby 서버로 넘어가거나, DB에 문제가 생기거나 혹은 트랜잭션 로그가 너무 커져서 로그를 지우고나 용량을 축소하는 등의 DB 복구/복원/로그잘라내기와 같은 작업에서 대용량 DB, 대용량 트랜잭션 작업 특히 장시간 수행되는 트랜잭션 작업(예를 들어 대용량 테이블의 인덱스 작업 등)이 포함되어 있는 경우에…
소개 기존의 다양한 압축 기능에 더해서 이제 XML 컬럼과 XML 인덱스에 압축 기능을 지원합니다(SQL Server 2022와 Azure SQL 포함). CREATE TABLE (또는 ALTER TABLE, XML_COMPRESSSION 옵션 참조) CREATE INDEX (또는 ALTER INDEX, XML_COMPRESSSION 옵션 참조) XML_COMPRESSION 옵션 CREATE/ALTER TABLE 또는 CREATE/ALTER INDEX에서 XML 데이터의 압축 여부를 XML_COMPRESSION 옵션으로 지정할 수 있습니다(위 링크에 있는 문서 내용과 예제…
소개 가능하면 하지 않는 것이 좋은 DB 관리 작업 중에 대표적인 DBCC SHRINKDATABASE 또는 SHRINKFILE, 그러나 현실적으로는 필요한 경우들이 생기죠. 필요에 의해 SHRINK 작업을 하는 경우에도 성능 또는 안정성을 위해 고려할 부분들이 많이 있습니다. 특히 점검 시간이 아닐 때는 더더욱 주의가 필요하죠 그 중에 하나가 쿼리 실행과 동시 처리 시 문제가 될 수 있다는 점입니다.…