본문 바로가기

mssql36

[MSSQL] TEMPDB 용량 축소, 관리 구문 SELECT 시에 TEMPDB를 많이 사용하는 케이스에서 여러 사용자가 동일한 작업을 수행 했을때 TEMPDB경합으로 인해 DB 성능이 나오지 않는 경우가 있습니다. 보통 TEMPDB는 CPU 논리프로세스개수까지 나누어 관리하는게 병합을 막을 수 있는 조치이며 경우에 따라서는 격리수준을 조정해서 해결가능했습니다. --TEMPDB경합발생 https://learn.microsoft.com/ko-kr/troubleshoot/sql/database-engine/performance/recommendations-reduce-allocation-contention --TEMPDB는 CPU개수 정도로 잡는게 좋음 --프로시저 캐시 DBCC FREEPROCCACHE GO -- Buffer Pool에 존재하는 데이터 페.. 2023. 6. 8.
[TSQL]"엄청 빠른 ROW COUNT" COUNT(*) 는 너무 느려 SYS.DM_DB_PARTITION_STATS 을 써보자 DB에서는 쿼리 플랜을 위해 테이블의 ROWCOUNT 정보를 가지고 있습니다. 그걸 엿볼수 있는게 SYS.DM_DB_PARTITION_STATS catalog view 입니다. --전체 테이블 카운트 SELECT T.NAME AS TBLNAME, SUM(P.ROW_COUNT) T_COUNT FROM SYS.TABLES T JOIN SYS.DM_DB_PARTITION_STATS P ON T.OBJECT_ID = P.OBJECT_ID AND T.TYPE_DESC = 'USER_TABLE' AND P.INDEX_ID IN (0,1) --WHERE T.NAME IN ('TBL_NAMES') GROUP BY T.SCHEMA_ID, T.NAME ORDER BY T.NAME SELECT T.NAME AS TBLNAM.. 2023. 4. 11.
[MSSQL] 링크드서버(원격서버) DB인스턴스, 테이블 존재 유무 판단 링크드 서버가 아닌 해당 데이터베이스 내에서의 인스턴스 존재 유무, 테이블 존재 유무 확인은 DB인스턴스의 경우 SYS.SYSDATABASES 에서 조회 테이블의 경우 [DB].DBO.SYSOBJECTS / [DB].INFORMATION_SCHEMA.TABLES 에서 조회 하여 확인이 가능합니다. EX) IF EXISTS (SELECT * FROM SYS.SYSDATABASES WHERE NAME = 'TEST') PRINT 'EXISTS' ELSE PRINT 'NOT EXISTS' IF EXISTS (SELECT * FROM TEST.DBO.SYSOBJECTS WHERE NAME = 'TEST' AND TYPE ='U') PRINT 'EXISTS' ELSE PRINT 'NOT EXISTS' IF EXI.. 2022. 8. 9.
[MSSQL] How to compute the modulus of a float in TSQL? MSSQL 에서 MODULAR 연산에 해당하는 함수는 따로 없고(MOD,FMOD) % 연산자로 수행 합니다. 이때 해당 연산은 FLOAT에 대해서는 수행할 수 없도록 막혀 있습니다. (https://docs.microsoft.com/en-us/sql/t-sql/language-elements/modulo-transact-sql?view=sql-server-ver16) "The data types float and numeric are incompatible in the modulo operator." 위와 같은 메시지가 나오죠. 이를 해결 하기 위해서는 약간의 트릭이 필요합니다. MONEY와 REAL 타입을 사용하면 원하는 연산의 수행이 가능합니다. 아래 연산을 수행해 보세요. (분자값을 MONEY로 설.. 2022. 7. 27.