본문 바로가기
반응형

SQL Server19

[MsSQL][장애 조치] 크랙 DATABASE 복구 1 - 주의대상 데이터베이스 복구 시도 장애 조치사내 데이터 배치용으로 사용 중이던 MsSQL의 Database 중 하나의 Database의 장애가 발생하여 주의대상 상태가 되는 일이 발생하였다. 주의대상이 된 데이터베이스에는 접근도 할 수 없고 어떠한 작업도 불가능한 상태가 되었으며, 주의대상에서 자동으로 복구 중 무언가 문제가 발생하여, DB STARTUP 상태로 아무런 변경이 없었다.select command, percent_complete, start_time from SYS.DM_EXEC_REQUESTS where command in ('db startup', 'restore database', 'recovery');위의 Query를 통해 DB STARTUP 트랜잭션이 어느정도 진행되었는지 확인 할 수 있다 하여 확인하였으나, 몇 .. 2025. 2. 12.
[MsSQL] 쿼리튜닝 - Join Hint와 Leading Table 쿼리 튜닝쿼리를 튜닝하다보면 여러 상황을 만나게 되는데, 그 중에 MsSQL쿼리의 Join에 대한 힌트들에 대해서 간단하게 소개해보도록하겠다. 사실 Oracle 쿼리튜닝 책만 읽어서 MsSQL에 대해서 자세하게 모르고 있었는데, 최근 사내에서 운영중인 MsSQL의 쿼리에 문제들이 있어 튜닝을 해야했었다. 팀장님이 잠시 자리를 비운사이 문제의 쿼리를 확인하고 조치하려했으나, 확인까지만하고 어떻게 조치해야하나 고민을 하며 자신있게 해결하지 못하였다. 팀장님이 돌아오신 후 Inner Loop Join으로 바꿔서 튜닝을 하라 라고 말씀하셨는데, 정확히 힌트에 대해 알지 못하다보니 자신있게 한다고 말을 못 했던게 많은 아쉬움으로 남는다. 조금 다른이야기였지만, 아무튼 Join에 대한 힌트들에 대해서 소개해보도록 .. 2024. 12. 28.
[MsSQL] SET STATISTICS 옵션을 활용 - 실제 실행 계획 상세보기 실제 실행계획 상세보기MsSQL 에서는 실행계획을 볼 수 있는 방법이 여러가지 있지만.대부분 그래프 이미지로 밖에 볼 수 없다. 기존의 실행계획 표시인 텍스트와 I/O 관련정보 등을 손쉽게 볼 수 있는 옵션에 대해서 소개하도록 하겠다. SET STATISTICSSET STATISTICS 는 MsSQL에서 쿼리의 성능분석/최적화 등에 도움을 주는 옵션이다.해당 옵션은 세션별로 적용을 하여 해당 세션의 쿼리를 분석할 수 있게 도와준다. 주로 실제 쿼리의 실행계획에 대해 아래의 옵션 3개를 활성화하여 확인한다.SET STATISTICS PROFILE ONSET STATISTICS IO ONSET STATISTICS TIME ON 해당 옵션을 활성화 하고 원하는 쿼리를 실행하여 쿼리가 실행 완료되면 실행계획과 .. 2024. 11. 20.
[MsSQL] 프로시저 내용 찾기 - 특정 테이블이 사용되는 프로시저 찾기 Procedure 내용 찾기오라클의 프로시저의 특정 내용을 찾는 쿼리를 알아보았었다.[Oracle] 프로시저 내용 찾기 - 특정 테이블이 사용되는 프로시저 찾기MsSQL도 이와 같은 쿼리를 만들 수 있는데, 해당 쿼리는 트리거나 함수 등에서 사용은 못하고 프로시저의 내용만 찾는 쿼리이다. Queryuse [데이터베이스 명]select name, object_definition(object_id) as txt from sys.PROCEDURES where object_definition(object_id) like '%[프로시저에서 찾고 싶은 내용]%' 위 쿼리를 사용하면 해당 데이터베이스 내의 프로시저 중 내가 찾고싶은 내용을 포함한 프로시저를 찾을 수 있다.데이터베이스 별로 검색해야하기에 .. 2024. 11. 16.
[MsSQL] 마지막 페이지 Latch 경합 (Insert 지연 튜닝) - 2. 테스트 및 적용 Insert 지연 튜닝 - 테스트 및 적용 지난번에 원인을 파악했떤 마지막 페이지 경합에 대한, 업무 반영을 하기위해 테스트를 진행하고 결과에 맞게 반영하게 되었다. [MsSQL] 마지막 페이지 Latch 경합 (Insert 지연 튜닝) - 1. 원인 찾기Insert 지연 튜닝회사 중요 데이터 중 많게는 하루에 수억건의 CUD가 발생하는 테이블이 있다.이상하게 CUD 중 Delete가 발생 할 때에만 지연이 발생하게 되어, 튜닝을 위해 이것저것 확인 중  해당da-new.tistory.com 잘못된 테스트와 정확한 테스트 그리고 새롭게 알아낸 내용 등에 대해서 한번 소개해보도록 하겠다. 테스트어떻게하면 내가 생각한 이슈에 의해 마지막 페이지경합이 발생하며, 해결 방법을 통해 경합이 줄어들었음을 알 수 있.. 2024. 11. 13.
[MsSQL] 마지막 페이지 Latch 경합 (Insert 지연 튜닝) - 1. 원인 찾기 Insert 지연 튜닝회사 중요 데이터 중 많게는 하루에 수억건의 CUD가 발생하는 테이블이 있다.이상하게 CUD 중 Delete가 발생 할 때에만 지연이 발생하게 되어, 튜닝을 위해 이것저것 확인 중  해당 테이블에서 Delete가 발생 시 삭제 된 데이터의 히스토리를 남기고자 트리거로 히스토리 테이블에 Insert를 하는데,트리거를 통한 히스토리 테이블에 Insert가 지연되어 원본 테이블의 Delete 함께 지연된다는 사실을 알게되었다. Insert가 지연되었던 이유가 무엇이며, 어떻게 튜닝했는지 초보 DBA의 의식의 흐름대로 어떻게 진행되었는지 남겨보도록하겠다. 트리거가 설정되어있는 기존의 테이블을 Table_O(수억건의 CUD발생) / 히스토리를 남기기 위한 테이블을 Table_H(Insert만.. 2024. 11. 8.
[MsSQL] 실행 했던 쿼리 실행 계획 찾기 실행 했던 쿼리 실행계획지금 당장 실행할 쿼리의 실행계획을 알아보는거야 뭐 너무나 쉽지만 이미 실행되었던 쿼리들에 대해서 실행계획을 찾으려면 캐시된 쿼리들에 한하여 실행계획을 찾아 볼 수 있다. SYS.DM_EXEC_QUERY_STATS 라는 시스템 뷰에 남아있는 sql_handle / plan_handle을 통해 찾아보는 쿼리에 대해 알아보자. Queryselect s.creation_time,        s.last_execution_time,       s.execution_count,       substring(t.text,                  (s.statement_start_offset/2) + 1,                  ((case s.statement_end_offs.. 2024. 11. 7.
[MsSQL] Openquery update - 다른 데이터베이스의 데이터 변경하기 OpenqueryOpenquery를 통해 이기종의 데이터베이스에 접근하여 데이터를 조회하거나 다른 DML을 사용 할 수 있다.데이터 조회, 입력, 삭제 뿐만아니라 변경도 가능하다. 데이터 변경은 아래와 같은 openquery문을 사용한다. update항상 DML 문을 사용하여 데이터를 삭제 혹은 변경 하기 전에 해당 데이터를 확인하는 습관을 가지는 것을 추천한다.openquery의 select을 활용하여, 우리가 변경 할 데이터를 확인해본다. 데이터를 삭제하는 openquery delete문은 아래와 같다.update openquery([Linked Server], '[select Query]') set col1 = [value], cal2 = [value] ... 위와같이 사.. 2024. 6. 28.
[Windows Server] .NET Framework 3.5 설치 - 서버 관리자 .NET Framework 3.5SQL Server 2014 Enterprise Edition 을 설치하다보면 .NET Framework 3.5버전 설치가 필요하다고 나오는데, 윈도우 서버에서 해당 프래임워크를 설치하는 방법에 대해서 소개해 보도록 하겠다. 윈도우 서버 설치 ISO파일을 디스크에 마운트 해둬야 하며, 서버 관리자를 통해 설치한다..NET Framwork 3.5 설치윈도우 서버의 서버 관리자를 통해 설치하기에 서버관리자를 실행한다.설치를 실행하기전에 윈도우 서버 설치 iso파일을 준비해둔다.[서버관리자의 역할 및 기능 추가] 를 선택한다.기능 탭까지 쭉 진행하여 기능 탭에서 [.NET Framework 3.5 기능] 을 체크 표시한다.기능 설치 도중 [설치 선택 확인 페이지 -> 대체 원본.. 2024. 4. 27.
[MsSQL] SQL Server - AlwaysOn Basic 구성 (AD 없이 처음부터 끝까지) SQL Server - High Availability 데이터베이스를 운영함에 제일 중요한 것은 무엇일까? 중요한 것은 많지만 그 중에 하나를 꼽자면 바로 서버 이중화를 통한 고가용성 - High Availability (HA) 이 꼭 나올 것이다. 장애가 나도 최대한 빠른시간에 대처하여 서비스를 유지할 수 있게 해주는HA구성이야 말로 운영 서비스 중 제일 중요하기 때문이다. SQL Server 의 여러가지 HA구성 방법 중 Active Directory (AD) 설정이 없이 AlwaysOn Basic을 구성하는 방법에 대해서 소개해보도록 하겠다. AlwaysOn Basic 기존에 구성되어있는 SQL Server에서 라이센스 비용을 아끼고자 SQL Server 2019 Standard 버전으로 변경하여 .. 2024. 4. 23.
반응형