안녕하세요,
MDF, LDF 용량 관리에 대해 공부하다가 궁금한 것이 있어 질문드립니다.
질문이 총 두가지인데, 알고 계신 분들께서 답변해주시면 감사하겠습니다.
MDF 는 데이터 파일이고, LDF 는 DB 에서 데이터를 읽고 쓰고 등등 이용한 로그가 남는 파일이라고 배웠습니다.
그런데 DB 성능 저하에 대해서 찾아보면 주로 LDF 용량의 문제라고 보았는데요.
1. 그렇다면 MDF 의 용량은 DB 성능과 관련이 없는건가요?
예를들어 PC 드라이브 용량의 반 만큼 MDF 가 차지하고 있다면, 아직 반의 용량이 남아있기 때문에 문제가 없나요?
또한 LDF 용량을 관리하기 위해서는 주기적으로 로그 백업을 통해 관리할 수 있다고 배웠습니다.
2. 그렇다면 MDF 용량을 관리하기 위해서는 어떤 방법이 있나요?
제가 찾아본 결과로는 MDF Shrink 는 가급적이면 사용하지 않는다고 보았습니다.
Shrink 하지 않고 데이터가 삭제되고 남은 공간 등의 사용하지 않는 공간을 정리하기 위해서는 어떤 방법이 있는지 궁금합니다.
제가 일 때문에 SQL 을 갑자기 시작하게 되어 혼자서 아무리 검색을 하더라도 한계가 있는 것 같습니다.
답변 부탁드립니다.
좋은 하루 되세요.
Comment 1
-
이리
2020.10.08 13:57
MDF와 LDF 설정에 대해 최대 용량 크기를 제한할수 있고 자동 증가를 사용할 수 있습니다.
운영중에 용량이 가득차게 되고 파일 크기가 증가하지 않는다면 장애가 발생하기 때문에 미리 용량을 예측하여 점검때 사이즈 증가를 하던가 자동증가 설정을 하고 사용합니다.
다만 자동증가의 경우 파일 증가 작업을 하는동안 해당 파일을 사용중인 DB는 사용이 불가능합니다.
MDF의 경우는 즉시파일초기화 작업이 가능하기 때문에 운영중에 자동증가를 해도 크게 문제가 되지 않지만 LDF는 즉시파일초기화 작업이 불가능하기 때문에 자동증가 크기를 크게 설정 하였다면 파일이 증가하는 시간동안 해당 DB는 사용이 불가능 합니다.
https://docs.microsoft.com/ko-kr/sql/relational-databases/databases/database-instant-file-initialization
data의 삽입, 수정, 삭제가 계속해서 일어나는 테이블이라면 빈공간을 재활용 하게 됩니다.
다만 인덱스의 경우에는 조각화가 발생하기 때문에 REBUILD를 통해서 정리를 할 수 있습니다.
https://docs.microsoft.com/ko-kr/sql/relational-databases/indexes/reorganize-and-rebuild-indexes