今更handlersoket
MySQLをNoSQL化して、爆速な処理を実現するpluginのhandlersocket。(ザックリとした理解)
公開されたのが2010年頃なので、かれこれ10年近く前のことですが、今更試してみようと思いました。
そうだlaradockを使おう
handlersocketはMySQLの他にMariaDBでも使えます。
今回は初めからpluginにhandlersoket.soが用意されているMariaDBで試します。
手軽にdockerさんで環境を作ろうと思います。
Dockerファイルも便利セットのlaradockを使用します。
ちなみに、環境はwindows10 proでございます。
やってみよう
とりあえず適当な場所でlaradockをcloneします。
(https://laradock.io/)
mkdir dev
cd dev
git clone https://github.com/Laradock/laradock.git
それからMariaDBのmy.cnfを編集
(以下の内容を追加します)
[mysqld]
plugin_maturity=beta
plugin-load=handlersocket.so
dockerさん立ち上げ
cd laradock
docker-compose build mariadb
docker-compose up -d mariadb
docker-compose exec mariadb bash
mariaさんのバージョン確認
# mysql --version
mysql Ver 15.1 Distrib 10.3.14-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
handlersocketがpluginに反映されていることを確認。
MariaDB [(none)]> show plugins;
+-------------------------------+----------+--------------------+------------------+---------+
| Name | Status | Type | Library | License |
+-------------------------------+----------+--------------------+------------------+---------+
| binlog | ACTIVE | STORAGE ENGINE | NULL | GPL |
| mysql_native_password | ACTIVE | AUTHENTICATION | NULL | GPL |
| mysql_old_password | ACTIVE | AUTHENTICATION | NULL | GPL |
| wsrep | ACTIVE | STORAGE ENGINE | NULL | GPL |
| CSV | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MEMORY | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MRG_MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |
| CLIENT_STATISTICS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INDEX_STATISTICS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| TABLE_STATISTICS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| USER_STATISTICS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| SQL_SEQUENCE | ACTIVE | STORAGE ENGINE | NULL | GPL |
| InnoDB | ACTIVE | STORAGE ENGINE | NULL | GPL |
| INNODB_TRX | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_LOCKS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_LOCK_WAITS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_CMP | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_CMP_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_CMPMEM | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_CMPMEM_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_CMP_PER_INDEX | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_CMP_PER_INDEX_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_BUFFER_PAGE | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_BUFFER_PAGE_LRU | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_BUFFER_POOL_STATS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_METRICS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_FT_DEFAULT_STOPWORD | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_FT_DELETED | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_FT_BEING_DELETED | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_FT_CONFIG | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_FT_INDEX_CACHE | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_FT_INDEX_TABLE | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_SYS_TABLES | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_SYS_TABLESTATS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_SYS_INDEXES | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_SYS_COLUMNS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_SYS_FIELDS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_SYS_FOREIGN | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_SYS_FOREIGN_COLS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_SYS_TABLESPACES | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_SYS_DATAFILES | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_SYS_VIRTUAL | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_MUTEXES | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_SYS_SEMAPHORE_WAITS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_TABLESPACES_ENCRYPTION | ACTIVE | INFORMATION SCHEMA | NULL | BSD |
| INNODB_TABLESPACES_SCRUBBING | ACTIVE | INFORMATION SCHEMA | NULL | BSD |
| Aria | ACTIVE | STORAGE ENGINE | NULL | GPL |
| PERFORMANCE_SCHEMA | ACTIVE | STORAGE ENGINE | NULL | GPL |
| SEQUENCE | ACTIVE | STORAGE ENGINE | NULL | GPL |
| FEEDBACK | DISABLED | INFORMATION SCHEMA | NULL | GPL |
| user_variables | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| partition | ACTIVE | STORAGE ENGINE | NULL | GPL |
| handlersocket | ACTIVE | DAEMON | handlersocket.so | BSD |
+-------------------------------+----------+--------------------+------------------+---------+
54 rows in set (0.001 sec)
pluginに反映されました。
ここまでのみちのり
dockerさんでmariaDBを立ち上げようとした段階でちょこちょこ躓いたので、my.cnfの内容はもう少し書き加えてます。
今回記載したのはhandlersocketに関連する設定だけです。
はじめにmy.cnfには「plugin-load」のみ記載していました。
ここでplugin追加がされている予定でした。
[mysqld]
plugin-load=handlersocket.so
しかし、「show plugins;」を実行して確認してみるとhandlersocketさんは不在・・・。
そこで手動で追加してみようとするとエラーが。
MariaDB [(none)]> INSTALL PLUGIN handlersocket SONAME 'handlersocket.so';
ERROR 1126 (HY000): Can't open shared library 'handlersocket.so' (errno: 1, Loading of beta plugin handlersocket is prohibited by --plugin-maturity=gamma)
なんでや。
エラーの内容をみると、「plugin-maturityの設定がgammaでhandlersocketはbataだから禁止だよ」って感じでしょうか?
そこでmariaDBのサイトを確認。
(https://mariadb.com/kb/en/library/server-system-variables/#plugin_maturity)
plugin_maturity
・Description: The lowest acceptable plugin maturity. MariaDB will not load plugins less mature than the specified level.
・Commandline: --plugin-maturity=level
・Scope: Global
・Dynamic: No
・Type: enum
・Default Value: One less than the server maturity (>= MariaDB 10.3.3), unknown (<= MariaDB 10.3.2)
・Valid Values: unknown, experimental, alpha, beta, gamma, stable
・Introduced: MariaDB 5.2.1
このplugin-maturityをbataにすれば良さげ、ということでmy.cnfに追加。
[mysqld]
plugin_maturity=beta # <- new!
plugin-load=handlersocket.so
これで上手く反映されるようになりました。
つづく?
まだ実際にhandlersocketを動かしてはいないので、動かしてみようと思います。