実践ハイパフォーマンスMySQL 第2版 を読んだ。
- 作者: Baron Schwartz,Peter Zaitsev,Vadim Tkachenko,Jeremy D. Zawodny,Arjen Lentz,Derek J. Balling,伊藤直也(監訳),田中慎司(監訳),吉川英興(監訳),株式会社クイープ
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/12/14
- メディア: 大型本
- 購入: 17人 クリック: 373回
- この商品を含むブログ (46件) を見る
【所管】
MySQLに関する内容が詳しすぎ。
1/3くらいしか読めてないけど、時間を見つけてもっと読みたい。
【読書メモ】
- MySQLはテーブルごとにトランザクションの有無を設定をすることが可能。
- ロックはオーバーヘッドを要求するため、トランザクションを不要とするテーブルはMyISAMを選択すると良い。
- InnoBDトランザクションの分離レベルは「REPEATABLE READ」である。
- MySQLをUPDATEする際はディスクではなく、メモリーの値を更新する。その後、ディスクにシーケンシャルIQにて更新する。その間のクラッシュした際のデータを保証するために、ログ先行書き込みを行う。
- トランザクションテーブルと非トランザクションテーブルを両方を一回のトランザクション内で更新すると、ロールバック時に非トランザクションだけ出来ないので注意すること。つまり、複数のエンジンを一つのトランザクションで管理はできない。
- Nullはカラムに入らないように工夫すること。Nullが必要になるところも他の値で代用できないかを検討する。(パーフォーマンスが上がるため)
- そのカラムにインデックスの使用を考える場合は、NotNullを検討する事。
- 整数に「unsigned」をつけると-2^N 〜 2^N の範囲を0 〜 2^2Nの正の範囲として倍にできる。
- INT(20)は値の有効な範囲を制限するわけではなく、対話ツールが表示目的で確保する文字列を指定する。
- 浮動小数点型の精度はMySQLのデータ型を選択したり、値を丸めたりする。従って,精度ではなく型を選択すると良い。
- TIMESTAMPとDATETIMEの違いは比較。TIMESTAMPを選んだほうがストレージ効率が良い。
- 識別子IDにふさわしい方が何であるか。
- 整数型…AUTO_INCREMENT使える。何であるか。IDにうってつけ。
- ENUMSET…ふつーに使わない。
- 文字列…めっちゃパフォーマンス悪い。
- IDの型は決めたら、関連する外部キーも必ず一緒にすること。(UNSIGNも含め)