2014-09-09 4 views
0

저는 수년 동안 MySQl을 기쁘게 사용해 왔으며 관심을 가지고 MariahDB 포크를 따라 왔습니다.MariaDB에는 병합 테이블이 없습니다 - 초대형 테이블에 대한 옵션이 있습니까?

내 프로젝트 중 하나의 서버가 삶의 끝을 도달해야한다가 rehosted 수 - MariahDB을 포함 CentOS는 7 일에 가능성이

내 우려의

하나는 내가 사용하는 병합 테이블 기능의 부족이다 널리. 우리는 100M 레코드/20GB (대부분의 데이터가 압축 된) 및 성장하는 순서로 매우 큰 (적어도 내 기준에 따라) 데이터 세트를 가지고 있습니다. 이것을 데이터 이포크 (data epoch)로 구성된 읽기 전용 압축 myisam "아카이브"테이블과 현재 데이터와 삽입을위한 정규 myisam 테이블로 분리했습니다. 그런 다음 병합 테이블을 사용하여이 모든 것을 확장합니다.

이 데이터베이스에 대해 작동하는 소프트웨어는 문제의 timespan에서 데이터를 검색 할 테이블을 결정하고 timespan이 여러 테이블에 걸쳐있는 경우 위에있는 병합 테이블을 쿼리합니다.

이 나를 위해 몇 가지 작업을 수행합니다

  • 쿼리가 빠른 작은 테이블에 대한 많은이다 - 불행하게도, 인덱스가 가장 일반적인 쿼리에 필요하고, 중복 레코드를 방지하는 것은 상대적으로 복잡하다
  • 쿼리가 여러 테이블에 걸쳐있을 때 사용자가 여러 테이블을 쿼리하고 결과를 조합 할 필요가 없게합니다.
  • 데이터의 90 % 이상을 압축 테이블에 저장하면 많은 디스크 공간이 절약됩니다.
  • 아카이브 테이블을 한 번 백업 할 수 있습니다. 야간 백업에 엄청난 시간, 대역폭 및 스토리지를 절약 할 수 있습니다.

병합 테이블없이 처리하는 방법에 대한 제안 사항은 무엇입니까? 다른 테이블 유형은 myisam이 수행하는 압축 된 읽기 전용 옵션을 제공합니까?

우리는 별도의 테이블로 가야만하고 추가적으로 복잡하게 진행되어이 데이터베이스를 사용하는 여러 프로젝트의 모든 코드를 변경해야한다고 생각합니다.

답변

1

MariaDB 10은 많은 것들을 수행하는 CONNECT storage engine을 소개했습니다. 테이블 유형 중 하나는 TBL이며 기본적으로 MERGE 테이블 유형의 확장입니다. TBL CONNECT 유형은 현재 읽기 전용이지만 필요에 따라 기본 테이블에 삽입 할 수 있어야합니다. 이것은 아마도 최선의 선택이지만 일반적으로 CONNECT 엔진에 익숙하지 않으며 작동 여부를 결정하기 위해 약간의 실험을해야합니다.

+0

고마워 - 나는 그것에 열중하고있다. MariahDB가 myisam 병합 테이블을 처리하는 것처럼 보일 수도 있습니다. 새로운 저장 엔진 용 테이블을 병합하지 마십시오. 테스트 서버를 곧 사용해 보시길 바랍니다. – CoAstroGeek