Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

5.7の次のMySQL

3,285 views

Published on

2016/11/03 phpcon 2016

Published in: Technology
  • Be the first to comment

5.7の次のMySQL

  1. 1. 5.7の次のMySQL 6.0が⿊歴史同⼠、仲良くしましょう 2016/11/03 yoku0825 phpcon 2016
  2. 2. \こんにちは/ yoku0825@GMOメディア株式会社 オラクれない- ポスグれない- マイエスキューエる- 家に帰ると 妻の夫- せがれの⽗- ムスメの⽗- ⽣息域 Twitter: @yoku0825- Blog: ⽇々の覚書- MyNA ML: ⽇本MySQLユーザ会- MySQL Casualʼs Slack: MySQL Casual- 1/23
  3. 3. Do you love MySQL 5.7? 2/23
  4. 4. MySQL 5.7のあれこれ 2015/10 GAリリース GA時点でいくつかの罠は解消されている- GA(General Availability .. Stable的な位置づけ)になってか らも新機能を追加してくる新しいスタイル バックポートならまだ以前もあったしわかるんだけど- メインラインにごりごり突っ込んでくるのは新しいスタイル- GAとは何だったのか- default̲password̲lifetimeの罠は 2016/02 5.7.11で解消 3/23
  5. 5. なんだかんだ⾔ってフツーに動いてます 運⽤⾯では割と楽なので(感じ⽅には個⼈差があります)積 極的に使ってはいます 5.7の新機能 offline̲mode を利⽤してコネクションプール 環境でもマスター切り替えができる mikasafabric for MySQL GTIDをオンラインでONにできるのも助かる- InnoDBのオンラインバッファプールサイズ変更は何度かや った generated columnで関数インデックスやら疑似CHECK制約 やら 暗黙のテンポラリーテーブルは怖いのでMyISAMに指定 4/23
  6. 6. で 5/23
  7. 7. その5.7の次 のMySQL 6/23
  8. 8.   7/23
  9. 9. _⼈⼈⼈_ > 8.0 <  ̄Y^Y^ ̄ 8/23
  10. 10. というと「6.0 は︖」って聞か れるんですけど 9/23
  11. 11. お互い6.0のことは忘れましょうや Ver. PHP MySQL 5.0 2004/10-2005/09 2005/10-2012/03 5.1 2005/11-2006/08 2008/11-2013-12 5.2 2006/11-2011/01 - 5.3 2009/06-2014/08 - 6.0 ??-2010/03 2007/09(? 6.0.2)-2009/05 5.4 2012/03-2015/09 - 5.5 2013/06-2016/07 2010/12- 5.6 2014/08- 2013/02- 5.7 - 2015/10- 7.0 2015/12- - 8.0 - 開発中 10/23
  12. 12. 7.0は︖ 11/23
  13. 13. 意外とフツーの理由でスキップ 12/23
  14. 14. MySQL 8.0の目⽟機能(︖) MyISAMへの依存をなくす MySQL 8.0.0現在、mysqlスキーマのテーブルは全てInnoDBに変更- トランザクション対応(︖ クラッシュセーフで終わるか も)DDL .frmや.TRGファイルがなくなった- オプティマイザーコストの最適化 最終的にはバッファプールに載ってるかどうかでコストを打ち分けて くれるとか - Group Replicationの標準バンドル マルチマスターを構成できるプラグイン- MySQL InnoDB Clusterがlabsで公開中- 13/23
  15. 15. その他の新機能 ROLE, DEFAULT̲ROLEの追加 SET PERSIST構⽂ mysql̲install̲dbの廃⽌ performance̲schema.variables̲infoが便利 再帰CTE(WITH句)のサポート 降順インデックス(INDEX (col1 DESC) が 読み⾶ばされずに 作成できる) 14/23
  16. 16. そして 15/23
  17. 17. その他の新 (︖)罠 16/23
  18. 18. default_password_lifetime <> 0 5.7.11で暗黙のデフォルトが0に変更されたが “次のメジャーバージョンでまた0以外にする” って⾔ってる から、8.0では来るのではないかと An update on default̲password̲lifetime- MySQL Bugs: #79939: default̲password̲lifetime > 0 should print warning at startup - MySQL Bugs: #79959: SYS should have a view of user accounts expiring - 17/23
  19. 19. 「kamipoのハハ=パパ問題」 “kamipo” “utf8̲unicode̲ci” でググると出てくる ⼀時期 Rails では “ハハ” = “パパ” をTRUEで返す照合順序 がデフォルトになっていた WHERE relationship = "ハハ" がパパのレコードも返してくる凄まじ い照合順序 - もともと⽇本⼈⽤ではなくて、ドイツ語のウムラオトとかを握りつぶ すためのもの - 名前のフリガナをDBに⼊れてると死ぬ- ⼊れてなくても死ぬ- 18/23
  20. 20. 「kamipoのハハ=パパ問題」 SELECT * FROM families; +----+-----------+--------------+ | id | name | relationship | +----+-----------+--------------+ | 1 | ユイ | 本人 | | 2 | キリト | パパ | | 3 | アスナ | ハハ | +----+-----------+--------------+ SELECT * FROM families WHERE relationship = 'パパ'; +----+-----------+--------------+ | id | name | relationship | +----+-----------+--------------+ | 2 | キリト | パパ | | 3 | アスナ | ハハ | +----+-----------+--------------+ (c) kamipo 19/23
  21. 21. 今までのデフォルト ⽂字コード latin1, 照合順序 latin1̲swedish̲ci ⼤⽂字⼩⽂字(a vs. A)は区別しないけど、ASCII以外の⽂字はノータ ッチ - というかlatin1な時点でみんな変更するからそれ程問題になることは なかった - ⽂字コード utf8(utf8mb4), 照合順序 utf8̲general̲ci (utf8mb4̲general̲ci) ⼤⽂字⼩⽂字(a vs. A)は区別しないけど、ASCII以外の⽂字はほぼノ ータッチ ただし寿司はビール - いわゆる「MySQLは⼤⽂字⼩⽂字を区別しない」と「ハハ ≠ パパ」 が両⽴していた - 20/23
  22. 22. MySQL本体のデフォルトがハハ=パパ問題を起こす⽇が 来る︖ In addition to utf8mb4, we are also considering switching the default collation to be utf8mb4̲unicode̲520̲ci. Planning the defaults for MySQL 5.8 MySQL Bugs: #79977: utf8mb4̲unicode̲520̲ci donʼt make sense for Japanese FTS 21/23
  23. 23. MySQL先⽣の次 回作にご期待くだ さい Stay tuned!! 22/23
  24. 24. Thank you!! 23/23

×