분류 전체보기

CEIP 란 SQL Server 2016 이상 버전에서는 설치 시 'Microsoft 에 오류 전송 기능' 을 비활성 할 수 없습니다.이 기능은 CEIP (Customer Experience Improvement Program) 으로 불립니다.오류 전송 기능을 하기 위해 SQL Server 에 TELEMETRY 세션이 붙어 여러 정보를 수집해 갑니다. Microsoft 에 오류를 자동 전송해 기능 개선에 도움을 준다지만저희 입장에서는 별 쓸모가 없는 리소스만 잡아먹는 작업입니다. 기능 제거 방법1. SQL Server CEIP 서비스 확인1. 서비스로 들어갑니다.2. 네모박스로 보이는 CEIP 와 관련된 서비스가 있으면 아래 단계를 계속 진행합니다.(MSSQLSERVER) 는 인스턴스 명을 나타내며, 설..
SP 검수 시 체크해야 할 리스트 * SQL Server 기준으로 작성하였습니다. 1. Ad-hoc, 동적 쿼리 제거1. Ad-hoc, 동적 쿼리는 실행 시 쿼리가 어떻게 구성되는지 알 수 없습니다. 구성을 알 수 없으면 인덱스가 적절하게 구성되었는지, 실행계획이 잘못풀려 악성쿼리인지 아닌지를 판단할 수 없습니다. 2. where 절 체크 사항1. 동일한 데이터 타입끼리 비교되는지 확인합니다. 서로다른 데이터 타입끼리 비교 시 CONVERT 함수가 사용되기 때문에 인덱스 사용을 할 수 없습니다.2. OR 문은 UNION ALL 로 변경 OR 문은 상황에 따라 Scan 으로 풀릴 가능성도 있습니다. UNION ALL 로 쿼리를 Seek + Seek 하는 방식으로 변경이 가능한지 확인합니다.3. CASE 문..
데이터 대량 변경 작업 시 체크해야 할 리스트 1. 서비스 영향도 확인1. 시간이 얼마나 소요될지에 대해 파악되면 이에대한 영향도를 개발팀에 확인 요청합니다. 2. 데이터 프리징이 가능한지 확인1. TAB LOCK 으로 대량 변경 작업 진행 시 더 빠르게 처리할 수 있습니다. 이는 ROW Lock 과 TAB Lock 에서 트랜잭션 로그가 쌓이는 방식에 대해 이해하고 있어야 합니다.2. 이 때는 점검을 걸어야 하고, 서비스가 불가능 합니다. 3. 대량 DELETE 작업 시 INSERT 작업이 더 효율적인지 비교1. ROW 별로 DELETE 작업을 진행하는 것보다 DELETE 대상이 아닌 데이터를 새로운 테이블에 INSERT 하는 작업이 효율적일 수 있습니다. 프리징이 되었다는 가정에서 새로운 테이블로 IN..
컬럼 삭제 시 체크해야 할 리스트 1. SP, 배치작업, 타 서비스에서 컬럼을 사용하고 있는지 확인 2. 인덱스에 구성된 컬럼인지 확인1. 단일 인덱스에 구성된 컬럼인 경우 https://mozi.tistory.com/337 링크를 먼저 참고합니다.2. 복합 인덱스에 구성된 컬럼이면, 컬럼이 제거되면서 해당 인덱스로 구성된 다른 컬럼 순서가 계속 사용되는지 확인합니다. 예) A, B, C 로 구성된 인덱스에서 B 가 삭제되는 경우 A, C 로 구성된 인덱스를 계속 사용할 지 확인 - 인덱스에서 컬럼을 빼는 작업은 안되며, A, C 로 재구성 작업을 진행해야 합니다. 3. 컬럼을 바로 삭제하려고 하지마십시오.1. rename 으로 컬럼 명을 변경하여 삭제와 같은 상황만 만들어 둡니다. 유사 시 빠르게 복원..
인덱스 삭제 시 체크해야 할 리스트 * SQL Server 기준으로 작성하였습니다. 1. 쿼리 힌트에 인덱스가 사용되지는 않았는지 확인 2. 쿼리 실행계획이 변경될 가능성이 있는지 확인1. 기존 쿼리가 삭제될 인덱스를 사용하는 경우 실행계획이 변경되게 되고 이로인해 이슈가 될 수 있는지 확인합니다. 3. 인덱스에 접근하는 쿼리가 있는지 확인1. dm_db_index_usage_stats 의 동적뷰에 마지막 접근 시간이 기록됩니다. 해당 뷰를 조회해서 인덱스가 지금도 사용되고 있는지 확인합니다. 4. ★ 인덱스를 바로 삭제하려고 하지마십시오.1. rename 으로 인덱스 명을 변경하여 삭제와 같은 상황만 만들어 둡니다. 유사 시 빠르게 복원이 가능하도록 준비하고 있어야 합니다. ( 인덱스 재생성 시, 테이..
테이블 삭제 시 체크해야 할 리스트 * SQL Server 기준으로 작성되었습니다. 1. SP, 배치작업, 타 서비스에서 해당 테이블을 사용하는지 확인1. 테이블을 사용하고 있었는데, 갑자기 삭제가 된다면 서비스 장애로 이어지게 됩니다. 2. 테이블에 접근하는 쿼리가 있는지 확인1. dm_db_index_usage_stats 의 동적뷰에 마지막 접근 시간이 기록됩니다. 해당 뷰를 조회해서 테이블이 지금도 사용되고 있는지 확인합니다. 3. ★ 테이블을 바로 삭제하려고 하지마십시오. 1. rename 으로 테이블 명을 변경 하여 삭제와 같은 상황만 만들어 둡니다. 유사 시 빠르게 복원이 가능할 수 있도록 항상 준비되어 있어야 합니다. 생성과 다르게 삭제는 위험도가 높은 작업입니다.서비스에 영향이 없는지 꼼꼼..
컬럼 추가 시 체크해야 할 리스트 1. 컬럼의 Data Type 이 적절한지 확인1. Data Type 타입이 의미없이 크게 설정되어 있지는 않은지 확인합니다. 저장공간을 최대한 효율적으로 사용해야 합니다.2. TEXT / VARCHAR(MAX) / LOB 타입은 VARCHAR(8000) 과 같은 타입으로 변경할 수 있는지 확인합니다. 저장된 데이터를 한번 더 찾아가야 하는 비용을 줄일 수 있습니다. 2. 기존 서비스 중에서 * 로 조회하는 쿼리가 있는지 확인1. * 로 조회하는 경우, 컬럼이 추가되면서 서비스의 장애가 발생할 수도 있습니다. 아래와 같은 경우가 있겠죠. 'INSERT INTO VALUES (, , , ) SELECT * FROM .. ' INSERT 의 컬럼과 매칭되지 않게 됩니다. 그..
인덱스 생성 시 체크해야 할 리스트 * SQL Server 기준으로 작성하였습니다. 인덱스는 아래의 경우로 나뉠 수 있습니다.- 테이블을 생성하면서 만드는 경우- 서비스 도중에 쿼리가 추가되면서 만드는 경우 테이블을 생성하면서 만드는 경우에는 테이블에 접근하는 쿼리들을 최대한 수집 후에 필요한 인덱스를 생성하시면 됩니다. 1. 기존의 인덱스와 비교1. 생성하려는 인덱스가 기존에 구성된 인덱스에 포함시킬 수 있는지 확인합니다.2. 인덱스를 만드려고 하는 이유와 해당 인덱스를 사용하는 쿼리가 기존의 인덱스를 사용할 수는 없는지 확인합니다.3. 인덱스를 생성함으로 써 쿼리가 가지고 있는 이슈가 해결되는 지 확인합니다. -> '막무가내로 만들면 안된다' 를 전달하고 싶습니다. 2. 인덱스 생성 시 소요시간 체크..
테이블 생성 시 체크해야 할 리스트 * SQL Server 기준으로 작성하였습니다. 1. 테이블의 용도 1. 해당 테이블이 어떤 용도로 인해 만들어 졌는지 DBA 도 알고 있어야 합니다.2. 로그성 테이블인 경우 데이터 보관일자에 대해서도 결정이 되어야 합니다. 로그성 데이터는 계속 쌓을 이유는 없기 때문입니다. ( 그래서 많은 사이트의 경우, 몇년 이상의 기록은 확인할 수 없다. 라는 내용을 확인할 수 있습니다. ) 2. 데이터 유입량 체크 1. 테이블을 생성하면 하루에 유입되는 데이터 량과 최대 어느정도까지 데이터가 들어올지를 알고 있어야 합니다.2. 그 기준으로 데이터 파일 크기가 어느정도까지 늘어날지, 디스크의 이슈는 없는지 확인이 가능합니다. 3. 명명 규칙 확인 1. 테이블 명을 규칙없이 생성..
SSISDB - SSIS Server Maintenance Job 배치작업SSISDB 는 SSIS Server Maintenance Job 배치작업을 가지고 있습니다.이 배치작업은 오래된 배치기록을 제거하는 역할을 하며 매일 00:00 분에 수행됩니다. cleanup_server_retention_window SP 의 execution_cursor 오류SSIS Server Maintenance Job 배치작업은 cleanup_server_retention_window SP 를 호출합니다.그런데 간혹 아래와 같은 오류가 발생합니다. execution_cursor 오류 해결 방법SSISDB 를 생성 시 발생하는 문제로,아래와 같은 구조로 인해 WHILE 문이 반복되는 경우 CURSOR 를 찾을 수 없기 때문..
꽁담
'분류 전체보기' 카테고리의 글 목록 (27 Page)