작성
·
17
0
안녕하세요. 좋은 강의 감사드립니다.
강의 내용 중, VARCHAR타입 컬럼에 더 긴 문자열로 UPDATE 작업 시 이전 공간은 delete marking 된다고 하셨습니다.
PostgreSQL의 경우에도 비슷한 매커니즘을 사용하기 때문에 VACUUM을 사용해 단편화 문제를 해결하는 것으로 알고 있고, 찾아보니 OPTIMIZE TABLE문을 통해 비슷한 작업을 할 수 있는 것 같습니다.
PostgreSQL의 경우에는 VACUUM을 주기적으로 수동으로 해줘야 한다고 알고 있습니다만 MySQL의 경우에는 OPTIMIZE TABLE을 수동으로 해줄 필요가 있는지, 있다면 어느 정도 주기가 좋은지 궁금합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. moti0님 반갑습니다!
VARCHAR 열을 포함한 테이블에서 삭제 마킹된 데이터에 대한 정리 주기와 관련해 좋은 질문 주셨습니다. MySQL에서는 OPTIMIZE TABLE
명령어를 사용하여 데이터 페이지를 정리하고, 삭제 마킹된 공간을 최적화할 수 있습니다. PostgreSQL의 VACUUM과 개념은 비슷하지만, MySQL은 다른 GC(garbage collection)나 자동화된 정리 메커니즘이 없으므로 수동으로 조정이 필요합니다.
정리 주기: OPTIMIZE TABLE은 수동으로 수행되도록 설정되어 있으며, 주기적으로 실행하는 것이 좋습니다. 일반적으로 테이블의 사용량과 데이터 업데이트 빈도에 따라 다르지만, 한 달에 한 번에서 몇 달에 한 번 정도 실행하는 것이 권장될 수 있습니다. 다만, 매우 빈번한 업데이트가 있는 경우에는 주기를 더 짧게 설정할 수도 있습니다.
운영 환경 고려: 운영 중인 환경에서는 이 작업이 테이블 활성화에 영향을 미칠 수 있으므로, 사용량이 적은 시간대에 실행하는 것이 좋습니다.
자동화: 백업 정책과 연계하여 정기적으로 OPTIMIZE TABLE
스크립트를 작성해두어 주기적으로 정리할 수 있도록 자동화할 수도 있습니다.
이 링크들에서 더 많은 정보를 참고하실 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.