MariaDB

MySQL 데이터베이스를 개발한 개발자들이 효율적인 데이터베이스 솔루션과 최고수준의 서비스를 제공하기
위하여 기존 MySQL를 기본으로 확대 발전시킨 OSS DBMS으로 기존 MySQL과 99% 호환이 가능하며, 추가적인 다양한 기능을 제공(백업, 모니터링 등)

주요 기능 및 성능

  • Global Transaction ID쉽게 Replication을 설정하고 새로운 Slave를 쉽게 연결 가능, Multi Source Replication 지원
  • Mulit-source Replication하나의 Slave에 여러 Master의 데이터를 복제 가능
  • Parallel SlaveMySQL 5.6의 기능 중 하나로 Master의 transaction과 마찬가지로 Slave에서도 병렬로 transaction를 처리
  • Spider Storage Engine(샤딩 기능 제공)
  • 통계는 각 SQL문에 대한 최적의 실행 계획을 선택하는 쿼리 최적화 프로그램에 의해 사용
  • 데이터의 쿼리 최적화 프로그램은 복잡한 다중 테이블 쿼리에 더 나은 쿼리 실행 계획을 선택
  • Online Alter(시스템을 중단하지 않고 스키마의 많은 변경 작업 가능) 제공

Replication

Replication enhancements

  1. Global Transaction Id
    Replication에서 새로운 Global Transaction Id(GTID)를 소개

    1. 쉽게 Replication을 설정하고 새로운 Slave를 쉽게 연결 가능
    2. Multi Source Replication과 같이 다른 Replication 기능을 지원
, GTID의 도입으로 Slave들의 충돌 없이 안전하게 사용 가능
  2. Mulit-source Replication
    1. 하나의 Slave에 여러 Master의 데이터를 복제 가능 (기존 Slave는 하나의 Master만 설정이 가능함)
    2. 하나의 서버에서 전체 복사본의 데이터를 사용할 때 유용함
    3. tumblr, Microblog Site, Yahoo의 일부는 이미 사용 중
  3. Parallel Slave
    • MySQL 5.6의 기능 중 하나로 Master의 transaction과 마찬가지로 Slave에서도 병렬로 transaction를 처리 따라서 Slave에서의 지연 확률이 현저히 낮아짐

Replication enhancements

mariadb img-1
mariadb img-1

MariaDB Storage Engine

Storage Engine

  1. Cassandra Storage Engine
    • MariaDB에 데이터를 Cassandra 데이터와 결합 하여 Cassandra 데이터에 읽기 쓰기 수행 가능
    • Cassandra Ring에 많은 MariaDB 서버를 연결하여 고가용성 클러스터를 생성
  2. Connect Storage Engine
    • 데이터가 MariaDB에 저장된 데이터의 부분인 것 처럼 파일 또는 ODBC 하위의 데이터를 처리
  3. Sequence Storage Engine
    • 메모리에 저장되어 쿼리에 사용할 수 있는 Sequence를 생성
  4. Spider Storage Engine
    • 메모리에 저장되어 쿼리에 사용할 수 있는 Sequence를 생성
  5. TukuDB
    • 쓰기 속도의 고성능 워크로드를 위해 설계된 스토리지 엔진
    • fractal tree indexes를 사용

Storage Engine 종류

maria img-3

  1. InnoDB(XtraDB)
    • InnoDB를 대체 하는 MVCC기반의 Storage Engine
    • 멀티코어 시스템에서 더 나은 성능과 높은 워크로드를 가짐
    • MariaDB에서는 FEDERATEDX라는 새로운 네이밍을 사용
  2. Aria
    • 차세대에 MyISAM 스토리지 엔진을 대체하기 위해 개발
    • MyISAM에서 파생되었으며, Crash-Safe를 목표로 진행 중, 부분적으로 Transaction을 제공
  3. PBXT(트랜잭션 제공)
    • Transaction Log에 선 기록 없이 바로 DB에 기록
    • 완전한 ACID를 준수함
    • MariaDB 5.5부터는 더 이상 유지보수를 제공하지 않으므로 기본 스토리지 엔진에서 제외
  4. OQGRAPH
    • Graph 기능을 제공하는 스토리지 엔진
    • (MariaDB 5.5에는 기본으로 Plugin이 들어있지 않음)
  5. FEDERATED (트랜잭션 제공)
    • 원격 DB 서버 테이블에 네트워크로 접근하는 스토리지 엔진으로 기존
    • 원격 DB에서 로컬 DB로 결과 값만 전달한다는 점에서 MySQL에 기본으로 장착된 FEDERATED와 
가장 큰 차이점이 있음
  6. SphinxSE
    • Full-Text Searching이 필요할 때 사용할 수 있는 스토리지 엔진.
    • 단, SphinxSE은 어디까지나 Sphinx의 일부분이며, 스토리지 엔진 사용을 위해서는 Sphinx 데몬을 
