2010-04-29 4 views
4

큰 응용 프로그램과 데이터베이스가 GZIP 텍스트 데이터를 데이터베이스에 삽입하기 전에 공통점이 있습니까?GZIP를 저장하십시오 : mysql에 ed 텍스트?

실제 텍스트 필드의 전체 텍스트 검색은 다시 압축을 풀기 전에 작동하지 않을 것이라고 생각합니까?

답변

2

:

  • 없이 전체 텍스트, 예
  • 뿐만 아니라 어떤 like
  • , 아니 =, 다른 조작 ...

그래도 데이터베이스를 사용하여 데이터를 저장하고 조작하지 않으면 재미있을 수 있습니다.

참고 : 압축/압축 해제시 CPU가 필요하므로 성능을 측정하려면 몇 가지 벤치 마크를 수행하는 것이 좋습니다.


그런 다음 질문은 다음과 같습니다. 클라이언트 (PHP) 쪽 또는 서버 (MySQL) 쪽에서 압축을 처리하겠습니까?

두 번째 경우에는 MySQL에서 제공 한 COMPRESS() 함수가 있는데,이 함수가 유용 할 수 있습니다.

0

나쁜 아이디어. 디스크 공간이 $ 1GB 미만일 때 약간의 공간을 절약하기위한 여분의 처리는이를 수행하기위한 추가 프로그래밍 시간을 상쇄하지 못합니다 (처음에는 유지 관리가 아니라).

이렇게하면 데이터를 압축 해제/압축해야하기 때문에 데이터베이스 액세스 속도가 느려질 수 있습니다. 인덱스는 압축 된 데이터에서 제대로 작동하지 않습니다. 테이블 스캔을 수행하고, 데이터의 압축을 풀고 비교해야하기 때문입니다. 전체 텍스트 검색도 가능합니다.

이렇게해야하는 경우 gzip을 사용하지 마십시오. 내장 된 COMPRESS 기능을 사용하십시오. 나는 그것이 기본적으로 MySQL의 측의 데이터에 어떤 조작을 수행에서 하나를 방지로이 많이 이루어 보지 적이

+6

응용 프로그램 계층에서 압축하는 데 유용한 몇 가지 사례가 있습니다. 많은 양의 텍스트 데이터를 저장할 때마다 검색 할 필요가 없지만 로그 출력 보관과 같은 훌륭한 후보입니다. 데이터베이스에 도달하기 전에 데이터를 압축하면 1MB 로그가 30k로 줄어 듭니다. 즉각적인 디스크 공간은 싸지 만, mysqldumps를 실행할 때 IO 제한을 고려해야하거나, 앱 서버에서 db 서버로 네트워크 자체를 이동할 때도 고려해야한다.프로덕션을 위해 슬레이브를 설정할 때'mysqldump --master-data' 잠금을 실행했다면 db 크기를 줄이는 것이 좋습니다. –

4

최신 버전 중 하나와 함께 MySQL에서 InnoDB 테이블 유형을 사용하는 경우 compression on an InnoDB 테이블 자체를 활성화 할 수 있습니다.

낮은 수준에서 관리되므로 쿼리 나 기타 사항이 변경되지 않습니다. 내가 읽은 바에 따르면 압축에 대한 약간의 오버 헤드는 디스크 입출력을 줄이고 더 많은 데이터를 메모리의 버퍼 풀에 저장할 수있게 해준다. 그러나 InnoDB가 지원하지 않는 전체 텍스트 검색을 언급 했으므로이 옵션이 아닐 수도 있습니다.

MySQL에도 Archive 테이블 유형이 있지만 색인 생성 기능이 손실됩니다.

또 다른 대안은 MyISAM 테이블을 "팩"하는 것입니다.하지만 테이블을 읽기 전용으로 만들고 다른 옵션들도 압축하지는 않습니다.

관련 문제