본문 바로가기
반응형

DATABASE85

[MsSQL] 마지막 페이지 Latch 경합 (Insert 지연 튜닝) - 2. 테스트 및 적용 Insert 지연 튜닝 - 테스트 및 적용 지난번에 원인을 파악했떤 마지막 페이지 경합에 대한, 업무 반영을 하기위해 테스트를 진행하고 결과에 맞게 반영하게 되었다. [MsSQL] 마지막 페이지 Latch 경합 (Insert 지연 튜닝) - 1. 원인 찾기Insert 지연 튜닝회사 중요 데이터 중 많게는 하루에 수억건의 CUD가 발생하는 테이블이 있다.이상하게 CUD 중 Delete가 발생 할 때에만 지연이 발생하게 되어, 튜닝을 위해 이것저것 확인 중  해당da-new.tistory.com 잘못된 테스트와 정확한 테스트 그리고 새롭게 알아낸 내용 등에 대해서 한번 소개해보도록 하겠다. 테스트어떻게하면 내가 생각한 이슈에 의해 마지막 페이지경합이 발생하며, 해결 방법을 통해 경합이 줄어들었음을 알 수 있.. 2024. 11. 13.
[Oracle] DML Trigger - 테이블에서 사용하는 트리거 정리 DML Trigger트리거, 우리 대부분 트리거에 대해서 알고 있을 것 이다. 트리거의 특징으로는 아래 정도 알 고 있을 것 이다.* 특정한 동작이 실행되었을 때, 자동으로 함께 실행되는 것 * 데이터의 무결성을 유지* 자동으로 함께 실행되기에 성능 이슈가 있을 수 있다create or replace trigger [트리거 이름]before [or atfer] -- dml문 이전이냐 이후냐insert [or update / delete] [트리거가 동작할 테이블] -- 테이블에서 지정한 dml문이 동작시 트리거 실행[FOR EACH ROW] -- 행 트리거 일 경우 / 문장 트리거 생략begin -- 동작할 트리거 내용end;근데 트리거에 대해서 깊게 생각 해본 적이 있는가??? 그냥 함께 실행된다.. 2024. 11. 11.
[MsSQL] 현재 세션에 대한 정보들 조회하기 시스템 동적 관리뷰를 활용한 세션 정보 조회MsSQL에 현재 붙어있는 세션들에 대한 정보를 조회하는 방법으로 시스템 동적 관리 뷰를 사용한다. 이런 뷰를 여러가지를 조합하여 원하는 정보를 알 수 있는데, 기본적으로 자주 사용되고 필요한 정보들을 조회하는 쿼리를 소개하도록 하겠다. 세션 조회 바로 쿼리를 설명하자면 아래와 같다.select r.session_id, r.blocking_session_id, r.status, r.command, r.wait_type, r.wait_time, s.host_name, s.program_name, s.login_name, c.client_net_address, .. 2024. 11. 10.
[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.
[DATABASE] OLTP / OLAP 란 무엇인가? DATABASE 관리와 분석데이터베이스의 관리와 분석에는 크게  Online Transaction Processing (OLTP) / Online Analytical Processing (OLAP) 라고 불리우는 개념으로 나뉜다. OLTP와 OLAP의 개념과 차이점에 대해서 간략하게 정리해보자. OLTPOLTP : Online Transaction Processing 온라인 트랜잭션 처리는 일반적으로 우리가 온라인상에서 사용되는 처리방식이라고 생각하면 편하다.OLTP의 목적으로는 여러 사용자가 동시에 빠르고 정확한 소량의 데이터를 실시간으로 처리하는 방식이다. 주로 회원 로그인, 예약 시스템, 상품 조회 등의 작업이라고 예를 들 수 있다. OLTP 처리방식에는 소량의 데이터를 빠르고 정확하게 찾기 위해 .. 2024. 10. 28.
[MsSQL] DBCC WRITEPAGE를 활용한 Data Page 오류 만들기 및 테스트 Data Page Error메시지 824, 수준 24, 상태 2, 줄 54 SQL Server에서 일관성 기반의 논리적인 I/O 오류가 검색되었습니다: 체크섬이 잘못되었습니다(예상: 0x3e7ed287, 실제: 0x3e7e5287).. 파일 'O:\Data\BAN_TEST.mdf'의 오프셋 0x00000000144000에서 데이터베이스 ID 8에 있는 페이지 (1:162)의 읽기 중 이 오류가 발생했습니다. 자세한 내용은 SQL Server 오류 로그 또는 시스템 이벤트 로그의 추가 메시지에서 확인할 수 있습니다. 이는 데이터베이스 무결성을 위협하는 심각한 오류 상태이며 즉시 수정해야 합니다. 전체 데이터베이스 일관성 검사(DBCC CHECKDB)를 완료하십시오. 이 오류는 다양한 요인으로 인해 발생할 .. 2024. 10. 7.
[MsSQL] SQL Server - Log Shipping 을 활용한 이중화 (DR 구성) SQL Server - Disaster Recovery데이터베이스를 운영하며 제일 중요한 것 중 하나는 HA를 활용한 이중화를 통해 서비스가 끊김없이 동작 할 수 있도록 하는 것이라고 말한 적이있다. HA ( High Availability )를 구성하는 것은 서비스에 당연한 수순이라 생각되지만, 조금 중요도가 낮거나 특정 시간에 한번 정도만 동기화를 해도 된다하면 재해복구 - DR ( Disaster Recovery )를 구성하는 것도 좋은 방법이라 생각이 된다. DR은 서비스의 연속성을 보장하지는 못하지만, 특정 시점으로 복구를 해두는 것으로 서비스의 안정성을 조금이나마 올려줄 수 있다. MsSQL에서 일반적으로 많이 사용하는 DR을 구성 Log Shipping에 대해서 한번 알아보도록 하자. Log.. 2024. 7. 22.
[MsSQL] Table, Index가 속한 File Group 조회 Table, Index가 속한 File Group 조회MsSQL의 데이터는 File Group에 속하여 저장되게 된다.Table / Index처럼 File Group에 포함되는 데이터들에 대해서 어떤 File Group에 속하여있는지 확인하는 쿼리를 공유한다. MsSQL의 저장방식인 File과 File Group 에 대해서는 아래의 링크를 참고바란다.[MsSQL] Database File(Data File, Log File) / File Group 또한, 각 File 마다의 용량 및 경로를 확인하는 쿼리는 아래의 링크에서 확인이 가능하다.[MsSQL] 자주 쓰는 쿼리 - Data File Size, Data File 경로 확인 (MDF, NDF) QueryTable과 Index의 File Group 조회.. 2024. 7. 3.
[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.
반응형