별도로 설치 필요

Staple Storage Engine (1)

Feature MyISAM Memory InnoDB Archive NDB
Storage limits 256TB RAM 64TB None 384EB
Transactions No No Yes No Yes
Locking granularity Table Table Row Table Table
Geospatial data type support Yes No Yes Yes Yes
Geospatial indexing support Yes No No No No
B-tree indexes Yes Yes Yes No Yes
Hash indexes No Yes No[a] No Yes
Full-text search indexes Yes No No No No
Clustered indexes No No Yes No No
Data caches No N/A Yes No Yes
Index caches Yes N/A Yes No Yes
Compressed data Yes[b] No Yes[c] Yes No
Encrypted data[d] Yes Yes Yes Yes Yes
Cluster database support No No No No Yes
Replication support[e] Yes Yes Yes Yes Yes
Foreign key support No No Yes No No
Backup / point-in-time recovery[f] Yes Yes Yes Yes Yes
Query cache support Yes Yes Yes Yes Yes
Update statistics for data dictionary Yes Yes Yes Yes Yes

Strage Engine(샤딩 구성도)

샤딩 구성도(Data 분산 처리)

mariadb img-1
mariadb img-1

Optimizer enhancements

Optimizer enhancements

  1. 독립적으로 통계데이터를 제공MairaDB 10 이전 버전의 경우 통계는 스토리지 엔진에 의해 스스로 공급 되었고 통계 품질은 
일반적으로 불량하고 스토리지 엔진 Interface는 제한이 많았음
    MariaDB 10 버전 부터 통계는 각 SQL문에 대한 최적의 실행 계획을 선택하는 쿼리 최적화 
프로그램에 의해 사용
    더 나은 실행 계획 및 최종 사용자의 더 나은 통계 결과는 일반적으로 빠른 결과를 도출 가능
  2. Histograms쿼리 최적화, Histogram은 모두 인덱스가 아닌 인덱스 열을 수집 할 수 있음
    데이터의 쿼리 최적화 프로그램은 복잡한 다중 테이블 쿼리에 더 나은 쿼리 실행 계획을 선택
  3. EXISTS 서브쿼리의 최적화가능하면 IN에 하위 쿼리를 EXISTS로 변환하여 가능하면 최적화 합니다.
    이 변환은 특정 종류의 세미 조인 최적화 또는 EXISTS로 연결된 서브쿼리들을 구체적으로 
최적화하도록 지원

Administration improvements

  1. RoleMairaDB 10에 드디어 Role이 도입
    이제 DBA는 특정 권한을 가진 역할을 만들고 사용자에게 역할을 할당 가능
  2. Show Explain실행되고 있는 쿼리문을 얻으면 Slow Query에 대해서 설명
  3. Explain Insert/Update/deleteinsert / update / delete 문에 대한 explain 지원
  4. Show Plugin SONAME설치 되어 있는 모든 Plugin 정보를 확인 가능
  5. Shutdown서버의 Shutdown을 위해 마지막에 SQL로 종료 가능
  6. Kill Query ID해당 ID가 Thread ID가 아닌 특정 쿼리를 kill
  7. Per-connection Memory usage사용되는 메모리의 양을 각 Connection 별로 나열

Other

Other important new feature

  1. New REGEXP새로운 SQL과 정규식 표현식 라이브러리 PCRE로 전환할 수 있는 REGEXP_REPLACE, REGEXP_SUBSTR, 
REGEXP_INSTR 등 으로 MairaDB 텍스트 처리 기능을 향상
  2. Delete… RETURNING많은 사용자가 결과셋에서 삭제된 행을 반환하는 기능으로 문장의 끝에 추가하여 사용 가능
  3. Alter… IF [NOT] EXISTSAlter 문에서 이제 예를 들어 키워드 IF를 추가하거나 IF NOT을 추가 할 수 있음
  4. Named Dynamic ColumnsMariaDB 초창기 버전의 경우 Dynamic Columns의 각 열은 번호에 의해 참조 될 수 있음
    MariaDB 10에서 열 이름으로 지칭 가능
  5. Multiple GET_LOCK()많은 사용자 레벨의 잠금 사용이 지원

Merged Features

Merged Features and Functionality from MySQL 5.6

  1. InnoDB대부분의 InnoDB의 성능 향상된 내용은 MariaDB에 포함
  2. Performance Schema새로운 이벤트 필터링, 계측 및 기타 새로운 성능 스키마 추가
  3. Online Alter
시스템을 중단하지 않고 스키마의 많은 변경 작업 가능
  4. Order by ~ Limit Optimization을 사용하는 쿼리를 위한 Filesort OptimizationLimit 최적화 순서를 사용하여 쿼리에 대한 Filesort 최적화
  5. Create Temporary table에 대한 권한
  6. Character-set 확장
  7. GET DIAGNOSTICS
  8. TO_BASE64(), FROM_BASE64
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s