본문 바로가기
반응형

DATABASE/MsSQL41

[MsSQL] Clustered 연구 노트 - 1. Heap Table 구조 파헤치기 (Page, Index) MsSQL Clustered 연구 노트 MsSQL의 테이블은 2가지 데이터 저장 자료구조를 가지고 있다. 하나는 데이터를 비어있는 Page에 데이터를 담는 Heap 구조와 Clustered Key 값을 가지고 정렬하여 저장하는 Clustered 구조를 가지고 있다. 이번에 작성하는 MsSQL Clustered 연구노트에는 Heap과 Clustered의 데이터가 저장되는 자료구조와 각 구조의 차이에 대해서 한번 Page단위까지 찾아가 보도록하겠다. 테스트를 위해 파일 그룹과 ndf파일을 분리하여 생성하였다. Table을 위치할 DATA 파일 그룹과 Index를 각각 위치시킬 INDEX_01 ~ INDEX_03 파일 그룹을 생성하여, 데이터의 변화 과정에 대해서 확인해보도록 하겠다. Test Table 만들.. 2024. 3. 12.
[MsSQL] Database Backup이란? - Full / Differential / Log Backup Backup 백업이란, 데이터베이스 또는 해당 트랜잭션 로그의 데이터 또는 로그 레코드를 다른 디바이스 등에 복사하여 두는 것이다. 데이터베이스 백업하고 해당 백업파일을 안전한 저장공간에 보관하고 있는 것이 치명적인 데이터 손실로부터 데이터를 유일하게 보호 할 수 있는 수단이다. MsSQL에서는 Database 혹은 Data File단위의 백업만 가능하다. 즉, 테이블 단위의 백업은 불가하다. MsSQL의 데이터베이스 백업에는 크게 아래와 같은 3가지가 있다. 전체 백업 - Full Backup 차등 백업 - Differential Backup 트랜잭션 로그 백업 - Transaction Log Backup Full Backup (전체 데이터베이스 백업) MsSQL의 데이터베이스 백업하는 방법 중 해당 .. 2024. 2. 24.
[MsSQL] 모든 DB에 한번 쿼리 던지기 / DB 모를 때 (SP_MSFOREACHDB 활용하기) 자주 쓰는 쿼리 - SP_MSFOREACHDB 특정 테이블을 찾고 싶은데, 어떤 데이터베이스에 있는지 모를 때, 혹은 여러 데이터베이스들을 돌아가며 파일사이즈를 조사할 때 같이 모든 데이터베이스에 같은 쿼리를 조회하고 싶을 때가 있다. 이럴 때 쓸수있는 시스템 프로시저로 단순 조회작업 뿐만 아니라 프로시저에 활용하여 로그성 데이터, 반복적인 쿼리 조회등을 단순화 하여 업무 능률을 향상 할 수 있다. Query 사용방법은 매우 간단하다. EXEC MASTER.dbo.SP_MSFOREACHDB ' use ? begin [QUERY] end ' SP_MSFOREACHDB의 파라미터로 ' use ? begin [쿼리문] end ' 값을 넣어주면, use ? 부분에 모든 데이터베이스가 한번씩 들어가 쿼리문을 실행.. 2024. 2. 13.
[DBA][MsSQL] Index 사용량 조회 / 미사용 Index 확인 자주 쓰는 쿼리 - Index 사용량 조회 테이블 조회 효율을 위해 인덱스를 생성하여 사용하는 것은 당연하다. 하지만 시간이 지나고 업무 계획의 방향성이 바뀌다보면, 이렇게 생성하여 사용하던 인덱스들 중 사용하지 않게 되는 인덱스가 생길 수 있다. 이렇게 사용하지 않는 인덱스를 한번씩 정리를 해주게 된다면, 테이블의 DML작업에 대해 효율이 조금이나마 올라갈 수 있게 되는데, 이럴 때 도움이 될 만한 인덱스 사용량 조회 쿼리에 대해서 한번 소개해보도록 한다. Query 인덱스 사용량을 조회하는 쿼리는 아래와 같다. use [DATABASE NAME] select db_name(s.database_id) as database_name, object_name(s.object_id) as table_name,.. 2024. 2. 10.
[MsSQL] Database 복구 모델 - Simple, Full (단순 모델, 전체 모델) Database Recovery Models MsSQL의 데이터베이스 복구 모델은 데이터베이스의 트랜잭션 로그의 유지관리를 제어하는 중요한 속성이다. 단순 모델(Simple), 전체 모델(Full) 이냐에 따라 아래와 같은 내용을 제어할 수 있다. 트랜잭션이 기록되는 방법 트랜잭션 로그의 백업이 필요하며, 허용되는지 여부 데이터베이스 복원 시 작업의 종류 (트랜잭션 로그 백업의 사용) Simple Recovery Model 단순 모델은 말 그대로 단순한 복구 모델이다. 단순 모델의 가장 핵심은 트랜잭션 로그를 저장하고 있지 않다는 점이다. 정확히는 검사점(Check Point)이 발생 할 때 마다 트랜잭션 로그를 비워주어 로그 공간을 자동으로 회수한다. 자동으로 회수되는 로그 공간으로 인해, 트랜잭션 로.. 2023. 10. 16.
[MsSQL] OUTPUT - Update 사용 시, 변경 전/후 행 반환하기 (deleted/inserted) OUTPUT Output 구문은 insert, update, delete, merge 문과 함께 사용되며, 각 DML문에 처리되는 행을 반환하는 문법이다. 각 행을 반환하여, Into 구문를 통해 TABLE 혹은 TEMP TABLE 에 해당 행을 삽입한다. Update 문 사용 시 Output update TABLE_A set a_column1 = 'value3' -- output 구문 output deleted.a_column1, inserted.a_column2, deleted.a_column3 + inserted.a_column3 -- into 구문 into TABLE_B (b_column1, b_column2, b_column3) where [조건] update문 사용시, update ~set과 .. 2023. 9. 7.
[MSSQL] 커서(CURSOR) - 행(ROW) 단위 처리의 사용 법 Intro 안녕하세요. 초보 DBA 다뉴입니다. 처음 Database로 업무를 하고 제일 많이 사용했던 것이 오늘 소개할 커서라는 것 인거 같은데요. 나중에 알고보니 커서를 사용하기에 느려지는 트랜잭션들이 많다는 것을 알게되고, 최대한 줄이려고 노력한 것도 이 커서입니다. 하지만 필요할 때 사용해야 하는 커서(cursor)에 대해서 알아두면 좋으니 한번 알아보도록 하죠. Cursor 커서(Cursor) 란? 커서는 데이터의 처리를 집합단위가 아닌 행 (ROW)단위로 처리하기 위해 사용합니다. 일종의 반복문이죠. 데이터를 행단위로 처리하기에 행단위 작업에 대한 장점이 있지만, 일괄 처리를 하지않고 각 행의 조회, 처리, 커밋 등의 단위작업이 포함되게 되므로 속도가 느려질 수 있습니다. BOF (Begin .. 2023. 9. 6.
[MsSQL] OUTPUT - Delete 사용 시, 삭제 된 행 반환하기 (deleted) OUTPUT Output 구문은 insert, update, delete, merge 문과 함께 사용되며, 각 DML문에 처리되는 행을 반환하는 문법이다. 각 행을 반환하여, Into 구문를 통해 TABLE 혹은 TEMP TABLE 에 해당 행을 삽입한다. Delete 문 사용 시 Output delete from TABLE_A -- output 구문 output deleted.a_column1, deleted.a_column2, deleted.a_column3 ... -- into 구문 into TABLE_B (b_column1, b_column2, b_column3 ...) where [조건] Delete 문 사용시 delete 와 조건문 사이에 output, into 구문을 사용한다. deleted.. 2023. 9. 5.
[MsSQL] OUTPUT - Insert 사용 시, 삽입 된 행 반환하기 (Inserted) OUTPUT Output 구문은 insert, update, delete, merge 문과 함께 사용되며, 각 DML문에 처리되는 행을 반환하는 문법이다. 각 행을 반환하여, Into 구문를 통해 TABLE 혹은 TEMP TABLE 에 해당 행을 삽입한다. Insert 문 사용 시 Output insert into TABLE_A (a_column1, a_column2, a_column3 ...) -- output 구문 output inserted.a_column1, inserted.a_column2, inserted.a_column3 ... -- into 구문 into TABLE_B (b_column1, b_column2, b_column3 ...) values (value1, value2, value3.. 2023. 9. 4.
[MsSQL] 자주 쓰는 쿼리 - Data File Size, Data File 경로 확인 (MDF, NDF) Intro 안녕하세요. 초보 DBA 다뉴입니다. 데이터베이스를 사용하다 보면 역시나 마주하게 될 문제, 바로 용량 이슈인데요. MsSQL의 MDF, NDF라는 데이터베이스 파일에 데이터를 저장합니다. MsSQL의 파일 구조에 대해서는 아래의 글을 참고해주세요! [MsSQL] Database File(Data File, Log File) / File Group Intro 안녕하세요. 초보 DBA 다뉴입니다. 오늘은 MsSQL의 데이터베이스 파일과 파일 그룹에 대해 알아보도록 하겠습니다. Database File File의 종류 데이터베이스 파일의 종류로는 크게 데이터 파일(Data da-new.tistory.com 각 데이터베이스의 MDF, NDF가 얼마 만큼의 용량을 사용하는지, 또 어느 경로에 파일이 .. 2023. 9. 2.
반응형