분류 전체보기

테이블 삭제 시 체크해야 할 리스트 * 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 를 찾을 수 없기 때문..
· Windows
성능모니터Windows 에서 구동하고 있는 서비스 관련 수치를 모니터링 할 수 있는 도구 성능 모니터 수집 생성데이터 수집기 집합 - 사용자 정의에서 새로 만들기 - 데이터 수집기 집합을 선택합니다. 새 데이터 수집기에 이름을 설정합니다.수동으로 만들기(고급)을 선택합니다. 데이터 로그 만들기에서 성능 카운터를 선택합니다. 추가 버튼을 클릭합니다. 수집을 원하는 카운터를 추가합니다. 추가된 카운터를 몇초 간격으로 수집할 건지를 선택합니다. 수집된 데이터를 저장할 경로를 선택합니다. 수행할 계정 설정을 원하는 경우 변경을 눌러 설정합니다.이후 저장 후 닫기를 선택후 마법사르 마칩니다. 사용자 정의에 생성한 수집기가 등록되었습니다.수집기에서 속성을 클릭합니다. 속성 창에서 쉼표로 구분을 선택합니다.샘플 간격..
트리거란특정 이벤트가 발생하였을 때 동작합니다.특정 이벤트에 포함되는지 검사하기 위해 쿼리 수행마다 트리거를 확인하는 작업이 필요합니다. 트리거가 미치는 성능 테스트트리거 생성 전 테스트트리거를 생성하지 않고 trg_table 을 생성 한 후 20,000 건을 INSERT 합니다. SET NOCOUNT ON CREATE TABLE trg_table (C1 INT, C2 VARCHAR(500))GO DECLARE @ST DATETIMEDECLARE @ET DATETIMEDECLARE @I INTSET @I = 1SET @ST = GETDATE()WHILE @I
트랜잭션 로그와 VLFSQL Server 는 각 트랜잭션 및 데이터베이스 수정 내용을 기록하는 트랜잭션 로그가 있습니다.트랜잭션 로그 파일은 VLF (Virtual Log File) 로 구성됩니다. 지금은 VLF 개수에 따른 성능 차이를 포스팅하는게 목적이기 때문에 개념에 대해서는 설명하지 않습니다.아래 URL 에서 개념에 대해 파악할 수 있습니다.https://docs.microsoft.com/ko-kr/sql/relational-databases/logs/the-transaction-log-sql-server?view=sql-server-2017https://docs.microsoft.com/ko-kr/sql/relational-databases/sql-server-transaction-log-arc..
VARCHAR(MAX) 와 NVARCHAR(MAX) 의 단점VARCHAR 와 NVARCHAR 는 유니코드 라는 점에서 다르기 때문에 VARCHAR 로 설명하겠습니다. VARCHAR(N) 컬럼에 데이터를 저장할 때에는 물리적으로 같은 방식으로 저장됩니다.이 말은, 어떤 특정한 동작없이 블록에 바로 쓰인다는 말을 뜻합니다. 그러나 VARCHAR(MAX) 컬럼에 저장하는 경우에는 TEXT 타입처럼 다뤄지게 됩니다.이는 저장을 위한 추가적인 절차가 필요하다는 뜻입니다. ( 단, 저장되는 데이터길이가 8000 자 이상인 경우 ) 왜 8000 자 이상인가? 8K 블록에는 최대 8000 자를 저장할 수 있으며, 이를 넘어가게 되는 경우 오버플로우가 발생하게 됩니다.out of row 라고 말하며, 이를 저장하기 위해..
· 후기
안녕하세요. 꽁담입니다.이직을 하게되어 새로운 집으로 이사를 하게 되었고, 이렇게 제 고생은 시작이 되었습니다.그것이 무엇인고 하니 후... 이사한 집에는 톡토기와 아주 간혹가다 보이는 바퀴벌레가 먼저 살고 있었습니다. ( ㅎㅎㅎㅎ ) 바퀴벌레도 없어야겠지만, 이 친구는 아주 가-끔 나타나는 녀석이었고,톡토기는 매일매일 제 집 가장자리를 돌아다니고 있었습니다.특히 습기가 높을법한 화장실 근처 벽에서 말이죠. 에프킬라를 열심히 뿌려보았지만, 그때만 잠시다음날 다시 퇴근하고오면 톡토기가 기어다니는 모습을 볼수 있었습니다. 바퀴벌레 약으로는 그 순간의 효과자체도 없거둔요.아무래도 톡토기는 이 약을 먹지는 않나봅니다. ㅜㅜ 그러던 도중 발견한 제품이 있었습니다.벅스존 제타킬 이라고 하는 제품입니다. 강력한 살충..
꽁담
'분류 전체보기' 카테고리의 글 목록 (31 Page)