Facebook이 공개한 새로운 MySQL용 스토리지 엔진 「MyRocks」를 시험해 본다 ~설치편~

Facebook은 MySQL용 새로운 스토리지 엔진 'MyRocks'를 오픈 소스로 공개했습니다.
h tp // w w. 푸 b c y1. jp/b㎉g/16/후세보오 kmysqlmy로cks. HTML

MyRocks는 InnoDB가 플래시 스토리지와 결합할 때 기록되는 데이터 양의 효율성을 개선하기 위해 Facebook에서 수행한 스토리지 엔진입니다.
2013년에 키 밸류 스토어로 공개한 RocksDB를 MySQL에 통합시킨 것을 기반으로 하고 있습니다.

스토리지 효율의 면에서 매우 뛰어나고 압축 기능을 이용한 InnoDB와의 비교에서도 MyRocks는 기록되는 데이터량이 압도적으로 작다고 한다.

음, 궁금해. 그래서 빨리 시도해 봅시다 (☝ ՞ਊ ՞)☝

MyRocks를 사용하는 방법은 facebook의 github 위키에 설명되어 있습니다.
htps : // 기주 b. 코 m / 후세 보오 k / mysql - 5.6 / 우즈키 / 갓찐 g - S r d u ぃ th My Locks

MySQL을 소스에서 떨어뜨려 빌드하는 형태군요.

이것에 따라 해도 좋지만,
좀 더 빨리 시도하고 싶다 ~ 어떻게 MyRocks의 Docker 이미지 구르지 않았을까 ~
생각하면 정말로있었습니다
htps //w w. 페르코나. 이 m/bぉg/2016/09/06/my로 cks-도 c 케-r 속눈썹 s/

perconadb 씨가 만들어 주었습니다. 감사!

그럼 Docker 이미지를 떨어뜨려 사용해 보겠습니다.

이미 Mac 용 Docker가 있다고 가정합니다.
Docker 레지스트리에서 Docker 이미지를 다운로드합니다.
docker pull perconalab/myrocks

완료되면 이미지에서 컨테이너를 만듭니다.
docker run -d --name myr -P  perconalab/myrocks

그리고 절차대로 Mac에서 mysql 명령으로 연결
mysql -h127.0.0.1
RROR 1130 (HY000): Host 'gateway' is not allowed to connect to this MySQL server

··응? 보통 에러했다(*´д`) 접속 허가가 되어 있지 않네요
어쩔 수 없기 때문에 컨테이너에 들어가 연결
(mysql 명령의 경로가 통과하지 않았기 때문에 나중에 통과하기로 결정합니다)
$ docker exec -it  myr bash
[root@84e0d99b1244 /]# /usr/local/mysql/bin/mysql

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.6.27 Source distribution

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

연결되면 MyRocks 스토리지 엔진이 있는지 확인합니다.
mysql> show engines;
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| ROCKSDB    | DEFAULT | RocksDB storage engine                                         | YES          | YES  | YES        |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MyISAM     | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| FEDERATED  | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| InnoDB     | NO      | Supports transactions, row-level locking, and foreign keys     | NULL         | NULL | NULL       |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+

ROCKSDB가 있으면 OK입니다

여기서 다시 github 위키로 돌아가서 위키에 쓰여진대로 테이블을 만듭니다.

CREATE TABLE `linktable` (
 `id1` bigint(20) unsigned NOT NULL DEFAULT '0',
 `id1_type` int(10) unsigned NOT NULL DEFAULT '0',
 `id2` bigint(20) unsigned NOT NULL DEFAULT '0',
 `id2_type` int(10) unsigned NOT NULL DEFAULT '0',
 `link_type` bigint(20) unsigned NOT NULL DEFAULT '0',
 `visibility` tinyint(3) NOT NULL DEFAULT '0',
 `data` varchar(255) NOT NULL DEFAULT '',
 `time` bigint(20) unsigned NOT NULL DEFAULT '0',
 `version` int(11) unsigned NOT NULL DEFAULT '0',
 PRIMARY KEY (link_type, `id1`,`id2`) COMMENT 'cf_link_pk',
 KEY `id1_type` (`id1`,`link_type`,`visibility`,`time`,`version`,`data`) COMMENT 'rev:cf_link_id1_type'
) ENGINE=RocksDB DEFAULT COLLATE=latin1_bin; 

일단 테이블 정보의 확인.
mysql> show table status \G
*************************** 1. row ***************************
           Name: linktable
         Engine: ROCKSDB

설치편이므로 여기까지!
벤치마크를 취하거나 등은 또 추후라고 하는 것으로.

좋은 웹페이지 즐겨찾기