ASMのきもち

DBとAnsibleが気になって仕方ない人のブログ

MySQLの勉強をリファレンスを読みながらやってみることにした話

この記事はMySQL Advent Calendar 2023 12日目の記事です。
昨日は山崎さんの 2023年にMySQL Shellのデータダンプユーティリティにwhereオプションが追加されました+α でしたね。
MySQL Shell 8.0.32からdumpに様々な機能が搭載されたとのことですが、それが山崎さんのリクエストで実現した!というのが胸熱でした…!
機能がない場合は、ナイナイと文句言う前にコミュニティに声を上げることが大切ですね。しみじみ。

さて今日は、技術的な話でなくてポエムです。
タイトルの通り、MySQLの勉強をリファレンスを読みながらやってみた」という話です。

MySQLの勉強をしようと思った背景

そもそも私がMySQLを触ったのは、とあるシステムで相談を受けた際だったと思います。
当時は100% OracleDBでした。そんな人間が、MySQLでの問題を相談を受けてた訳ですが。
MySQL固有の問題ではなくRDBMSの一般的な問題だったのもあって、「なんとなくこうかな?」という回答で解決できました。
ディスクとかCPUとかそうゆう類だと思ってください

そんな感じで「なんとなく対応した」が「MySQLも出来るよねあの人」になっていってしまったのです。

はっきり言いますが、いま現時点でも私のMySQLレベルは非常に低いです。
2-3年MySQLを使って開発されてる若手の方の方が、よっぽど知っていると思います。
ところが俄な知識で ちょっとInnoDB Clusterの案件 とかやってみたせいで、なんかMySQLできます体になってる。
まぁOracleDBも全然わからないんですけどね?

まずい。これはまずいぞ私!!

ということでMySQLの勉強を、いちからちゃんとしようと思ったのが、今年のきっかけです。

何故マニュアルを?

ここで普通、本を買います。ええ、本は持っております。そしてこの本、めちゃくちゃ良いですおすすめです。

ただ、あえてのリファレンスを読むことにしました。その理由が以下です。

  • 網羅性:リファレンスが全てである。網羅性においてはリファレンスこそが最もカバー範囲が広い内容である
  • 正当性:(ドキュメントBugもあるが)基本的に書かれている内容は正しい
  • 汎用性:オンラインでどこでも読める。「これ、あそこに書いてあったよね?」がわかるだけでも、MySQL力は上がる
  • 読解力:マニュアルを読める力も、エンジニアにとっては必要

一つずつ、私の考えを書いていきます。

網羅性

これに関しては説明不要かと。リファレンスは開発者が記載しているドキュメントであり、製品が具備している機能が記載されています。
もちろん本にも様々な機能が書かれていますが、あくまで「よく使われる」機能であって、網羅性はリファレンスの方が当然広いですよね。
今回、MySQLのもつ機能を広く知りたいという想いもあって、この網羅性からリファレンスを読み始めることにしました。

正当性

ドキュメントBugがあるのはわかっていますが、それでもこのドキュメントは開発者が記載しているドキュメントです。
「こうゆう機能を作ったよ!」という情報を学ぶ際、最も正しく学べると考えました。

汎用性

ちょっと別の話になりますが、皆さんOracle Master Plutinumという怖い試験をご存知ですか。
OracleDBの実機試験ですね。指示通りに構築やセットアップを行っていかなければならないのですが、参考できる文献はリファレンスのみです。
あの試験で大事なポイントに「リファレンスのどこに何の機能、コマンド、制限事項が書いてあるか知っておくこと」という点があります。
問題発生時、障害発生時。あれ、ここどうゆう仕様だっけ?を、すぐリファレンスマニュアル見て調べられる。
こうゆうことがしたいんだけど、できないよねー…に対して、そういえばこんな機能あったよね?を思い出して、リファレンスみて調べられる。
それだけで結構、片付く課題が増えると考えています。まぁ今は、AIに探してもらうほうが早そうですけどね。

読解力

リファレンスの日本語難しいんですよ助けて←
ということで、リファレンスの日本語読解力をあげようと思いました。解釈間違えると、誤ったパラメータ値を設定してしまうこととかあるんです。私はあります。ごめんなさい。
解釈が難しくて、時々慣れない英語版見ます…それもまた、勉強…

何故ブログに書いた?

そう考え始めたマニュアル読む会ですが、何かしらアウトプット出さないとだめな人間なので、自分のメモ用にブログに書き始めました。
今日はここ読む、こんな機能あるんだ、これなんだろー?という、完全に独り言ですね。
気軽に書けるように、本当に独り言形式、メモにしました。
内容は誰かに見せる用ではないので、読みやすさゼロです。というか、誰も読まないよねと思って書いてました。

やってみて、どうだった?

まさかの、読んでくださる方がいらっしゃるんですよ!!神ですか!優しさの神様がいるんですか!!
間違っている点を指摘していただいたり(土下座)、ここわからないって呟いたのを教えてくださったり(感謝感激で半泣きになって拝見していました)
個人的に この投稿の イテレータエグゼキューター について、論文や紹介されているブログを教えてくださったりして、非常に学びになりました。

また、実行計画について書かれていたので「Oracleと比較してみようかな?」と思いやってみたところ、はてぶさんの注目ブログに載せて頂いたりしまして(感謝)
tomomo1015.hatenablog.com

当初考えていた学びの3倍以上の学び、経験をさせていただきました。
見ていただいた方々、そしてコメント頂いた皆様に心から感謝を。ありがとうございます!!

これから?

最近私事が理由で書けていないのですが、そろそろ落ち着いてきたので、ゆるっと再開したいなと考えています。
マニュアル読むの、楽しいですよ。アウトプットすると、誰かが見てくれたりするのも、すごく楽しいですよ!

明日は @hmatsu47 さんの「MySQL HeatWave on AWS でインバウンドレプリケーションを試してみた」です。
わーいHeatWave!楽しみ!!