毎週 1冊技術書を読んでブログでアウトプットするチャレンジの第8弾ですー!
今回は、現場で使えるMySQL を読んでまとめました。
MySQLを現場で使うための知識を、分かりやすく解説している技術書です。
現場で使える MySQL (DB Magazine SELECTION)
- 作者: 松信嘉範
- 出版社/メーカー: 翔泳社
- 発売日: 2006/03/17
- メディア: 単行本
- 購入: 9人 クリック: 103回
- この商品を含むブログ (45件) を見る
- Chapter1 MySQLの概要と環境構築
- Chapter2 データ型とSQL
- Chapter3 テーブル定義
- Chapter4 トランザクション
- Chapter6 日本語処理
- Chapter8 アーキテクチャ/ファイル構成
- Chapter9 ユーザ管理/セキュリティ
- Chapter10 バックアップ/リカバリ(前編)
- Chapter11 バックアップ/リカバリ(後編)
- Chapter12 レプリケーション
- Chapter13 パフォーマンスチューニング(前編)
- Chapter14 パフォーマンスチューニング(後編)
- おわりに
Chapter1 MySQLの概要と環境構築
-
データベース領域:インスタンスと1対1に対応した、データベースの物理領域。1つのデータベース領域の中に複数のデータベースが格納される
-
初期パラメータファイル:インスタンスの使用メモリやサイズやファイル配置などを決めるためのファイル
Chapter2 データ型とSQL
-
データや値の範囲チェックはアプリケーション側の責任であるという考え方に基づいて実装されている。例えば、どのデータ型でも、範囲を超えた値を格納しようとしてもエラーにはならず、削られたり最大値や0に変換されたりするので注意が必要
-
文字列型で最大長を超える文字を格納しようとした場合、オーバーした部分は削られた上で正常終了する
-
ソートや文字列比較において、デフォルトでは半角英字の大文字/小文字を区別しない
-
数値型のNUMERIC型は、NUMERIC(p,n)という形で定義され、pは全体の有効桁数、nは小数点以下の有効桁数を意味する。p,nどちらも指定しなかった場合、NUMERIC(10,0)となる
-
日付/時刻型としては、YEAR/DATE/TIME/DATETIME/TIMESTAMPの5種類がある
Chapter3 テーブル定義
-
主なストレージエンジンとその特徴
-
-
整合性制約
-
-
主キー制約:制約対象列にNULL値を入れないことと、値が重複しないことを保証する。これにより、制約対象列の値からテーブル内の行を一意に識別できる
-
一意キー制約:制約対象列の値が重複しないことを保証する。NULL値は格納でき、NULL値同士は異なる値であると見なされる
-
参照整合性制約(外部キー制約):子テーブルの制約対象列の値が、親テーブルの参照キーに含まれていることを保証するもので、子テーブルに定義する。利用するためには、親テーブル、子テーブルともInnoDBである必要がある
-
-
シーケンス:連続的な整数値を生成するオブジェクト。シーケンスから得られる数値のことをシーケンス番号、連番などと呼ぶ。一般的に、同一のシーケンスから得られるシーケンス番号は重複しないため、テーブルの主キーや一意キーとして使用されることが多い
Chapter4 トランザクション
-
自動コミット機能:この機能を有効にするか無効にするかによって、トランザクションの開始/終了の方法が変化する
-
-
デフォルトでは自動コミット機能が有効となっている
-
フルスキャンはすべての行にロックがかかってしまうため、インデックス検索させるべきところにはきちんとインデックスを作成すべき
-
デッドロックは即座に検出される
Chapter6 日本語処理
-
クライアントとサーバーの文字コードをすべてutf8に統一できる環境ならば問題はないが、そうでなければ様々な注意事項が存在する
Chapter8 アーキテクチャ/ファイル構成
-
プロセスとは、UNIXコマンドで言えばcatやlsといった個々のプログラムの実行単位である。OS上の各プロセスには、それぞれの固有のメモリ空間が割り当てられる。一方スレッドとは、簡単に言えば1つのプロセス内で並行処理を行うためのものである。スレッドはプロセスの内部で生成され、プロセスのメモリ空間を共有する
Chapter9 ユーザ管理/セキュリティ
-
権限は、グローバル(全体)、データベース、テーブル、列の4種類ごとに設定する
-
発行されたすべてのSQL文をファイルに記録する機能があるため、監査機能として使うことができる
Chapter10 バックアップ/リカバリ(前編)
-
バックアップ方法
-
-
オンラインバックアップ:インスタンスを起動した状態でバックアップを取得する方法。
Chapter11 バックアップ/リカバリ(後編)
Chapter12 レプリケーション
-
1台のマスターに対して更新を行うと、複数のスレーブにも同じ更新結果が反映される。検索は基本的にスレーブに対して行えばよいので、検索の負荷分散になる
-
マスターに障害が発生した場合は、スレーブをマスターに昇格させてサービスを継続することで、サービス停止時間を短くすることができる
Chapter13 パフォーマンスチューニング(前編)
-
RDBMSのチューニングは単体チューニングとシステムチューニングの2つに大別できる
-
単体チューニングでは下記2つの手段を組み合わせる
-
-
上記SQL文の実行計画をEXPLAIN文で確認し、必要に応じた改善
Chapter14 パフォーマンスチューニング(後編)
-
基本的にデータ型は使用バイト数が少ないデータ型を選ぶことを心がけると良い。そうでないと、ファイルサイズが大きくなるだけでなく、多くのI/Oが発生するため性能面でも悪影響がある
- SELECT/UPDATE/DELETE文のWHERE句で指定する列に対しては、インデックスを定義することでフルスキャンを防ぐのが一般的である。ただし、インデックスを作ると更新時にオーバーヘッドがかかることに注意する
-
バルクINSERT文とは、1つのSQL文で複数のレコードをまとめてINSERTする構文であり、通常のINSERT文を繰り返すのに比べ、大きな性能向上が図れる
-
テーブルのレコードデータをすべて削除する場合は、「DELETE FROM テーブル名;」よりも、「TRUNCATE TABLE テーブル名;」の方がはるかに高速
おわりに
ここまで読んでいただきありがとうございます。
現場で使える MySQL (DB Magazine SELECTION)
- 作者: 松信嘉範
- 出版社/メーカー: 翔泳社
- 発売日: 2006/03/17
- メディア: 単行本
- 購入: 9人 クリック: 103回
- この商品を含むブログ (45件) を見る
次もMySQLに関する技術書を読む予定です。
来週も頑張ります!