Windows MVPであり、MS関連の技術書籍や記事を多々書いている山田さんの本。私自身は同じ秀和システムからでている別著者のOracleの逆引き大全(一つ前の版のDBA、プログラミング編)を愛用していて、そのMySQL版ということで期待したが、まだそこまではこなれていない感じ。(帯の「極意」はちょっといいすぎ)確認したのは第一版第一刷を二時間程度。
[良い点]
・Windowsにもちゃんと言及がある点。独自に調査している点もあり。
・そこそこコンパクトにまとまっている。
・あまり間違いがない。
[悪い点]
・「逆引き」の割にはオプションの羅列や、ほとんど意味のないものがあり、逆引きの良さが損なわれている
例えばホットバックアップに使うmysqldumpQuestion38-39でとりあげられて二ページ半に渡りオプションが
記述されている割には、用例では、どのようにロックがかかる、とか、InnoDBで一貫性のあるバックアップを
取得する--single-transactionの用例や、説明がない。また後述するようにBLOB型がダンプできない、というのは
間違い。
例えばQuestion 204のストアドルーチンの内部表現を表示できても、本書では表示以上の説明はない。
そのため「表示できる」ということ以外はほとんど意味がない。(SHOW AUTHORS; SHOW CONTRIBUTORS;なども同じ)
・どのコマンドがどのデータベースエンジンに有効か記述がない
例えばQuestion097INSERT/UPDATE/DELETE などに使われる[LOW_PRIORITY | DELAYED ] (本書に記述はないがHIGH_PRIORITYもある)はInnoDBには適用されないが、それはこの書籍のどこからもわからない(後述するQuestion431で一部わかる)。せっかく本書でトランザクションについて詳解しているのだから、[LOW_PRIORITY | DELAYED | HIGH_PRIORITY]に触れるのであれば、それがMyISAM等のテーブルレベルロックを取得するストレージエンジンにしか適用されず、ぞのように動作するか詳解して、これに触れるならconcurrent insertにまで言及するとよい。
→なぜかQuestion 431のlow-priority-updatesパラメタだけでは言及している? なぜ??
・一部記述が古く間違っている
mysqldumpでBLOBはダンプできないと書いてある(しかもわざわざ太字で...)が、--hex-blobオプションできる。
(MySQL 4.1から)もしかしたら、Windowsコマンドプロンプトのリダイレクトでうまく読み込めないので外しているかもしれないが、その場合は、source文で読み込めば問題なく読み込める。(例: mysql -e "source dump.sql")
Questin442 クエリキャッシュ。MySQL 5.1.17からプリペアードステートメントの一部がキャッシュされる。
またキャッシュされない関数の数も少し少ない。
・ミスリードする見出しや印がある
Question436で「ログファイルが既に存在する場合、いったん削除したうえで〜」というのは、innodb_fast_shutdown=2のときにはデータベースの内容が失われることがある。
第11章 システム変数の極意の謎のアイコン(p.472) つぶれて見えない。そのうえで、すぐ隣のページの動的に変更できないportにはついていない。datadirにも。そのまま読み進めてやっとでてくるのがp.485のlower_case_table_nameで、これはそうなのですが、あまりにこの印の有無がめちゃくちゃすぎ。
・もう少しがんばってほしい記述がある
目に付いたところだけ
(1) p.40 --sigint-ignoreの説明は間違っている。(直上と混乱?)
(2) p.135 正規表現、マルチバイト未対応の記述なし(これはMySQLも悪いのですが。。。。)
(3) p.180 DO命令のサンプル悪い。connection_id()のような値を返すことに意味があるものをDOでやっても意味がない。山田さん自身がQuestion 365でとりあげているGET_LOCK()みたいに、処理自信に意味があるものをDOで実行しないと。
(4) p.64 たぶん古い記述からもってきたのだと類推。それぞれSHOW STATUS, SHOW VARIABLESはMySQL 4.0.13からGLOBALとSESSIONが導入されており、このキーワードを省くとSESSIONの意味。しかし、mysqladminは接続してすぐ切断するのでSESSIONでは意味があわず。ここではSHOW GLOBAL STATUSとSHOW GLOBAL VARIABLESのようにGLOBALを入れた表記が正しい。
ご購入をお考えの方は、まずぱらぱらめくって、自分の思う項目のを何個か逆引きしてみてください。
そしてまず、逆引きのキーワードにたどり着けるか、そこから得られた情報が理にかなったものか評価してみてください。しっくり来るようなら「買い」でしょう。
内容と値段から標準的な内容だと判断して★三つです。