サイトアイコン 上尾市のWEBプログラマーによるブログ

「やさしく学べるMySQL運用・管理入門」の感想・備忘録

書籍「やさしく学べるMySQL運用・管理入門」のまとめ。

点数

78点

感想

実際の運用方法よりもMySQLの仕様の説明が中心だった。

文字コード、照合順序、システム変数のチューニング、などは参考になった。

MySQL5.7からはストレージエンジンを必ずInnoDBにするべきであり、MyISAMを使う意味はなくなった。

ストレージエンジン

InnoDB

MyISAM

以前は参照性能が高いという理由でMyISAMが利用されることもあったが、実装が古いため、マルチコアCPU環境では性能がでないこともあり、最近では利用がほとんどいない。

文字コード

my.cnfでサーバ全体、データベース、テーブル、行、クライアント、の文字コードの設定が可能。
通常はutf8mb4を使うべき。
MySQL5.7のデフォルトは半角英数字と記号のみを使うlatin1だが、MySQL8.0ではutf8mb4になる予定。

照合順序(COLLATION)

utf8mb4で利用できるCOLLATIONは26種類ある。
末尾がciのものは大文字小文字を区別しない。(Case Insensitive)
末尾がcsのものは大文字小文字を区別する。(Case Sensitive)
末尾がbinのものはバイナリとして扱い、全ての文字を区別する。
utf8mb4のデフォルトCOLLATIONはutf8mb4_general_ciである。

ログ

バイナリログ

スロークエリログ

mysqladmin

MySQL :: MySQL 5.7 Reference Manual :: 4.5.2 mysqladmin — A MySQL Server Administration Program

データベース作成、パスワード変更、processlist表示、稼働状況表示、などができるコマンド。

MySQL Workbench

MySQL :: MySQL Workbench

GUIツール。
E/R図作成機能があり、E/R図からのDDL生成や、MySQLサーバ上のテーブルからのE/R図生成、などが可能。

JSONデータ型

mysqlpump

MySQL :: MySQL 5.7 Reference Manual :: 4.5.6 mysqlpump — A Database Backup Program

全文検索

MySQL5.6ではInnoDBで全文検索インデックスが可能になったが、日本語や中国語などスペースを区切り文字としない言語ではキーワードを切り出すことができなかった。
そのためアプリケーション側で単語の間にスペースを追加してから登録する必要があった。

MySQL5.7ではスペースを区切り文字としない言語でも全文検索インデックスが使えるようになった。
キーワードを切り出すためのパーサーとしてはN-gramとMeCabがサポートされている。

N-gramは一定の文字数でキーワードを切り出す手法であり、Nには文字数が入り、2文字単位の場合はbi-gramと呼ばれる。
MySQL5.7ではデフォルトでN-gramが利用可能となっている。

MeCabは日本語の辞書を使ってキーワードを切り出すオープンソースの形態素解析エンジンである。
MySQL5.7で使用する場合はプラグインをインストールする必要があるが、必要なモジュールはMySQL5.7のバイナリに含まれているため、簡単な設定で使用可能となる。

稼働状況の確認

mysqlクライアントからSHOW GLOBAL VARIABLES;で設定ファイルの設定値を、SHOW STATUS;でステータス変数を、それぞれ確認することができる。
SHOW STATUS LIKE 'Com\_%'のようにLIKE文を使って絞り込みを行う。

ステータス変数は大半が累積値を表示するため、稼働状況を確認したい処理の前後で変数を表示し、差分を確認する必要がある。

主なステータス変数

システム変数のチューニング

sort_buffer_size

tmp_table_sizeとmax_heap_table_size

thread_cache_size

innodb_buffer_pool_size

innodb_log_file_size

モバイルバージョンを終了