本を読む データベース技術[実践]入門
時間が空いてしまった!
いろいろやったけど、まとめてなかっただけなのだっ!
というわけで、本読んだことをいろいろまとめよう
感想
何となく使ってたもの、少しだけわかった気がする!
なるほどねっ!といった感じ。
直接これを見て、何かしたわけじゃないから、
具体的にできるようになったわけじゃないけど、活かせればなぁと思う。
一部ちょっと半分くらいしかわかってないところもあるので、まとめながら復習。
ざっくりメモ
ランダムアクセス
遅い
正規化
テーブル設計では正規化する
データベースが重い
だいたい効率の悪いSELECT文のせい
複数回SQL文を発行するより、joinしたほうが高速
障害の主な原因
- ソフトウェアの障害
- OSの障害
- ハードウェアの障害
- 操作ミス
ストレージ技術の進化
ボトルネックが、ディスクからCPUやネットワークに移ってきている。
また、並列性能の高いデータベースが求められる
ストレージエンジン
mysqlの特徴で、さまざまなレコード処理の実装方法が用意されている。
リストア
バックアップしたデータを使ってリカバリ処理をする際、MySQLから読み書きできる状態にすること
インデックス
検索を劇的に高速化できる。
ただし、インデックスを別途更新する必要があるので、更新コストは増える。
そのため、必要なものだけにつけること。
ハッスインデックス
ハッシュ値とキーのペアを持つ構造。
ハッシュ値は同じサイズになるので、固定長フォーマットに持ち込める。
ハッシュ値が衝突しないような機能はデータベースに実装されている。
ただし、範囲検索等、向かない検索処理がある。
B+Treeインデックス
効率よく、目的のデータを取得できる。範囲検索も効率的に行える。
ルートブロックを頂上にもち、ブランチブロック、最下位のリーフブロックがならぶ木構造。
ルート、ブランチでは、下位の対象のブロックがどこにあるのかという情報をもち、リーフでは、実際の格納位置の情報をもつ。
その他
インデックスを一意性の保証としても使える(一意性を保証したい列にインデックスをつけることが必須となっている。)。
低コストで重複チェックが可能。
また、AND条件で、インデックスを作ることも可能。
インデックスマージ(2個以上のインデックスを同時に使える)機能も存在する。
冗長化
最も広く用いられているのがレプリケーション