maco's life

主にエンジニアリングと読書について書いていきます。

「データベース技術 実践入門」読了

GW中どうせなら積んでいた本を読もうと思い、2012年ごろに出版された「データベース技術 実践入門」を読んだ。書いてあった内容は、実践入門というより広く薄い内容ではあったけど、自分が気にしていなかったことや知らなかったことなどもあったし、技術の振返りとして読んで面白かった。印象に残ったことは下記の内容。

  • innodb_log_file_size
    • サイズ大: 更新処理の劣化はないが、クラッシュ時のリカバリが低速になる
    • サイズ小: チェックポイントが頻繁に起こるため更新処理は劣化するが、クラッシュ時のリカバリが高速になる
  • クエリが詰まってレスポンスが一時的に返らなく現象には「ストール」という名称がある
  • データーベースのコピーを取った時にデータの一致性を見るにはchecksumを見る方法もある
  • ステートメントベースでのレプリケーションだとUUID()NOW()がそのまま実行されるため、必ずしも同じデータになるとは限らない
  • mysqlbinlogを使う場合に1つのトランザクションが複数のbinlogにまたがる状態がある。mysqlbinlogは最後にROLLBACKを行うので、中途半端な状態になることがある
  • binlogファイルの削除はrmで削除するとmysqlからは認識したままになるので、PURGE MASTER LOGS TOで行う
  • MyISAMでバックアップを取る時は、データベースにロックを掛けた後にsyncを実行して、ディスクに書き出された状態でバックアップを行う
  • 単純なSELECT文を実行するときには、HandlerSocketPluginを使うことでクエリ実行時の無駄なコストを削減できる
  • B-Treeはブランチにデータを持つので、カウントの処理がB+Treeとくらべて遅い
  • MySQLの実装思想について
  • MySQL-Pluginの実装方法まとめ

これらが気になった点。本を読んでいてMySQL5.6が出たぐらいのころの本なので現状とは少し違ってきている点もあるかもしれない。だけど時代的背景からみるMySQLの使い方や基本的な内容の振返りなどまんべんなく見れて良かった。