하나의 필드가 긴 텍스트 인 오히려 큰 mysql 데이터베이스 테이블을 가지고 있는데, 나는이 필드에서 compress를 사용하기를 원한다. 이미 할당 된 저장 공간이므로 공간 절약 효과가 없습니다. 스토리지 엔진은 무의미합니다.mysql은 텍스트 필드를 압축하여 현재 데이터베이스의 디스크 공간을 줄입니까?
2
A
답변
3
InnoDB의 압축 된 행 형식은 몇 가지 전제 조건이 있습니다 당신의 my.cnf 파일에
innodb_file_format=Barracuda
합니다.innodb_file_per_table
my.cnf 파일에 있습니다. 중앙 테이블 공간 (ibdata1)에 저장된 테이블에서는 압축이 작동하지 않습니다.압축 형식을 사용하도록 표를 변경하십시오.
ALTER TABLE MyTable ROW_FORMAT=COMPRESSED
압축 비율은 데이터에 따라 다릅니다.
참고 :을 ibdata1 중앙 테이블 스페이스에 저장된 테이블을 가지고, 당신은 파일 당 테이블에 테이블을 재구성하는 경우, 을 ibdata1 축소하지 않습니다! ibdata1을 줄이는 유일한 방법은 모두 InnoDB 데이터를 덤프하고, MySQL을 종료하고, 테이블 공간을 rm하고, MySQL을 다시 시작하고, 데이터를 다시로드하는 것입니다. 귀하의 의견을 다시
:
아니, 당신이 쿼리를 수행 방식을 변경하지 마십시오.
네, 시간이 오래 걸립니다. 시스템에 따라 시간은 다릅니다. 나는 작은 테이블을 먼저 시도해 볼 것을 권한다.
작성시 압축 할 때 CPU 리소스를 낭비해야하며 읽을 때 압축을 풀어야합니다. 데이터베이스 서버가 추가 CPU 리소스를 갖는 것은 일반적입니다. 데이터베이스는 일반적으로 I/O로 제한됩니다. 그러나 속도가 병목 현상이 될 수 있습니다. 다시 말하지만, 그것은 시스템, 데이터 및 사용에 따라 다릅니다. 나는 그것이 당신이 그물 승리 여부를 조심스럽게 테스트하는 것이 좋습니다.
이렇게하면 어쨌든 테이블에서 데이터를 선택하는 방식이 변경됩니까? 데이터베이스가 1 테라 바이트 크기라면 alter table 명령문이 오래 걸릴까요? – user121196
Karwim : 쿼리가 느려 집니까? 나는 파리에서 압축을 풀 것이라고 추측합니까? – user121196
내 대답을 내 대답으로 옮겼습니다. –