Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MySQL 5.6

MySQL 5.6

MySQL 5.6 の新機能とかの抜粋。テキトーにやっつけたので、嘘書いてあるかも。

とみたまさひろ

February 14, 2013
Tweet

More Decks by とみたまさひろ

Other Decks in Technology

Transcript

  1. MySQL 5.6 Powered by Rabbit 2.0.6
    MySQL 5.6

    View full-size slide

  2. MySQL 5.6 Powered by Rabbit 2.0.6
    MySQL 5.6 GA
    2月5日リリース!

    View full-size slide

  3. MySQL 5.6 Powered by Rabbit 2.0.6
    DBA and Developer Guide to
    MySQL 5.6
    http://dev.mysql.com/tech-resources/articles/
    mysql-5.6.html
    より抜粋

    View full-size slide

  4. MySQL 5.6 Powered by Rabbit 2.0.6
    InnoDB 性能向上
    TPS : CPUスレッド数
    TPS : 接続数

    View full-size slide

  5. MySQL 5.6 Powered by Rabbit 2.0.6
    TPS : CPUスレッド数
    Read Only
    http://dev.mysql.com/tech-resources/articles/mysql-5.6.html

    View full-size slide

  6. MySQL 5.6 Powered by Rabbit 2.0.6
    TPS : 接続数
    START TRANSACTION READ ONLY
    Read Only
    http://dev.mysql.com/tech-resources/articles/mysql-5.6.html

    View full-size slide

  7. MySQL 5.6 Powered by Rabbit 2.0.6
    オプティマイザ
    サブクエリの高速化
    ソートされた結果から少しだけ取り出す
    ICP / MRR / BKA

    View full-size slide

  8. MySQL 5.6 Powered by Rabbit 2.0.6
    サブクエリの高速化
    DBT-3 benchmark Query #18
    select c_name, c_custkey, o_orderkey, o_orderdate, o_totalprice, sum(l_quantity)
    from customer, orders, lineitem
    where o_orderkey in (
    select l_orderkey
    from lineitem
    group by l_orderkey
    having sum(l_quantity) > 313
    )
    and c_custkey = o_custkey
    and o_orderkey = l_orderkey
    group by c_name, c_custkey, o_orderkey, o_orderdate, o_totalprice
    order by o_totalprice desc, o_orderdate
    LIMIT 100;
    40日(MySQL 5.5) → 6.8秒(MySQL 5.6)
    http://oysteing.blogspot.jp/2012/07/from-months-to-seconds-with-subquery.html

    View full-size slide

  9. MySQL 5.6 Powered by Rabbit 2.0.6
    ソートされた結果から少しだけ取
    り出す
    2000万レコードをソートして10レコード取り
    出す
    SELECT col1, ... FROM t1 ... ORDER BY name LIMIT 10;
    40秒(MySQL 5.5) → 10秒(MySQL 5.6)
    http://didrikdidrik.blogspot.jp/2011/04/optimizing-mysql-filesort-with-small.html

    View full-size slide

  10. MySQL 5.6 Powered by Rabbit 2.0.6
    ICP / MRR / BKA
    Index Condition Pushdown (ICP)
    WHERE 条件をストレージに渡すことで高速

    Multi-Range Read (MRR)
    複数のセカンダリキーをプライマリキー順に
    ソートしてディスクアクセスを高速化
    Batched Key Access (BKA)
    テーブルJOIN時に複数のキーをまとめてアク
    セス

    View full-size slide

  11. MySQL 5.6 Powered by Rabbit 2.0.6
    BKA+MRR: join_buffer_size
    http://dev.mysql.com/tech-resources/articles/mysql-5.6.html

    View full-size slide

  12. MySQL 5.6 Powered by Rabbit 2.0.6
    運用に便利な機能
    オンラインDDL
    InnoDB
    Memcached / 全文検索 / EXPORT/IMPORT
    レプリケーション
    mysqlfailover / マルチスレッド スレー
    ブ / Binary Log Group Commit
    パフォーマンススキーマの改善
    セキュリティ改善

    View full-size slide

  13. MySQL 5.6 Powered by Rabbit 2.0.6
    オンラインDDL
    テーブル全体をコピーせずにテーブル構造を
    変更可能
    CREATE INDEX / DROP INDEX
    ADD / DROP FOREGIN KEY
    ADD / DROP / RENAME COLUMN
    AUTO_INCREMENT / ROW_FORMAT /
    KEY_BLOCK_SIZE
    NULL / NOT NULL
    カラムの順序変更

    View full-size slide

  14. MySQL 5.6 Powered by Rabbit 2.0.6
    InnoDB: Memcached
    Memcached プロトコルでデータの取得/保存
    が可能
    http://dev.mysql.com/tech-resources/articles/mysql-5.6.html

    View full-size slide

  15. MySQL 5.6 Powered by Rabbit 2.0.6
    InnoDB: Memcached
    http://dev.mysql.com/tech-resources/articles/mysql-5.6.html

    View full-size slide

  16. MySQL 5.6 Powered by Rabbit 2.0.6
    InnoDB: 全文検索(日本語はダメ)
    CREATE TABLE quotes
    (id int unsigned auto_increment primary key
    , author varchar(64)
    , quote varchar(4000)
    , source varchar(64)
    , fulltext(quote)
    ) engine=innodb;
    SELECT author AS "Apple" FROM quotes
    WHERE match(quote) against
    ('apple' in natural language mode);

    View full-size slide

  17. MySQL 5.6 Powered by Rabbit 2.0.6
    InnoDB: EXPORT/IMPORT
    テーブル単位で別のデータベースにコピー
    FLUSH TABLE t FOR EXPORT;
    cp t.ibd t.cfg /work/
    UNLOCK TABLES;
    CREATE TABLE t (...) ENGINE INNODB;
    ALTER TABLE t DISCARD TABLESPACE;
    cp /work/t.ibd /work/t.cfg ./
    ALTER TABLE t IMPORT TABLESPACE;

    View full-size slide

  18. MySQL 5.6 Powered by Rabbit 2.0.6
    レプリケーション:
    mysqlfailover
    マスター故障時に複数のスレーブの中から最
    適なサーバーをマスターに昇格

    View full-size slide

  19. MySQL 5.6 Powered by Rabbit 2.0.6
    レプリケーション:
    マルチスレッド スレーブ

    View full-size slide

  20. MySQL 5.6 Powered by Rabbit 2.0.6
    レプリケーション:
    Binary Log Group Commit
    バイナリログに複数のログをまとめて保存
    http://dev.mysql.com/tech-resources/articles/mysql-5.6.html

    View full-size slide

  21. MySQL 5.6 Powered by Rabbit 2.0.6
    レプリケーション: その他
    行ベースレプリケーションの改善
    クラッシュセーフスレーブ
    レプリケーションチェックサム
    遅延レプリケーション

    View full-size slide

  22. MySQL 5.6 Powered by Rabbit 2.0.6
    パフォーマンススキーマの改善
    Statements/Stages
    Table/Index I/O, Table Locks
    Users/Hosts/Accounts
    Network I/O
    Summaries

    View full-size slide

  23. MySQL 5.6 Powered by Rabbit 2.0.6
    セキュリティ改善
    クエリログにパスワードが暗号化されて
    記録される
    PASSWORD() が SHA-256 アルゴリズム
    を使用
    コマンドラインツール用のパスワード
    を .mylogin.cnf に暗号化して保存
    password_expired フラグでパスワード
    を無効化
    パスワード強度の設定

    View full-size slide