タグ

2013年12月20日のブックマーク (2件)

  • MySQL 5.6で追加されたICPを追ってみました。 - Qiita

    この記事はMySQL Casual Advent Calendar 2013 on Zusaarの19日目です。 yokuさんの記事「日々の覚書: あなたのMySQL 5.6トレンド力をチェックする15の質問」を見て、新しく加わったオプティマイザのことをちゃんと調べていなかったと思いまして、改めて調べてみました。 まず、どういう種類があるでしょうか。例として、ひとまず5つあるようです。 Index Condition Pushdown(ICP)の追加 BKA-Joinの追加 Multi-Range Read(MRR)の追加 FROM句サブクエリーの最適化 Optimizer Traceの追加 これら、Block Nested-Loop(BNLJ)やBKA、ICP etcに関して、nippondanjiさんの記事がわかりやすく説明してくださっています。 ここでは、第一弾(?)としてICPを改

    MySQL 5.6で追加されたICPを追ってみました。 - Qiita
    sh2
    sh2 2013/12/20
    インデックス(o_c_id)には暗黙的に主キーの値(o_w_id, o_d_id, o_id)が入っていて、Index Condition PushdownによってInnoDBがo_d_idまで絞り込んだ上でレコードを返してくれる、のかな。あとで確認
  • InnoDBのREPEATABLE READにおけるLocking Readについての注意点

    日は、MySQL Casual Advent Calendar 2013の20日目である。というわけでカジュアルに小ネタを紹介しよう。 MVCC - Multi Version Concurrency Controlご存知の通り、InnoDBはMVCCを実装している。そのため、分離レベルがREPEATABLE READの場合には、行にロックをかけることなく、一貫した読み取りが可能になっている。 もし、あるトランザクションT1開始後に、別のトランザクションT2によって同じ行が書き換えられてしまった場合には、T1はロールバックセグメントにある古いバージョンの値を読み取ることができるので、T1内で実行したSELECTは常にT1開始時点のデータを参照することができるのである。大事なのでもう一度言うが、REPEATABLE READにおける単純なSELECTでは行ロックは必要ない。 Lost Up

    InnoDBのREPEATABLE READにおけるLocking Readについての注意点
    sh2
    sh2 2013/12/20
    一つのシステム内で、処理によってトランザクション分離レベルを変更した事例をまだ見たことがないです。個々の開発者の権限で変更できたら阿鼻叫喚だし…