MyISAM or innodb 디비문제..ㅠㅠ

MyISAM or innodb 디비문제..ㅠㅠ

QA

MyISAM or innodb 디비문제..ㅠㅠ

본문

MyISAM 디비로 그누보드를 사용하다 잦은 테이블 '사용중' 에러로 innodb로 변경하고 사용중입니다.

innodb변경후에는 테이블 '사용중'에러는 발생하지 않는데..

 

문제는 MyISAM 에서 백업 받으면 200메가정도되는 디비인데 

 

innodb로 변경후 업로드하면 거의 2기가 이상으로 용량을 잡아먹는 문제가 있습니다.

 

혹시나해서 innodb로 업로드한 디비를 다시 백업받으면 200mb 정도인데..

 

이부분은 어쩔수 없는 부분인가요?

 

혹 innodb에서도 용량을 적게 설정할수 있는 방법이 있는지 문의드립니다.

-------------------

기타.

윈도우 서버에서 xampp 로 그누보드를 이용중인데요.

 

테이블 '사용중' 에러의 원인이 mysql root 비번 변경 혹은 사용자 추가후 비번변경시

 

mysql / mysql 디비쪽에 문제가 있다는 글을 본거같은데

 

원천적으로 해결할 수 있는 방법이 있을까요?

 

phpmyadmin 에서 비번을 변경해서 테이블에 글을 쓰고 지우고할때 권한문제(?)로 발생하는 문제인지...

 

혹시 아시는분 조언좀 부탁드립니다.

이 질문에 댓글 쓰기 :

답변 1

글쎄요. '사용중' 이라는 메세지가 어디서 출력되는지는 모르겠지만

커스텀 안된 기본 그누보드5 나 mysql 에서 내보내는 메세지 같지는 않습니다.

아니면 xampp 에 있는걸까요?

 

InnoDB 는 트랜잭션을 위한 엔진이고 MyISAM 엔진은 그것이 아닌만큼

동시성 보장을 위해 유사한 상황을 감지해서 임의로 어디에선가 메세지를 뿌려주는 것이라 예상해봅니다.

그리고 그게 맞다면 다시 돌고돌아 해당 기능을 mysql 차원에서 처리할수 있는게 InnoDB 엔진 입니다.

 

용량 같은 경우는 다운받은 상태의 로컬 .sql 파일과 어떤 부분을 비교를 하신건가요?

기본적으로 mysql 데이터 파일인 .frm, .ibd 등등 파일 디렉토리 쪽의 총 용량은

로컬 .sql 파일과 같을수가 없고, mysql 관리하에 엔진타입에 따른 추가 필요기능들을 부여하면서

크기가 더 커진다고 보는게 맞습니다.

 

그누보드5 초기 설치상태에서 글 2~3개 작성 후 db 의 sql 을 export 해보니 

해당 sql 파일은 118074 바이트가 나오지만

실제 mysql server 의 data 디렉토리의 db 디렉토리쪽의 파일들의 용량 합은 7671499 가 나옵니다.

 

InnoDB 엔진이 MyISAM 보다 하는일이 많기 때문에 성능은 상대적으로 조금 떨어집니다만

그만큼 안정성을 보장하기 때문에 특수한 용도가 아닌이상

용량에 대한 부분을 이해하고 그대로 InnoDB 를 사용하는게 낫지 않나 생각됩니다.

 

답변 감사합니다. '사용중' 에러는 캡쳐해둔 상태가 아니라 검색해서 링크 첨부합니다.
https://vlog.tion.co.kr/cant-find-file-mysql-plugin-frm-when-start-mysql/
테이블 데이터정렬 항목에 위 샘플 화면과 같이 '사용중' 이라고 나오는 경우가 많습니다.

사용중 에러가 빈번하게 발생하는 테이블은
g5_config -> 메인페이지등 테마 불러오기가 안됨.
g5_board -> 일부 게시판 접근 불가
g5_visit -> 카운터 영향
g5_login -> 로그인 영향.

