Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

ストレージエンジン

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

  • プランナ、オプティマイザ
    • 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構造

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした