Q&A

CMS/프레임워크 Rhymix 2.1
개발 언어 PHP 7.4

php7.4v로 만든 파일을 위젯페이지에 넣어 사용하는데요.

mariadb 11v에서 order by number desc  사용시 서버용량이 2G 이상 갑자기 줄어들어 용량 부족이 발생하는데요.

임시방편으로 터미널에서 

sudo find /var/lib/docker/containers/ -name "*-json.log" -exec sh -c 'cat /dev/null > "{}"' \;  하면 temp 또는 log 용량이 비워진다고 해서 했더니, 4G가 확보되네요. 그런데 또 금새 다시 용량이 만땅됩니다.
mysql 5.5v (utf8_general_ci )에서는 이런일 없었는데, mariadb 11v (utf8mb4_unicode_ci ) 으로 옮긴후  발생합니다.

구글링해보니 mariadb 11v 는 order by  사용시 문제가 있다고도 하는데,

매번 터머널에 들어가서 반복해서 삭제할 수도 없고 근본 조치 방법이 있을까요?

 

xone Lv. 1

댓글 1

  • 도커 로그파일을 삭제했더니 용량이 확보되었다는 말씀이죠? 그 로그파일에 대체 어떤 내용이 그렇게 많이 기록되었는지 확인해 보셨으면 좋았을 텐데요. ㅎㅎ

     

    원론적으로... 용량이 큰 테이블에서 인덱스를 잘 안 타는 ORDER BY 쿼리를 하면, 그 많은 데이터를 메모리에서 정렬하기에는 메모리가 부족하기 때문에 임시파일을 만들어서 filesort를 하게 됩니다. 물론 쿼리 속도는 안드로메다로 가버리죠. 이런 현상이 발생하는 조건은 DB 튜닝값이나 테이블 최적화 상태에 따라 다르고, 버전마다 sort_buffer_size 등의 기본값도 다 다릅니다.

     

    그런데 삭제하신 것은 filesort에 사용하는 임시파일이 아니라 그냥 도커 로그파일인 것 같으니, 위의 원론적인 설명은 참고만 하시고 좀더 구체적인 로그 내용을 살펴보셔야 할 것 같습니다. 단순 임시파일이 아니라 에러를 왕창 뿜고 있었을 수도 있거든요.

     

    그리고 php7.4v, mariadb11v 같은 표현은 일반적으로 버전을 표기하는 방법과 다르기 때문에 검색에 어려움을 겪거나 혼동이 발생할 수 있습니다. MariaDB 11 버전대만 해도 11.4, 11.8 등 여러 가지가 있는데 어느 버전에 문제가 있다는 것인지 모르겠고요. 공개적인 장소에서는 공식적인 표기법을 따르시는 것을 추천드려요.^^