기타
g5_write_게시판아이디 -> 해당 게시판 접근 불가

위주로 MyISAM 사용시 '사용중' 에러가 빈번하게 발생합니다.

운영중인 그누보드에 봇 및 방문빈도가 높아서 발생하는 문제인거 같은데

InnoDB로 변경후에는 전혀 문제가 안생깁니다.
------------

용량의 경우는

백업.sql 용량이 200mb 일경우

MyISAM 디비로 업로드시 -> 디스크 공간 : 200~300nb 사용
InnoDB 디비로 업로드시  -> 디스크 공간 : 1.5GB~2.5GB 사용

디스크 사용 공간을 얘기한것입니다..

거의 10배 가까이 차이가나다보니 호스팅을 이용중이라 용량에 대한 고민이 많이 생기네요..


------------
디스크 용량을 고려하면

MyISAM 사용하는게 맞는거 같은데 하루에도 수십번씩

'사용중'에러가 발생하려 복구를 진행 해야 되는 상황이고

g5_board쪽 에러가 발생하여 복구를 진행하면 일부 게시판 유실이 되서 다시 생성 해야 되는등등 ㅠㅠ

어렵네요 ㅠㅠ

'사용중' 부분은 남겨주신 링크에서 확인해봤고 이미 검색해서 아시겠지만
테이블 내 오류가 생겨서 REPAIR TABLE 구문 또는 myisamchk 명령이 필요한 상황일 경우인것 같습니다.
https://blog.yannisassael.com/2015/05/phpmyadmin-says-table-in-use-mysql/

부하를 많이 받았거나 많은 부하가 없었음에도 비효율적인 쿼리가 누적되어
시스템이 견디지 못하고 테이블에 오류를 발생시키는것 같은데
이런 문제는 엔진타입이 InnoDB 여도 발생하는것 같습니다.
https://stackoverflow.com/questions/57689767/table-in-use-on-a-mysql-server-in-phpmyadmin

용량의 경우
7671499 바이트는 디렉토리쪽 파일들의 합이라고 말씀드렸습니다.
어떻게 비교한다는 자세한 설명이 없었기에 임의로 파일과 디렉토리의 기준을 잡고 설명한 것입니다.
해당 .sql 을 ENGINE=MyISAM 으로만 변경 후 새 db 에 적용했을때는
1081055 바이트로 디렉토리쪽 파일들의 합이 나옵니다.

먼저 엔진타입과는 무관하게
사용되는 쿼리를 점검해 보고 필요할 경우 쿼리 최적화를 수행해보세요.

그다음 테이블 오류 현상과는 무관하게
용량의 경우는 별다른 방안이 없을것 같습니다.
현재 운영이 부담 된다면
다른 호스팅 또는 DBMS 사용을 한번 고려해보거나 (이부분은 적지않은 테스트가 필요합니다.)
호스팅이 아닌 로컬PC 를 서버로 사용하는 방법 밖에 없을것 같네요.

답변감사합니다.
일단 InnoDB로 사용하는게 안정성에서 유리한거같아 그대로 사용하기로 했구요.
윈도우서버환경이라 c: / d: 로 나누고 d: 드라이브를 mysql 전용으로만 설정.
1테라 ssd하드인데 백업받은 .sql 을 전부 InnoDB로 업로드하니 800gb정도 공간을 차지 하는거 같습니다.
사용공간 : 약 800mb , 사용 가능한 공간: 약 200mb

신기한게 d: 드라이브 등록정보에서 디스크 압축을 실행하니... 거의 70% 이상 공간 확보가 되는거같습니다.

사용공간 : 약 300mb , 사용 가능한 공간 : 약 700mb

이 방법이 맞는지는 모르겠는데 사이트 접속등 문제 없이 돌아가고
속도도 조금 빨라진듯한 느낌(?)입니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 123,123 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT