LoginSignup
14
14

More than 5 years have passed since last update.

MySQLについて復習してみたまとめ

Last updated at Posted at 2015-11-24

ストレージエンジン

ストレージエンジンとは?

  • プランナ、オプティマイザ
    • SQL文のパースが終わった後、次にデータをどのように処理するかを決める機能。
    • インデックスの有無、テーブルの接合方法を決定する。
    • explainがやってるのはオプティマイザの処理のdumpと考えればよい?
  • データの処理方法が決まり、実データがどのように格納されているかを扱う部分がストレージエンジン部。

よく聞くMyISAMとInnoDBって?

  • MySQL≒Pluggable Storage Engine Architecture(ストレージエンジンを抜き差しできるアーキテクチャ)。
  • MySQLではtableごとにストレージエンジンを選択することが可能。

MyISAM

  • テーブル単位のファイルによるデータ構造を持ち、トランザクション機能をサポートしていない。
  • テーブル単位で何件データを保持しているか、内部で持ってる。(⇔InnoDBは...)
  • テーブルスキャンの速度が早い。

InnoDB

  • テーブルスペース内に複数のテーブルやインデックスを格納するデータ構造を持ち、トランザクション機能をサポートしている。
  • 障害発生時にデータ損失がない(ACID準拠なら)
  • ホットバックアップ(サーバ無停止で完全なバックアップ)が可能⇔MyISAMは...
  • 行ロックができるのはInnoDBの方。(同時並列処理性能がこれで高くなる!)

カーディナリティについて

  • データのバラツキ度合いの指標。直訳すると「濃度」のこと。
  • カーディナリティが大きい=データのバラツキ度合いが大きい≒データがユニーク
  • ex) 性別はカーディナリティがとても低い
  • カーディナリティが低いときはindexを使わず上から舐めていく。

インデックスについて

  • InnoDBにはPRIMARY KEY, SECONDARY KEY(KEY)の2種類が存在。

PRIMARY KEY

  • 1テーブルに1つしか存在しないKEY
  • リレーショナルモデルの一意制約を守るためにある
    • 集合モデルのため、同じ要素が2つあってはいけない
    • PRIMARY KEYを指定しない場合でも、暗黙的な隠しカラムが作られる
  • InnoDBはprimary keyがデータそのもの(クラスターインデックス)
    • データ自体がインデックスに含まれる

SECONDARY KEY

  • 複数作成可能
  • ノンクラスターインデックス
    • インデックスを辿ってくとデータ(primary key)へのリファラがある。
  • リーフノードにデータを持たないということは...
    • データを探すときにSECONDARY KEY->PRIMARY KEYの複数のIOが走る
      • primary keyによる検索より時間がかかる
      • 負荷もかかる
    • ノンクラスターインデックスの中にprimary keyを持つ
      • primary keyのサイズが大きいと、KEYのサイズが膨らむ

KEYの構造は、どちらもB+tree構造

14
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
14