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.

[Java Küche RDB 最前線 2015] MySQL 5.7技術アップデート

788 views

Published on

Java Küche RDB 最前線 2015の「リリース目前!?MySQL 5.7技術アップデート」にて利用したMySQL 5.7 RCの資料です。CMも入っておりますがご了承下さい。スライドの最後に役に立つ情報リソースを追加しております #mysql_jp #JavaKueche

Published in: Technology
  • Be the first to comment

  • Be the first to like this

[Java Küche RDB 最前線 2015] MySQL 5.7技術アップデート

  1. 1. Copyright*©*201 ,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL&5.7&&& & Ryusuke*Kajiyama*/* */*@RKajiyama* MySQL*Sales*ConsulIng*Senior*Manager,*Asia*Pacific*&*Japan* The&State&of&the&Dolphin
  2. 2. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* SAFE*HARBOR*STATEMENT* 2*
  3. 3. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* The*world's*most*popular*open*source*database* * 3
  4. 4. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* 20*MySQL 20 * 15*MySQL 15 10*Innobase 10 5* 5 *A*Year*of*Anniversaries!
  5. 5. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* 6*
  6. 6. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* The*world's*most*popular*open*source*database* * DB8Engines.com& h^p://db`engines.com/en/* SNS
  7. 7. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* •  MySQL & * •  * –  Oracle,*Red*Hat,*CentOS** –  Fedora* –  Ubuntu,*Debian* •  * –  SUSE* –  * –  DevOps * •  * –  MySQL*Database* –  MySQL*Workbench* –  MySQL*Connector/ODBC* –  MySQL*Connector/Python* –  MySQL*Connector/NET* –  MySQL*UIliIes* * * 12* MySQL :*Yum,*APT,*NuGET*
  8. 8. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* GitHub MySQL & •  MySQL Git* –  * –  * –  * •  GitHub*for*MySQL*Community* –  * –  h^ps://github.com/mysql* –  :*h^p://mysqlrelease.com* 13*
  9. 9. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*5.6* h>p://dev.mysql.com/doc/refman/5.6/ja/index.html 14
  10. 10. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*Enterprise*EdiIon 15
  11. 11. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* 1 SCSK 16 1 MySQL MySQL MySQL Enterprise Monitor Query Analizer MySQL
  12. 12. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* ID UIDAI:&Unique&IdenNficaNon&Authority&of&India 17 *(UIDAI:* Unique*IdenIficaIon*Authority*of* India Aadhaar ID 2015 8 9 ID * MySQL UID MySQL MySQL ACID
  13. 13. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* ** * •  * •  * •  * •  * •  * •  * •  * •  * •  •  * •  * •  * •  * * MySQL*Enterprise*EdiIon* 18*
  14. 14. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* “ MySQL DBA”## # MySQL*Enterprise*Monitor •  MySQL * •  MySQL * * * •  * •  & •  SQL Query*Analyzer*
  15. 15. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL&Enterprise&Backup& •  / * •  •  *&* * MySQL&Enterprise&Security& •  (PAM,* Windows,*LDAP,*etc.)* • MySQL*Enterprise*Monitor MySQL&Enterprise&EncrypNon& • AES256 * •  /* * •  * MySQL&Enterprise&Audit& •  SQL * •  * •  XML * MySQL*Enterprise*EdiIon
  16. 16. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*Enterprise*Firewall* •  SQL*InjecIon*ProtecIon*with*PosiIve*Security*Model* •  Out*of*policy*database*transacIons*detected*and*blocked* •  Logging*&*Analysis* 21*
  17. 17. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*Support * •  & SQL & –  & & –  & h>p://www8jp.mysql.com/support/consultaNve.html& •  & –  & –  &
  18. 18. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*Support * •  & – CPU & •  & –  & h>p://www.oracle.com/jp/support/lifeNme8support/index.html& h>p://www8jp.mysql.com/support/&
  19. 19. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Oracle*Enterprise*Manager*for*MySQL* Web & •  70% MySQL * – Web * –  * * ** 24*
  20. 20. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*Enterprise*EdiIon*&*Cluster*CGE * 30 & •  Oracle&SoXware&Delivery&Cloud& h^p://edelivery.oracle.com/** * •  * “MySQL*Database”* * •  * h^p://dev.mysql.com/doc/index` enterprise.html* * *
  21. 21. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*Cluster*7.4*GA 26
  22. 22. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* 1,000 MySQL*Cluster 27 Paypal 1 20 203 30% MySQL MySQL Cluster AWS 5 1/3 MySQL “NoSQL SQL ” Daniel Austin, Chief Architect, PayPal h>p://www8jp.mysql.com/customers/view/?id=1223
  23. 23. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* :* * •  * •  * •  * •  * •  * •  * •  * •  * •  * •  *&* * •  4 MySQL*Cluster *Linux Windows* MySQL*User*Conference*Session:*h^p://bit.ly/ogeid3*
  24. 24. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*Cluster:*SQL*and*NoSQL*Hybrid*APIs AcNve8AcNve&RDBMS && NoSQL& 29 MySQL*Cluster*Data*Nodes* Apps Apps Apps Apps Apps Apps Apps Apps Apps Apps Apps JPA Cluster*JPA PHP Perl Python Ruby JDBC Cluster*J JS Memcached MySQL JNI Node.JS ndb_eng NDB*API*(C++)
  25. 25. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*Cluster*7.4*–* NoSQL:*20 / & * FlexAsych*(C++*NDB*API) SQL:*250 / & * DBT2*BM 31 !"!!!! !50,000,000!! !100,000,000!! !150,000,000!! !200,000,000!! !250,000,000!! 2! 4! 6! 8! 10! 12! 14! 16! 18! 20! 22! 24! 26! 28! 30! 32! Reads&per&second& Data&Nodes& FlexAsync&Reads& !"!!!! !500,000!! !1,000,000!! !1,500,000!! !2,000,000!! !2,500,000!! !3,000,000!! 2! 4! 6! 8! 10! 12! 14! 16! SQL$Statements/sec$ Data$Nodes$ DBT2$SQL$Statements$per$Second$
  26. 26. Copyright*©*201 ,*Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL& & & *
  27. 27. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* 33 4.0& /GIS*(MyISAM)* UPDATE/DELETE* Oracle*MySQL* Sun* 3.23& MyISAM* InnoDB* * 5.1& * * * * * 5.6& memcached*API* UNDO * Global*TransacIon*ID* * ALTER*TABLE* * 5.5& InnoDB * * PERFORMANCE_SCHEMA* 1.083.22 & *(ISAM,*HEAP) Windows /64bit * *(SJIS/UJIS) 5.0& * / / * XA INFORMATION_SCHEMA* 4.1& Unicode * * CSV,*ARCHIVE* ndbcluster* 1995 2000 2005 2010 2015 5.7+& * * * * CJK /GIS*(InnoDB)* * * NoSQL * * *
  28. 28. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* •  MySQL*5.0*(2005)* –  * –  * –  * –  * –  * – XA * – INFORMATION_SCHEMA* •  MySQL*5.1*(2008)* –  * * –  * –  * * –  * –  34 •  MySQL*5.5*(2010)* – InnoDB * –  * * –  * * – PERFORMANCE_SCHEMA MySQL
  29. 29. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* •  * –  * –  * – SSD * – UNDO * –  * – JSON*EXPLAIN* – Memcached*API* •  – Global*TransacIon*ID* –  * –  * – Binlog* * –  * –  * * –  35 •  * –  ALTER*TABLE* –  * * –  * * –  * •  * •  SHA256* •  * MySQL*5.6
  30. 30. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*5.6:*InnoDB*–* ALTER&TABLE •  ADD/DROP*INDEX* •  ADD/DROP*COLUMN* •  ADD/DROP*FOREIGN*KEY* •  RENAME*COLUMN,*TABLE* •  CREATE*PRIMARY*KEY* •  ALTER*ROW_FORMAT,*KEY_BLOCK_SIZE* •  ALTER*COLUMN*NULLABLE,*NOT_NULLABLE* • 
  31. 31. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*5.6:*InnoDB •  * •  / * •  ID & :* mysql> SET innodb_buffer_pool_dump_at_shutdown=ON; :* mysql> SET innodb_buffer_pool_load_at_startup=ON;* ! * * ! * SaaS *
  32. 32. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* CREATE TABLE t(c1 INT) engine=InnoDB; FLUSH TABLE t FOR EXPORT; -- quiesce the table and create the meta data file $innodb_data_home_dir/test/t.cfg UNLOCK TABLES; CREATE TABLE t(c1 INT) engine=InnoDB; -- if it doesn't already exist ALTER TABLE t DISCARD TABLESPACE; -- The user must stop all updates on the tables, prior to the IMPORT ALTER TABLE t IMPORT TABLESPACE; MySQL*5.6:*InnoDB •  MySQL * – Export* – Import
  33. 33. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*5.6:*InnoDB RDBMS NoSQL •  Memcached*API * –  Memcached * – SQL •  NotOnlySQL * –  * –  JOIN FK SQL •  * – mysqld Memcached * –  InnoDB*API memcached* * InnoDB&Storage&Engine& MySQL&Server& Memcached&plugin& ApplicaNon& SQL&& (MySQL&Client)& NoSQL&& (Memcached& &&Protocol)& mysqld&
  34. 34. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* InnoDB*memcached*Plugin •  The*mapping*is*done*through*specifying*corresponding*column*values*in* containers*table:* mysql> desc containers; +------------------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------------+--------------+------+-----+---------+-------+ | name | varchar(50) | NO | PRI | NULL | | | db_schema | varchar(250) | NO | | NULL | | | db_table | varchar(250) | NO | | NULL | | | key_columns | varchar(250) | NO | | NULL | | | value_columns | varchar(250) | YES | | NULL | | | flags | varchar(250) | NO | | 0 | | | cas_column | varchar(250) | YES | | NULL | | | expire_time_column | varchar(250) | YES | | NULL | | | unique_idx_name_on_key | varchar(250) | NO | | NULL | | +------------------------+--------------+------+-----+---------+-------+ 9 rows in set (0.02 sec)
  35. 35. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*5.7*RC2 41
  36. 36. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*5.7*Release*Candidate*2*Available!* 42* InnoDB :* * Online&Bulk*load* * * *(mulI`source,*mulI`threaded*slaves )* :* greater*user*control*&*be^er*query*performance* Performance*Schema * MySQL*SYS*Schema * &&& & & MySQL*5.6 2 * :** ,* & * NEW!*JSON Support*(now*in*labs)* RC2* And*many*more*new*features*and*enhancements...*h^p://mysqlserverteam.com/the`mysql`5`7`7`release`candidate`is`available/*#
  37. 37. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* 0& 100,000& 200,000& 300,000& 400,000& 500,000& 600,000& 700,000& 8& 16& 32& 64& 128& 256& 512& 1,024& Queries&per&Second& ConnecNons& MySQL&5.7:&Sysbench&Read&Only&(Point&Select)& MySQL&5.7& MySQL&5.6& MySQL&5.5& MySQL*5.7:*Sysbench*Benchmark* * Intel(R)*Xeon(R)*CPU*E7`4860*x86_64* 4*sockets*x*10*cores`HT*(80*CPU*threads)* 2.3*GHz,*512*GB*RAM* Oracle*Linux*6.5* &&&&&&&&&&2x&Faster&than&MySQL&5.6& & & & &3x&Faster&than&MySQL&5.5& 645,000&QPS& 43*
  38. 38. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* InnoDB* * Thank*you,*SanDisk*Fusion`io* •  * –  * – IO * –  * OS (NVMFS) * •  IO ** – MySQL * –  * –  SSD * •  InnoDB UNDO * 44* RC2*
  39. 39. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*5.7:* *–* & SQL •  * – * * – * * •  * –  I/O * –  * •  * •  EXPLAIN JSON * * 45*
  40. 40. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*5.7:*OpImizer*`*JSON*EXPLAIN * •  JSON*EXPLAIN * –  * – MySQL*Workbench Visual*Explain * { "query_block": { "select_id": 1, "cost_info": { "query_cost": "200.40" }, "table": { "table_name": "nicer_but_slower_film_list", "access_type": "ALL", "rows_examined_per_scan": 992, "rows_produced_per_join": 992, "filtered": 100, "cost_info": { "read_cost": "2.00", "eval_cost": "198.40", "prefix_cost": "200.40", "data_read_per_join": "852K" }, "used_columns": [ "FID", "title", "description", "category", "price", "length", "rating", "actors" ], ...
  41. 41. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* InnoDB*`**Temporary*Tables* •  * – CREATE/DROP * – DDL , I/O * •  DML * – No*REDO*logging,*no*change*buffering,*less*locking* •  * – ACID/MVCC * –  * 48* 14.11&InnoDB&Startup&OpNons&and&System&Variables&
  42. 42. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* InnoDB*`*NaIve*parIIoning*Support InnoDB * •  •  49 Handler* *(ha_innopart)* Encapsulate*all*parIIoning*in*one*single&handler InnoDB&NaNve&ParNNoning&–&Early&Access& main*handler& (ha_parIIon) ParIIon*1* handler& ha_innobase ParIIon*2* handler& ha_innobase ParIIon*N* handler& ha_innobase ………
  43. 43. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* & •  *( )** •  * –  * * –  * – JOIN * •  OR * * 50*
  44. 44. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* InnoDB*`*Full*Text*Search*(FTS) •  N`gram * –  * •  mecab * –  51 CREATE TABLE `N_DEMO`( `FTS_N_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(100) DEFAULT NULL, PRIMARY KEY (`FTS_N_ID`), FULLTEXT KEY `ngram_idx` (`title`) /*!50100 WITH PARSER `ngram` */ ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4; CREATE TABLE `M_DEMO` ( `FTS_M_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(100) DEFAULT NULL, PRIMARY KEY (`FTS_M_ID`), FULLTEXT KEY `mecab_idx` (`title`) /*!50100 WITH PARSER `mecab` */ ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
  45. 45. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*5.7*RC * •  Performance&Schema:*性能統計情報のさらなる追加* •  * •  SYSLOG Linux/Windows * •  GIS InnoDB Boost.Geometry * •  Security , * 52* •  ReplicaNon*for*be^er*scalability*and*availability* •  Fabric*for*high*availability*and*sharding*
  46. 46. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL&SYS&Schema& DB管理者、開発者や運用担当者を支援& •  DB管理者や運用担当者の作業効率を改善& *`*サーバの稼働状況、ユーザやホストの状況、主要な稼働指標*** *`*性能問題の発見、分析および改善* * •  状況をより簡単に把握し理解するための複数のビュ ー& *`*IO量の高いファイルや処理、ロック、コストの高いSQL文*** *`*テーブル、インデックス、スキーマの統計*** •  他のデータベースにおけるSYS類似機能:* `  Oracle*V$表*****(動的パフォーマンスビュー)* `  Microso{*SQL*Server*DMV (Dynamic*Management*Views)* 53*
  47. 47. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* & 54* • Resize&the&InnoDB&Buffer&Pool&online** –  オンラインでのバッファーサイズのチューニング* –  データベースの使用パターンの変化にリアルタイムで適応* • Separate&UNDO&tablespace& –  自動オンラインUNDOログ切り捨て(MySQL*5.7.5∼)* –  UNDOログファイルサイズの増加を回避する事が可能* • Dynamic&configuraNon& –  Making*exisIng*se|ngs*dynamically*configurable* –  As*a*design*principle*for*new*features*&*se|ngs* –  その他、幾つかのレプリケーションの設定変更等も*   オンラインで変更可能になりました。* 14.4.8*TruncaIng*Undo*Logs*That*Reside*in*Undo*Tablespaces*
  48. 48. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* •  * –  * –  * •  OGC(Open*GeospaIal*ConsorIum) * –  * •  Boost.Geometry * –  * –  * •  Boost.Geometry * MySQL&5.7:&GIS&8&Boost.Geometry & 55* ALTER*TABLE* add*SPATIAL*index( );
  49. 49. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*5.7* •  mysql_install_db * – mysqld ``iniIalize ``iniIalize`insecure * •  CREATE*USER ALTER*USER * – SSL,*PASSWORD*EXPIRE,*ACCOUNT*[LOCK*|*UNLOCK]* •  mysql.user Password authenIcaIon_string * •  SET*PASSWORD PASSWORD() * – ALTER*USER * •  ENCRYPT,*DES_ENCRYPT,*DES_DECRYPT *AES 56 mysqld*``iniIalize*``user=mysql mysql_install_db*``user=mysql
  50. 50. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Security&8&EncrypNon,&Passwords,&InstallaNon& •  AES*256*EncrypIon*(Default*in*MySQL*5.7*)* •  * –  * •  * –  / * –  ,* (test),* * 57* [&Global&ConfiguraNon&]& SET*GLOBAL*default_password_lifeIme*=*180;* [&Individual&user&accounts&]& ALTER*USER*joro@sv1*PASSWORD*EXPIRE*INTERVAL*90*DAY;* ALTER*USER*joro@sv1PASSWORD*EXPIRE*DEFAULT;* ALTER*USER*joro@sv1PASSWORD*EXPIRE*NEVER;*
  51. 51. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* •  * 1 * –  * –  * –  * •  & * * •  * MySQL*5.7:*MulI`Source*ReplicaIon* Binlog* Master*1* Binlog* Master*2* …* …* Binlog* Master*N* IO*1* Relay*1* Coordinator* W1* W2* …* WX* IO*2* Relay*2* Coordinator* W1* W2* …* WX* …* …* Coordinator* W1* W2* …* WX* IO*N* Relay*N* Coordinator* W1* W2* …* WX* Slave& 58*
  52. 52. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*5.7:*スキーマ内マルチスレッドスレーブ* •  * 5 * –  * –  * * •  GTID*&* * * •  Sysbench*OLTP*test* – 1,000 * – SSD*/*48*core*HT*/*512*GB*RAM* * 59* 0* 500* 1000* 1500* 2000* 2500* 3000* 3500* 4000* 4500* 5000* 0* 4* 16* 25* 50* 100* 200* Worker&Threads& Slave&TransacNons&per&Second& Baseline* 50*clients* 100*clients* 150*clients* 200*clients* 88slave8parallel8type& & 1.&DATABASE**:*(Default)*Use*the*db*parIIoned*MTS*(1*worker*per*database)* 2.&LOGICAL_CLOCK:**Use*logical*clock*based*parallelizaIon*mode.&
  53. 53. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* 60 MySQL*Slave*ReplicaIon*Filters*Dynamic* REPLICATE_DO_DB** REPLICATE_IGNORE_DB** REPLICATE_DO_TABLE** REPLICATE_IGNORE_TABLE* REPLICATE_WILD_DO_TABLE* REPLICATE_WILD_IGNORE_TABLE* REPLICATE_REWRITE_DB* MySQL`5.7.3 “CHANGE'REPLICATION'FILTER”& * *slave** MySQL`5.7.3 OpIon (my.cnf) MySQL The*following*slave*replicaIon*filters*can*be* changed*dynamically*using*this*command. mysql>*STOP*SLAVE*SQL_THREAD;* Query*OK,*0*rows*affected*(0.05*sec)* mysql>*CHANGE*REPLICATION*FILTER* REPLICATE_DO_DB=(db1);* Query*OK,*0*rows*affected*(0.00*sec) )* MySQL85.7.38&Making&MySQL&Slave&ReplicaNon&Filters&Dynamic&
  54. 54. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*Fabric*1.5:* *&* * •  OpenStack* * •  * –  ;* * •  * –  * •  * –  * –  * •  Fabric :*Python,*Java,* PHP,*.NET,*C*(labs)* –  * * 62* MySQL&Fabric& Connector* ApplicaIon* Read8slaves& mappings& SQL& HA&group& Read8slaves& HA&group& Connector* ApplicaIon*
  55. 55. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*Labs 63
  56. 56. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*Labs •  * –  * •  MySQL MySQL*Cluster * – MySQL*5.6*memcached*API* – MySQL*Cluster*7.2*memcached*API* – MySQL*5.6*Performance*Schema* – MySQL*5.6*Intra`schema*MulI*Thread*Slave* – MySQL*5.6*Online*Alter*Table* – MySQL*5.7*MulI*Source*ReplicaIon* – MySQL*5.7*New*OpImizer*Cost*Model
  57. 57. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* •  ” ” * •  * –  ( * –  “OpImisIc*State*Machine”* * •  * –  * –  / * –  * –  * •  * –  InnoDB* –  GTID * –  PERFORMANCE_SCHEMA* MySQL*5.7:* * ApplicaIon* MySQL*Masters* ReplicaIon** Plugin* API* MySQL* Server* Group*Comms* (Corosync)* 65* labs.mysql.com*
  58. 58. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*Binlog*Events Binlog&API •  C++ * •  * – 2 "transport"* – TCP*Transport*&*File*Transport* •  * –  * •  API* h^p://mysqlhighavailability.com/author/nehakumari/* 66
  59. 59. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* HTTP*Plugin*for*MySQL& •  MySQL HTTP(S) * •  UTF8 JSON * •  3 * – SQL* – CRUD*`*Key`Value* – JSON*`*Document* •  For*more*details;* h^p://www.slideshare.net/nixnutz/h^p`plugin`for`mysql`39598656* 67*
  60. 60. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* HTTP*Plugin*for*MySQL The&SQL&endpoint&and&JSON& 68 shell> curl -X GET --user scott:tiger --url 'http://127.0.0.1:8080/sql/world/ SELECT+ID,Name+FROM+City+WHERE+Name=%27Tokyo%27' [ { "meta":[ {"type":,"catalog":"def","database":"world","table":"City","org_table":"ci ty","column":"ID","org_column":"ID","charset":63,"length":11,"flags": 16899,"decimals":0}, {"type": 254,"catalog":"def","database":"world","table":"City","org_table":"city","column ":"Name","org_column":"Name","charset":33,"length":105,"flags":1,"decimals":0} ], "data":[ ["1532","Tokyo"] ], "status":[{"server_status":34,"warning_count":0 } ]
  61. 61. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* HTTP*Plugin*for*MySQL*–* SQL CRUD JSON& URL h>p[s]://server:port/sql/ h>p[s]://server:port/crud/ h>p[s]://server:port/doc/ SQL CRUD CRUD JSON * SQL Yes No No HTTP GET GET,&PUT.&DELETE GET,&PUT.&DELETE& Yes No Yes Yes Yes Yes UTF88 UTF88 UTF88 Yes Yes Yes 69
  62. 62. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*5.7:*JSON* •  * •  JSON * –  * •  JSON * –  * – SQL * •  Generated*Columns( ) ** – InnoDB STORED VIRTUAL Generated*Columns * –  * •  h^p://mysqlserverteam.com/json`labs`release`overview/* 70* RC2*
  63. 63. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*5.7:*JSON 71 mysql> CREATE TABLE employees (ename JSON); Query OK, 0 rows affected (0,01 sec) mysql> INSERT INTO employees VALUES ('{"id": 1, "name": "Jane"}'); Query OK, 1 row affected (0,00 sec) mysql> INSERT INTO employees VALUES ('{"id": 2, "name": "Joe"}'); Query OK, 1 row affected (0,00 sec) mysql> SELECT * FROM employees; +---------------------------+ | ename| +---------------------------+ | {"id": 1, "name": "Jane"} | | {"id": 2, "name": "Joe"} | +---------------------------+ 2 rows in set (0,00 sec) RC2*
  64. 64. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL*5.7:*JSON •  Document*ValidaIon* – on*insert*only** •  Efficient*Access* 72 mysql> INSERT INTO employees VALUES ('some random text'); ERROR 3130 (22032): Invalid JSON text: "Expect a value here." at position 0 in value (or column) 'some random text'. mysql> SELECT JSON_EXTRACT(ename, '$.name') FROM employees; +-------------------------------+ | JSON_EXTRACT(ename, '$.name') | +-------------------------------+ | "Jane" | | "Joe" | +-------------------------------+ 2 rows in set (0,00 sec) RC2*
  65. 65. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* New*JSON*datatype:*Supported*Types •  JSON * –  Bool* –  * •  * –  (dateIme) (Imestamp)* – NULL*(5.7.9*)* –  73 RC2*
  66. 66. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* •  json_array() –  Build*a*JSON*array*from*list*of*expressions* •  json_object() –  Builds*JSON*objects*from*a*variable*length*list* of*key/value*pairs* •  json_insert() –  Adds*'missing'*data*to*JSON*documents* •  json_remove() –  Removes*a^ributes*from*exisIng*JSON* documents* •  json_set() –  Sets*a^ributes*within*JSON*documents* •  json_replace() –  Replaces*(but*doesn't*add)*a^ributes*within* JSON*documents* •  json_append() json_array_append()*(5.7.9+)* –  Adds*a*value*to*the*end*of*an*array* •  json_merge() –  Merges*two*arrays** •  json_extract() –  Returns*a*value*nested*inside*of*a*JSON* document* 74* JSON*FuncIons*for*CreaIng*&*ManipulaIng* *JSON*Documents* RC2*
  67. 67. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* •  json_search() –  Search*for*values*within*JSON*documents*and* return*their*locaIons* •  json_contains() –  Checks*for*a*specific*element*and*value* •  json_contains_path() –  Determine*if*a*specific*element*is*present*in*a* document*in*a*specific*posiIon* •  json_valid() –  Check*if*document*is*a*valid*JSON*document* •  json_type() –  Find*the*type*of*a*value*within*a*document* •  json_keys() –  Returns*arrays*of*the*key*names*for*the*JSON* documents* •  json_length() –  Number*of*elements*in*JSON*document* •  json_depth() –  Level*of*nesIng*in*JSON*document* •  json_unquote() –  Helps*move*from*JSON*to*other*MySQL*types* •  json_quote() –  Helps*move*from*other*MySQL*types*to*JSON* 75* Query*and*Search*JSON*FuncIons* RC2*
  68. 68. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* Generated*Columns*`* & •  Virtual*Generated*Column* –  * –  * •  Stored*Generated*Column* –  * –  * mysql> ALTER TABLE employees ADD iname VARCHAR(100) GENERATED ALWAYS AS(json_extract(ename, '$.name')) VIRTUAL; mysql> ALTER TABLE employees ADD INDEX(iname); h^p://mysqlserverteam.com/* 76* JSON & RC2*
  69. 69. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* •  * –  JOIN* –  * –  * •  * –  / * 77* ?*
  70. 70. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* 5.6& MySQL&Server&8&GA& InnoDB & & &&&NoSQL & MySQL&Cluster&8&GA& 2 NoSQL 200 SQL & & 7.4& 5.7& MySQL&Server&8&RC2& &&& & JSON Group&ReplicaNon & 78
  71. 71. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* MySQL •  MySQL * – h^p://www.mysql.gr.jp* •  MySQL*5.6* – h^p://dev.mysql.com/doc/refman/5.6/ja/index.html* •  MySQL 1 MySQL * – h^p://gihyo.jp/dev/serial/01/mysql`road`construcIon`news/0001* •  MySQL * – h^p://mysqlserverteam.com/*
  72. 72. Copyright*©*201 *Oracle*and/or*its*affiliates.*All*rights*reserved.**|* The*world's*most*popular*open*source*database* * 80

×