ibdata 파일에 비해 너무 큰 것은 무엇입니까?


9

내 ibdata 파일은 매우 큽니다. 적어도 매우 큰 것 같습니다. 이것이 과도하거나 나쁜가?

-rw-rw---- 1 mysql mysql  15G Apr 18 10:11 ibdata1

4
ibdata 파일이 매우 작습니다.
Jeff Ferland

파일을 작은 덩어리 (예 : 4G)로 나누는 것이 성능면에서 더 좋거나 나쁠까요?
nachito

답변:


13

이것이 문제가 될 수있는 경우

show table status테이블에서 실행 하고 Data_free필드가 ibdata1파일 크기의 대부분을 차지하는 경우 공간이 많이 낭비 될 수 있습니다. 많은 양의 삽입 / 삭제로 인해 문제가 발생합니다. 이 경우에 일시적인 삽입 및 삭제가 대량의 데이터를 구성하는 경우 테이블 당 파일이 적합합니다.

하지만 자동 "예"는 아닙니다. InnoDB 파일 내부의 내부 조각화에 대해서는 전 세계에서 많은 이야기가 있지만 파일 당 파일로 파일 시스템에 배치하면 조각화가 데이터베이스 수준 대신 파일 시스템 수준으로 이동합니다.

이것이 일반적으로 문제가되지 않는 이유

InnoDB 파일을 파일이 아닌 파일 시스템으로 생각하십시오. 파일이 많으면 큰 파일 시스템이 필요합니다.

대부분의 경우 파일 시스템은 실제로 테라 바이트 단위의 데이터와 수많은 파일을 처리하도록 확장하는 데 능숙합니다. 때로는 색인화 문제 (예 : 성능에 영향을 미치기 전에 디렉토리의 파일 수에 대한 제한)가 발생하지만 대부분의 경우 최신 파일 시스템은 테라 바이트 범위로 잘 흔들릴 수 있습니다.

InnoDB는 같은 방식으로 작동합니다. 데이터 파일의 크기는 매우 클 수 있습니다. 큰 파일 시스템과 마찬가지로 데이터 백업과 관련된 문제가 발생할 수 있습니다. 그러나 파일 시스템을 여러 파티션으로 분할해도이 문제에 도움이되지 않는 것처럼 innodb를 조작하지도 않습니다. innodb_file_per_table 사용할 수는 있지만 거의 권장하지 않습니다.

파일 시스템과 마찬가지로 더 나은 대답은 내부적으로 한계를 알고 그 안에서 작동하는 것입니다. 인덱스를 이해하고 적절하게 적용하십시오. InnoDB를 분리하려고 시도하지 마십시오.

개념을 건설적으로 전달하기 위해 고군분투하고 있기 때문에 여기에 내가 할 수있는 것보다 더 나은 단어를 빠르게 읽으십시오. 테라 바이트는 빅 데이터가 아니며 페타 바이트입니다 .

고객이 몇 테라 바이트로 데이터웨어 하우스를 실행하고있는 정말 오래된 MySQL 마케팅 슬라이드를 기억합니다. 몇 년 전. InnoDB 또는 MyISAM은 둘 다 작동합니다. 이것은 표준 MySQL 제품입니다.

15GB 데이터베이스를 땀 흘리지 마십시오.


50 % 미만인 것 같습니다. InnoDB free: 7364608 kB
nachito

@nachito 괜찮을 것 같습니다. 파일 시스템을위한 공간이 필요하다고 생각되면 다시 확보하십시오. 성능이 걱정된다면 걱정하지 마십시오. 또한 성능을 위해 데이터베이스 파일을 자체 파티션에 보관하는 것이 가장 좋습니다. 따라서 성능에 중점을두면 사용 가능한 회수가 표시되지 않습니다.
Jeff Ferland

6

ibdata 파일은 축소되지 않습니다-최근에 일부 테이블을 삭제하거나 많은 행을 제거하면 구성의 innodb가 여유 공간을 파일 시스템으로 다시 해제하지 않습니다. 나는 당신에게 제안 할 것입니다 :

  • mysqldump를 사용하여 모든 데이터 백업
  • my.cnf innodb_file_per_table 지시문에 추가
  • MySQL을 다시 시작
  • innodb 엔진을 사용하여 모든 데이터베이스 삭제
  • MySQL을 중지
  • ibdata 파일을 제거
  • rm ib_logfile [01]
  • mysql을 시작하고 모든 것이 정상인지 syslog를 확인하십시오.
  • 덤프 재 장전

이런 식으로 innodb 테이블 / 데이터베이스를 삭제할 때마다 공간을 되 찾을 수 있습니다. 관련 idb 파일은 즉시 제거됩니다.


덤프 및 테이블을 다시로드하지 않아도 축소되지 않는다는 것을 알고 있습니다. 그러나 InnoDB 데이터베이스를 삭제 한 경우 다시 증가하기 전에 "사용 가능한"공간을 사용합니까?
nachito

1
@nachito 네, 그렇습니다.
Jeff Ferland


귀하의 답변은 내 답변이했던 것처럼 문제를 흐리게하지 않고 간단한 제안입니다. +1 !!!
RolandoMySQLDBA

1
답은 데이터 파일에 사용되는 공간을 줄이는 솔루션이지만 그와 관련된 장점에 대한 토론은 아니며 이것이 제가 읽은 질문입니다. 15GB ibdata 파일이 큰 문제입니까?
Jeff Ferland
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.