2018年12月6日木曜日

マイエスキューエルにはPerl Mongerが必要かもしれないはなし

この記事は


みなさんは innotop をご存知でしょうか?
そう、 SHOW PROCESSLISTSHOW ENGINE INNODB STATUS の結果を top ライクに表示してくれる、みんなだいすき Perlで書かれた スクリプトです。
わたしはこのツールが随分気に入っていて、今までも何度もブログを書いていました。
息してないなーエントリの時もTwitterでちょくちょく「使ってたのに」的な反応があったので、案外(?)使っている人も多いのかも知れません。
最初は2012年だから本当にMySQLを真面目にやり始めた頃、MySQL 5.7対応でプルリクを出したりしたのは2016年だったんですね。今年はMySQL 8.0対応の Pull-Request を書きました。これでinnotopはMySQL 8.0でも使えます。安心ですね。
さて、ここ数年のinnotopへのコントリビュートを経て思ったことが、「マイエスキューエルにはPerl Mongerが必要かもしれない」ということです。
まずこの スクリプト は「如何にも昔から動き今も動くPerlスクリプト」という感じで、1ファイルで1万2千行以上、ファイルサイズも447kBもあります。
たとえばセマフォの情報を示すセクションをパースしているコードはこんな感じになっていて、
Perl Mongerでない限り心が折れてしまうんではないでしょうか。
ちなみにPerl Mongerでも心は折れると思います。俺は何度か折れた。
加えて、このバッファプールのセクションをパースしているあたりなんかは、Perlが問題なく読めたとしても「そもそも SHOW ENGINE INNODB STATUS が読めないとこれで合ってるのかどうか判断できない」というなかなかアレな状態です(新しいバージョンが出た時に自分自身でパースできないとテストケースの作りようがなくなるのでな…)
という訳で現在、innotopにパッチを当てられるのはおおむね (“Perl Mongerである” || “Perl Mongerではないが心が強い”) && “InnoDBと友達” な人に限られるのではないでしょうか…と言いつつ、OSSにパッチを投稿するには限りなく

自分が使っている = 不具合は自分に不都合

というモチベーションが必要です。
Perl MongerではないけどPerlが好きで、InnoDBと友達ではないけれど言いたいことはわかって、innotopをガシガシ本番で使っている俺がこのソフトウェアにパッチを当てるようになったのは自然なことなのかも知れません。

自分で使っているのを差っ引いても、innotopはおおむね便利なのでみなさまも使っていただけると(俺ではなくて中の人の)励みになると思います。


ちなみにここまでの文書、 s/innotop/pt-query-digest/g とか s/innotop/MHA for MySQL/g とかにしても似たようなことが言えます。

Perl製のMySQLのツールはそれなりにあるので、PerlでMySQLな人は そのツールが消えてなくなる前に パッチなどご協力いただければ幸いです。





( ´-`).oO(レプリケーションと友達なPerl Mongerが捕まらなかったのか、使っているユーザーがいなかったのか、 MMM for MySQL …いやううんなんでもない

明日の

です。
明日もおたのしみに。

0 件のコメント :

コメントを投稿