바라쿠다와 압축의 장점


12

나는 얼마 전에 MySQL의 파일 형식 Antelope와 Barracuda에 대해 읽었으며 Barracuda와 Compression을 사용하여 이점을 얻을 수 있는지 궁금합니다.

내 서버는 현재 MySQL의 기본값이므로 Antelope를 사용하고 있습니다.
내가 가진 큰 데이터베이스로 인해 메모리에 여러 번 문제가있었습니다. 데이터베이스가 매일 증가하고 있습니다.

압축은 다음과 같은 소수의 사람들에게 이익을주고있는 것 같습니다 :
http://www.mysqlperformanceblog.com/2008/04/23/real-life-use-case-for-barracuda-innodb-file-format/

메모리와 디스크 공간이 더 적을 수 있음을 이해하지만 (이 기사에서 인용 한) 이것을 이해하는지 잘 모르겠습니다.
"상위에 따라 ~ 5 % CPU로드 (80-100 %에서 I / O 대기)
0.01 기본 키를 통한 초 평균 조회 시간 (전환 전 1-20 초) "

데이터가 압축되면 원래 데이터를 다시 얻기 위해 서버의 압축을 풀어야하므로 CPU 사용이 증가한다는 의미가 아니기 때문에이 두 가지가 개선 되지 않을 것이라고 생각했습니다.

읽기 / 쓰기 집약적 인 응용 프로그램에서 이점이 있습니까? 바라쿠다와 압축으로 바꾸시겠습니까?

바라쿠다의 문제를 알고 있습니까?
다음 질문에 대한 대답은 몇 가지 문제가 있지만 2011 년부터 지금부터 해결되었다고 생각합니다. /server/258022/mysql-innodb-how-to-switch 바라쿠다 형식

답변:


14

압축되지 않은 바라쿠다 전용 형식 인 "Dynamic"과 관련하여 주로 Blob (및 매우 동적 필드)이 저장 되는 방식대한 압축 형식이 거의 변경되지 않았습니다 . 컴팩트 대 다이나믹에 대한 문제는 없었으므로 바라쿠다의 다이나믹을 안전하게 추천 할 수 있습니다. 기억 바라쿠다는 오래된 중복 컴팩트 행 형식을 지원합니다 .

언급 한 기사가 너무 오래된 것 같습니다 (5.1) . Percona의 CEO 인 Peter Z.는 주석에 대해 약간 오도 할 수 있다고 언급했습니다. 그렇다고 워크로드에 따라 압축이 큰 이득이되지는 않습니다. 그러나 Facebook과 Oracle 모두에 대해 많은 개선 작업을 수행했기 때문에 5.6 이상 버전에서 사용하는 것이 좋습니다.

보다 최근의 참고 자료로서 다음을 권장합니다.

특히 페이스 북 자료는 제 3 자 (의제 필요 없음)이며 세계에서 가장 큰 MySQL 배포 중 하나이므로 Facebook 자료를 좋아합니다. 보시다시피 SSD 기술과 압축을 결합한 설정이 매우 성공적이었습니다.

그것은 당신에게 도움이됩니까? 작업량, 작업 세트 및 설정 (IOPS, 메모리)에 따라 다릅니다 . IO 바인드, CPU 바인드 또는 메모리 바인드에 따라, 추가 CPU, 메모리 요구 사항 (압축 및 비 압축 페이지가 InnoDB 버퍼 풀에 저장 됨)을 추가하거나 너무 많은 압축 실패가 발생하여 기능 보강으로 인해 압축이 부정적인 영향을 줄 수 있습니다. 대기 시간 또한 데이터 유형에 따라 다릅니다. 압축은 큰 텍스트 얼룩으로 많은 도움이되지만 이미 압축 된 데이터에서는 쓸모가 없을 수 있습니다.

필자의 경험에 따르면 실제로 압축은 성능의 성배이며 만족스러운 사람들이 있지만 다른 경우에는 이득을 얻지 못하면서 압축되지 않은 데이터로 되돌려 야했습니다. 쓰기 작업량이 너무 많으면 압축 환경이 좋지 않은 것처럼 보일 수 있지만 특정 경우 CPU 바인딩 및 메모리 바인딩이 아니지만 iops 바인딩은 도움이되지 않을 수 있습니다.

일반적으로 결과를 예측하는 것은 매우 어렵습니다. 일반적으로 벤치마킹을 위해 테스트 환경을 설정 한 다음 왜 더 나은 결과를 얻었는지 또는 더 나쁜 결과를 얻었는지 (그리고 다른 블록 크기 등으로 재생할 수있는 방법 등) 발견해야합니다. 바라쿠다는 완전히 안전합니다. 압축은 당신을위한 것일 수도 아닐 수도 있습니다. 그리고 당신은 항상 같은 다른 압축 방법을 실험 할 수 클라이언트 측 압축 또는 기타 (당신이 CPU 바운드 끝날 경우, 예를 들어) 모양의 RocksDB 및 TokuDB 같은 3 자 엔진 압축이 큰 우선 순위 인을, 그것은 초점이 맞춰으로, InnoDB가 처리 할 수있는 것보다 더 큰 데이터 세트에 대한 성능.

간단히 말해 : 바라쿠다를 사용하는 주된 이유는 BLOB 처리, innodb_large_prefix호환성 (큰 인덱스) 및 압축입니다. MySQL 8.0에서 동적은 이제 기본 파일 형식입니다.


1
이것은 정말 굉장하고 명확한 대답입니다! 그것은 모든 의미가 있으며 정확히 내가 원하는 대답 유형입니다. 당신은 MySQL 5.6 (최근에 업그레이드 된 것)을 언급하고 Facebook을 다른 사람들보다 먼저 극복해야하기 때문에 Facebook을 예로 들었습니다. 불행히도 테스트 환경은 프로덕션과 동일한 CPU / IO / RAM로드를 갖지 않기 때문에 먼저 테스트하기가 쉽지는 않지만 실제로 시도해야합니다! 시간 내 주셔서 대단히 감사합니다.
Nuno

테이블 수준에서 행 형식을 선택할 수 있으므로 프로덕션에서 테스트하기위한 유연성을 제공 할 수 있습니다 (별도의 시스템에서 적절한 테스트를 마친 후). 그러나이 방법은 잠재적으로 디버깅 및 벤치마킹을 어렵게합니다.
jynus

예, 아마도 몇 개의 테이블을 먼저 변환하려고 시도 할 수 있습니다 (아마 크지 않거나 사용되지 않은 테이블). 그러나 큰 경우에는 한 번에 모든 다운 타임으로 전환하는 다운 타임이 아닌 몇 번의 다운 타임이 필요합니다. 최선의 접근 방식이 무엇인지 확인해야합니다. 그러나 왜 디버깅이 더 어려워 지는지 이해하지 못합니다. 여기서 정확히 무엇을 의미합니까? 대단히 감사합니다.
Nuno

1
온라인 방식으로 테이블을 다시 작성하는 pt-online-schema-change percona.com/doc/percona-toolkit/2.2/… 와 같은 도구가 있습니다 . 방금 일부 테이블을 혼합하면 엔진 변경으로 인한 CPU / 메모리 / iops 변경을 측정하기가 더 어려워 질 수 있으며 정상적인로드 변경과 다시 만들 때 캐싱 변경으로 인해 변경 될 수 있습니다. 하드웨어가 다른 다른 컴퓨터에서는보기가 어렵 기 때문에 행운을 빕니다!
jynus

ZFS에서는 파일 시스템에서 LZ4를 사용할 때 그다지 좋지 않습니다.
Denis Denisov
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.