SQL SERVER 2022-15-DBCC SHRINKDATABASE 동시성 향상

소개 가능하면 하지 않는 것이 좋은 DB 관리 작업 중에 대표적인 DBCC SHRINKDATABASE 또는 SHRINKFILE, 그러나 현실적으로는 필요한 경우들이 생기죠. 필요에 의해 SHRINK 작업을 하는 경우에도 성능 또는 안정성을 위해 고려할 부분들이 많이 있습니다. 특히 점검 시간이 아닐 때는 더더욱 주의가 필요하죠 그 중에 하나가 쿼리 실행과 동시 처리 시 문제가 될 수 있다는 점입니다.…

SQL SERVER 2022-14-tempdb 동시성 개선

소개 #으로 시작하는 임시 테이블, @로 시작하는 테이블 변수, 그 외 cursor, xml, row versioning 등 다양한 용도의 임시 데이터를 저장하는 tempdb에는 몇 가지 유형의 병목 문제가 있어왔고 그 문제를 해결 또는 완화하기 위해 SQL Server 2005 버전부터 매번 다양한 개선 작업이 적용되어 왔습니다 (아래 첫 번째 링크 문서 참조). SQL Server 2022에서는 병목 유형…

SQL SERVER 2022-13-시계열 데이터

소개 T-SQL의 새로운 함수 중 시계열 데이터 처리 관련 함수들만 별도로 분리했습니다. GENERATE_SERIES() FIRST_VALUE(), LAST_VALUE() DATE_BUCKET() 시계열 데이터 처리 함수들 (신규 or 확장) GENERATE_SERIES ( start , stop [ , step ] ) 쉽게 얘기해서 원하는 형태의 일련번호(순번)를 생성해주는 함수입니다. 데이터 분석 언어인 Python의 arange() 혹은 R의 seq() 와 유사하고 심지어는 다른 RDBMS에서도 동일한 함수를…

SQL SERVER 2022-12-TSQL 확장

소개 T-SQL 관련 일부 함수가 확장되고 새로운 함수와 구문이 추가되었습니다. TRIM() DATETRUNC IS [NOT] DISTINCT FROM BIT 조작 함수 STRING_SPLIT() GREATEST(), LEAST() WINDOW 절 Transact-SQL 확장 또는 새로운 함수들 TRIM ( [ LEADING | TRAILING | BOTH ] [characters FROM ] string ) LTRIM ( character_expression , [ characters ] ) / RTRIM ( character_expression ,…

SQL SERVER 2022-11-JSON 확장

소개 JSON 관련 1개의 함수가 확장되고 3개의 새로운 함수가 추가되었습니다. ISJSON() JSON_PATH_EXISTS() JSON_OBJECT() JSON_ARRAY() JSON 확장 또는 새로운 함수들 ISJSON ( expression [, json_type_constraint] ) expression에 지정한 문자열이 유효한 JSON이면 1을 아니면 0을 반환합니다. SQL Server 2016버전부터 지원한 함수이며 2022에서 json_type_constaint 인수가 추가되었습니다. VALUE/ARRAY/OBJECT/SCALAR 형식을 지정해서 만족 여부를 확인할 수 있습니다. [예제] 간단한 예제코드입니다. JSON_PATH_EXISTS(…

SQL Server 2022-10-FORCE_SHOWPLAN_RUNTIME_PARAMETER_COLLECTION

소개 사담으로 시작합니다. 제가 개발한 저희 회사 (주)씨퀄로의 SQL Server 전문 모니터링 솔루션인 SQLBigEyes Professional로 기업 고객사에서 데모나 교육을 진행할 때 자주 나오는 질문이 한 가지 있습니다 바로 “특정 저장 프로시저의 실행 계획 확인 시, 현재 매개변수 값을 알 수 있나요?” 라는 것입니다. [그림-쿼리 실행 계획에서 “매개변수” 목록 확인, “컴파일 값”만 출력된다] 결론은 “바로 알…

SQL Server 2022-09-Query Store Hint

소개 Query Optimizer가 선택한 실행 계획이나 동작을 다르게 처리하고 싶은데 쿼리 자체를 수정할 수 없는 여건을 위해 기존의 Plan Guide와 같은 방법들이 지원되었으나 실제로 실무에서 사용하기는 용이하지 않았습니다. SQL Server 2022에 새로운 도입된 Query Store Hint는 이러한 요구사항을 지원하는데 도움이 될 수 있습니다. 쿼리 실행 계획 강제 or 변경하기 쿼리 성능을 튜닝할 때 Query Optimizer가…

SQL Server 2022-08-Approximate Query Processing

소개 SQL Server는 관계형 데이터베이스(R-DB) 엔진으로 시작했지만 시대적 상황이나 요구에 맞추어 지속적으로 확장되고 있습니다. 예를 들어 XML, Hierarchical, Filestream, Spatial, Graph 심지어는 R/Python 머신 러닝에 이르기까지 참으로 다양합니다. 그리고 이제 살펴볼 내용은 빅데이터, OLAP, DW 와 같은 대용량 데이터 처리 환경에서 일반적인 집계, 통계, 분석용 함수들에 대한 이야기입니다. Approximate Query Processing 일반적으로 알려진 Azure Synapse,…

SQL Server 2022-07-Optimized Plan Forcing

소개 사견으로 시작합니다, SQL Server 버전이 올라가면서 Query Optimizing에도 많은 변화가 있습니다 달리 말해서 Query Optimizer 루틴이 더 길어지고 절차가 더 복잡해진다는 것입니다 이는 쿼리 최적화 기능의 향상에 도움이 되겠지만 반대로 최적화의 복잡도를 증가시키면서 쿼리 컴파일 부하나 시간이 커지는 부작용도 동반될 것입니다, 오랜 경험을 통한 사견이므로 가볍게 받아주세요^^ SQL Server로 서비스되는 DB 서버가 대형화되고(CPU 수백…

SQL Server 2022-06-Parameter Sensitive Plan Optimization

소개 SQL Server 2022에서 가장 핫한 기능이 바로 이제 살펴볼 Parameter Sensitive Plan(PSP) Optimization 일 겁니다. SQL Server 기반으로 개발을 할 때는 일반적으로 저장 프로시저(또는 매개변수 쿼리도 마찬가지)를 많이 사용하고 그로 인해 경험할 수 있는 대표적인 쿼리 성능 이슈인 Parameter Sniffing 동작이 있습니다. 이 동작이 좋지 않은 프로시저 시나리오를 만나면 성능 문제가 발생하고 심한 경우…