티스토리 뷰

* 개요

- 하드 디스크 용량이 꽉 차서 

ERROR 1114 (HY000) at line 5602: The table 'Sample' is full

오류 발생시키며 더 이상 insert 불가

- 문제는 안 쓰는 테이블을 delete 또는 drop 해도 하드디스크가 남지 않는다는 것

=> ibdataX 파일의 용량이 줄어들지 않음.

- 관련 검색어 InnoDB ibdata1 never shrinks after data is removed




* 테이블을 지운다고 해서 ibdata 파일의 용량이 줄어 들지는 않는다고 함

http://www.mysqlkorea.com/gnuboard4/bbs/board.php?bo_table=community_03&wr_id=3458


https://stackoverflow.com/questions/1270944/mysql-innodb-not-releasing-disk-space-after-deleting-data-rows-from-table?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa


https://askubuntu.com/questions/975429/mysql-is-stopping-because-of-ibdata1-file-size


- optimize 등 명령을 해도 마찬가지.

- delete from... 으로 불필요한 레코드 제거하여 DB 사용량을 줄이고, 

해당 드라이브의 용량을 어떻게든 확보하면 (다른 프로그램을 지우든지...)

지워진 레코드 부분을 사용하게 되므로 다시 사용 가능함.

( 10 메가 정도 확보 후 재동작 확인 )

drop table 은 안됨 (기타 2 참고)


하지만 애초에 지울 테이블, 레코드 없거나, DB 저장 하드디스크에 용량을 확보할 방법이 없다면 해당없음.



* 유일한 방법은, 데이터를 백업하고 다시 스키마를 만드는 것.

https://vdachev.net/2007/02/22/mysql-reducing-ibdata1/


https://www.calidade.systems/en/2017/07/04/how-to-reclaim-or-shrink-unused-space-in-mysql-ibdata1-file/


* 예방하는 방법은...

- 지워가면서 쓰는 테이블(로그 저장용 테이블...), 기타 쓸데 없는 테이블은 미리 정리하면 지워진 부분에 내용을 기록하게 되어 ibdata 파일이 커지는 것을 늦출 수 있음.

- 테이블 한계를 설정하거나 . .

- InnoDB 아닌 MyISAM 으로 만들거나 ...

- ibdata 파일을 테이블 별로 생성하는 방법 (innodb_file_per_table  옵션)

http://www.mysqlkorea.com/sub.html?mcode=manual&scode=01&m_no=21860&cat1=14&cat2=422&cat3=437&lang=k


https://stackoverflow.com/questions/35148069/mysql-table-data-physical-fragmentation

https://dba.stackexchange.com/questions/16341/how-do-you-remove-fragmentation-from-innodb-tables/16350?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa



- 그밖에 단편화 방지 방법

http://www.mysqlkorea.com/sub.html?mcode=manual&scode=01&m_no=21911&cat1=14&cat2=422&cat3=448&lang=k


http://www.mysqlkorea.com/gnuboard4/bbs/board.php?bo_table=community_03&wr_id=4883

http://blog.naver.com/PostView.nhn?blogId=eqelizer&logNo=220329880452&parentCategoryNo=&categoryNo=64&viewDate=&isShowPopularPosts=false&from=postView



* 참고 : 테이블 사이즈 확인 쿼리

http://dimdim.tistory.com/entry/MySql-DB%ED%85%8C%EC%9D%B4%EB%B8%94-%EC%82%AC%EC%9D%B4%EC%A6%88-%ED%99%95%EC%9D%B8%EC%9D%84-%EC%9C%84%ED%95%9C-%EC%BF%BC%EB%A6%AC


- 정확한 수치는 아니고, 추정치



* 기타 

- 분할된 ibdataX 파일의 크기를 줄이는 방법

https://www.thegeekstuff.com/2016/02/mysql-innodb-file-per-table/


- maria db 단편화 제거 옵션?

https://mariadb.org/defragmenting-unused-space-on-innodb-tablespace/



* 기타 2

- ibdata 파일 내에서  Delete 로 지워진 레코드 공간은 재활용 하지만,

Drop 으로 테이블 통째로 날린 공간은 활용하지 않음



- 테이블이 너무 커 delete 보다 빠른 drop 으로 테이블 지우고 다시 생성했을땐 그 전에 있던 공간은 활용되지 않음.

그래서 drop 된 테이블을 다시 살려 delete 해보려는 시도도 했음.

https://serverfault.com/questions/103726/how-to-undo-drop-table

https://twindb.com/recover-after-drop-table-innodb_file_per_table-is-off/

https://dba.stackexchange.com/questions/23251/is-there-a-way-to-recover-a-dropped-mysql-database?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa


그러나 복잡한것 같아 그냥 포기.


* 기타3 : 오라클 tablespace

http://hongtaey.tistory.com/entry/OracleTablespace-fragmentation-%EC%98%A4%EB%9D%BC%ED%81%B4-%ED%85%8C%EC%9D%B4%EB%B8%94%EC%8A%A4%ED%8E%98%EC%9D%B4%EC%8A%A4-%EB%8B%A8%ED%8E%B8%ED%99%94

http://noritersand.tistory.com/22/

http://kaludin.egloos.com/v/2919398

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함