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.