第九回中国地方db勉強会 in 米子 mysql 5.7+

65
Copyright © 201, Oracle and/or its affiliates. All rights reserved. | Ryusuke Kajiyama / 梶山隆輔 / @RKajiyama MySQL Sales ConsulIng Senior Manager, Asia Pacific & Japan The State of the Dolphin

Upload: ryusuke-kajiyama

Post on 28-Jul-2015

1.269 views

Category:

Software


0 download

TRANSCRIPT

1. Copyright201,Oracleand/oritsaliates.Allrightsreserved.| RyusukeKajiyama//@RKajiyama MySQLSalesConsulIngSeniorManager,AsiaPacic&Japan TheStateoftheDolphin 2. Copyright201Oracleand/oritsaliates.Allrightsreserved.| SAFEHARBORSTATEMENT 5 3. Copyright201Oracleand/oritsaliates.Allrightsreserved.| Theworld'smostpopularopensourcedatabase 4. Copyright201Oracleand/oritsaliates.Allrightsreserved.| AYearofAnniversaries! 20Years:MySQL 10Years:OraclestewardshipofInnoDB 5Years:OraclestewardshipofMySQL ThankYou,MySQLCommunity,for20yearsof ContribuIonstoMySQL! 5. Copyright201Oracleand/oritsaliates.Allrightsreserved.| KeyannouncementsinJan-Apr2015 MySQLCluster7.4GA 200MillionNoSQLReads/ Sec 2.5MSQLOps/Sec 50%FasterReads 40%FasterMixed 5XFasterMaintenance Ops MySQLEnterprise Firewall RealTimeProtecIon BlocksSQLInjecIon Acacks BlockSuspiciousTrac LearnsWhiteList Transparent MySQL5.7RC 2XFasterthanMySQL5.6 NewOpImizerCost Model ReplicaIon Improvements InnoDBFTSCJKSupport 8 6. Copyright201Oracleand/oritsaliates.Allrightsreserved.| 9 7. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQL & Oracle,RedHat,CentOS Fedora Ubuntu,Debian SUSE DevOps MySQLDatabase MySQLWorkbench MySQLConnector/ODBC MySQLConnector/Python MySQLConnector/NET MySQLUIliIes 10 MySQL:Yum,APT,NuGET 8. Copyright201Oracleand/oritsaliates.Allrightsreserved.| GitHubMySQL MySQLGit GitHubforMySQLCommunity hcps://github.com/mysql :hcp://mysqlrelease.com 11 9. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQL5.6 hAp://dev.mysql.com/doc/refman/5.6/ja/index.html 12 10. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQLEnterpriseEdiIon 13 11. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQLEnterpriseBackup / & MySQLEnterpriseSecurity (PAM, Windows,LDAP,etc.) MySQLEnterpriseMonitor MySQLEnterpriseEncrypNon AES256 / MySQLEnterpriseAudit SQL XML MySQLEnterpriseEdiIon 12. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQLEnterpriseFirewall SQLInjecIonProtecIonwithPosiIveSecurityModel OutofpolicydatabasetransacIonsdetectedandblocked Logging&Analysis Select *.* from employee where id=22! Select *.* from employee where id=22 or 1=1! Block&Log Allow&Log WhiteListApplicaNons 13. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQLEnterpriseFirewallDetails FirewalloperaIonisturnedonataperuserlevel PerUserStatesare RECORDING PROTECTING OFF 14. Copyright201Oracleand/oritsaliates.Allrightsreserved.| WhathappenswhenSQLisblocked? TheclientapplicaIongetsanERROR mysql> SELECT first_name, last_name FROM customer WHERE customer_id = 1 OR TRUE; ERROR 1045 (28000): Statement was blocked by Firewall mysql> SHOW DATABASES; ERROR 1045 (28000): Statement was blocked by Firewall mysql> TRUNCATE TABLE mysql.user; ERROR 1045 (28000): Statement was blocked by Firewall ReportedtotheErrorLog IncrementCounter 15. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQLCluster7.4GA 18 16. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQLCluster:SQLandNoSQLHybridAPIs MySQLClusterDataNodes AppsAppsAppsAppsAppsAppsAppsAppsAppsAppsAppsApps JPA ClusterJPA PHPPerlPythonRubyJDBCClusterJJSApacheMemcached MySQLJNINode.JSmod_nd b ndb_eng NDBAPI(C++) 17. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQLCluster7.4GA 200MillionNoSQL Reads/Sec 2.5MSQLOps/Sec 50%FasterReads 40%FasterMixed Performance AcIve-AcIve Geographic Redundancy ConictDetecIon/ ResoluIon AcIve-AcIve 5XFaster MaintenanceOps DetailedReporIng Management 9thApril2015 Copyright2015,oracleand/oritsaliates.Allrightsreserved 20 18. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MemoryopImizedtables Durable Mixwithdisk-basedtables MassivelyconcurrentOLTP DistributedJoinsforanalyIcs Paralleltablescansfornon-indexed searches MySQLCluster7.4FlexAsych 200MNoSQLReads/Second 9thApril2015 21 MySQLCluster7.4NoSQLPerformance 200MillionNoSQLReads/Second Copyright2015,oracleand/oritsaliates.Allrightsreserved !"!!!! !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& 19. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MemoryopImizedtables Durable Mixwithdisk-basedtables MassivelyconcurrentOLTP DistributedJoinsforanalyIcs Paralleltablescansfornon-indexed searches MySQLCluster7.4DBT2BM 2.5MSQLStatements/Second 9thApril2015 22 MySQLCluster7.4SQLPerformance 2.5MSQLStatements/Second Copyright2015,oracleand/oritsaliates.Allrightsreserved !"!!!! !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$ 20. Copyright201,Oracleand/oritsaliates.Allrightsreserved.| MySQL 21. Copyright201Oracleand/oritsaliates.Allrightsreserved.| 24 4.0 /GIS(MyISAM) UPDATE/DELETE OracleMySQL Sun 3.23 MyISAM InnoDB 5.1 5.6 memcachedAPI UNDO GlobalTransacIonID ALTERTABLE 5.5 InnoDB PERFORMANCE_SCHEMA 1.0-3.22 (ISAM,HEAP) Windows/64bit (SJIS/UJIS) 5.0 // XA INFORMATION_SCHEMA 4.1 Unicode CSV,ARCHIVE ndbcluster 19952000200520102015 5.7+ CJK/GIS(InnoDB) NoSQL 22. Copyright201Oracleand/oritsaliates.Allrightsreserved.| SSD UNDO JSONEXPLAIN MemcachedAPI GlobalTransacIonID Binlog 25 ALTERTABLE SHA256 MySQL5.6 23. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQL5.7RC 26 24. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQL5.7ReleaseCandidateAvailable! 27 InnoDB: Online&Bulkload (mulI-source,mulI-threadedslaves) : greaterusercontrol&becerqueryperformance PerformanceSchema MySQLSYSSchema & MySQL5.62 : ,& NEW!JSONSupport(nowinlabs) RC Andmanymorenewfeaturesandenhancements...hcp://mysqlserverteam.com/the-mysql-5-7-7-release-candidate-is-available/ 25. Copyright201Oracleand/oritsaliates.Allrightsreserved.| 0 100,000 200,000 300,000 400,000 500,000 600,000 700,000 8 16 32 64 128 256 512 1,024 QueriesperSecond ConnecNons MySQL5.7:SysbenchReadOnly(PointSelect) MySQL5.7 MySQL5.6 MySQL5.5 MySQL5.7:SysbenchBenchmark Intel(R)Xeon(R)CPUE7-4860x86_64 4socketsx10cores-HT(80CPUthreads) 2.3GHz,512GBRAM OracleLinux6.5 2xFasterthanMySQL5.6 3xFasterthanMySQL5.5 645,000QPS 28 26. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQL5.7: SQL I/O EXPLAINJSON 29 labs.mysql.com 27. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQL5.7:OpImizer-JSONEXPLAIN JSONEXPLAIN MySQLWorkbenchVisualExplain 30 { "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" ], ... 28. Copyright201Oracleand/oritsaliates.Allrightsreserved.| InnoDB-GeneralTablespaceSupport 31 Ageneraltablespaceisasharedtablespace,similartothesystemtablespace.ItcanholdmulIpletables,andsupportsall tablerowformats.GeneraltablespacescanalsobecreatedinalocaIonrelaIvetoorindependentofthedatadirectory. [USER01]>CREATETABLESPACEU_TABLESPACE01ADDDATAFILE'/home/mysql/user_tablespace01.ibd'Engine=InnoDB; QueryOK,0rowsaected(0.01sec) [USER01]>CREATETABLESPACEU_TABLESPACE02_8KADDDATAFILE'/home/mysql/user_tablespace02_8k.ibd'FILE_BLOCK_SIZE=8192Engine=InnoDB; QueryOK,0rowsaected(0.01sec) [USER01]>CREATETABLE`T_USER01`( >`id`int(11)NOTNULLAUTO_INCREMENT,`text`varchar(100)DEFAULTNULL,PRIMARYKEY(`id`) >)TABLESPACE=U_TABLESPACE01ENGINE=InnoDBAUTO_INCREMENT=1DEFAULTCHARSET=u8mb4; QueryOK,0rowsaected(0.01sec) [USER01]>CREATETABLE`T_USER02_8K`( >`id`int(11)NOTNULLAUTO_INCREMENT,`text`varchar(100)DEFAULTNULL,PRIMARYKEY(`id`) >)TABLESPACE=U_TABLESPACE02_8KENGINE=InnoDBAUTO_INCREMENT=1DEFAULTCHARSET=u8mb4 >ROW_FORMAT=COMPRESSEDKEY_BLOCK_SIZE=8; QueryOK,0rowsaected(0.00sec) 13.1.15CREATETABLESPACESyntax 29. Copyright201Oracleand/oritsaliates.Allrightsreserved.| InnoDB-TemporaryTables CREATE/DROP DDL,I/O DML NoREDOlogging,nochangebuering,lesslocking ACID/MVCC 32 14.11InnoDBStartupOpNonsandSystemVariables 30. Copyright201Oracleand/oritsaliates.Allrightsreserved.| () JOIN OR 33 31. Copyright201Oracleand/oritsaliates.Allrightsreserved.| GeneratedColumnSupport 35 CREATETABLET_Generated_Column( >pidint(10)unsignedNOTNULLAUTO_INCREMENT, >pnamevarchar(1024)DEFAULTNULL, >pricedecimal(10,2),qtyint(10), >totaldecimal(10,2)GENERATEDALWAYSAS(price*qty) STORED, >PRIMARYKEY(pid) >)ENGINE=InnoDBDEFAULTCHARSET=u8mb4; QueryOK,0rowsaected(0.02sec) (2) -VIRTUAL(default):SELECT, -STORED:INSERT/UPDATE, Usefulfor: -FuncIonalindex:createastoredcolumn,addasecondaryindex -MaterializedcacheforcomplexcondiIons -Simplifyqueryexpression [GENERATEDALWAYS]AS()[VIRTUAL|STORED][UNIQUE[KEY]][[PRIMARY]KEY][NOTNULL][COMMENT] 32. Copyright201Oracleand/oritsaliates.Allrightsreserved.| GeneratedColumnSupport 36 GeneratedColumnIndex Whereindex GeneratedColumnsinMySQL5.7.5 33. Copyright201Oracleand/oritsaliates.Allrightsreserved.| InnoDB-FullTextSearch(FTS)-ngram 37 InnoDBFullTextSearch(FTS) , N-gramsupportforChineseandKorean,addiIonalMeCabsupportforJapanese CREATETABLE`N_DEMO`(`FTS_N_ID`bigint(20)unsignedNOTNULLAUTO_INCREMENT,`Itle`varchar(100)DEFAULTNULL, PRIMARYKEY(`FTS_N_ID`),FULLTEXTKEY`ngram_idx`(`Itle`)/*!50100WITHPARSER`ngram`*/ )ENGINE=InnoDBAUTO_INCREMENT=1DEFAULTCHARSET=u8mb4; 34. Copyright201Oracleand/oritsaliates.Allrightsreserved.| InnoDB-FullTextSearch(FTS)-mecab 38 InnoDBFullTextSearch(FTS) , N-gramsupportforChineseandKorean,addiIonalMeCabsupportforJapanese CREATETABLE`M_DEMO`(`FTS_M_ID`bigint(20)unsignedNOTNULLAUTO_INCREMENT,`Itle`varchar(100)DEFAULTNULL, PRIMARYKEY(`FTS_M_ID`),FULLTEXTKEY`mecab_idx`(`Itle`)/*!50100WITHPARSER`mecab`*/ )ENGINE=InnoDBAUTO_INCREMENT=1DEFAULTCHARSET=u8mb4; 35. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQL5.7RC PerformanceSchema: SYSLOGLinux/Windows GISInnoDBBoost.Geometry Security, 39 ReplicaNonforbecerscalabilityandavailability Fabricforhighavailabilityandsharding 36. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQLSYSSchema DB DB - - -IOSQL - SYS: - OracleV$() - MicrosoSQLServerDMV(DynamicManagementViews) 40 37. Copyright201Oracleand/oritsaliates.Allrightsreserved.| 41 ResizetheInnoDBBuerPoolonline SeparateUNDOtablespace UNDO(MySQL5.7.5) UNDO DynamicconguraNon MakingexisIngsengsdynamicallycongurable Asadesignprinciplefornewfeatures&sengs 14.4.8TruncaIngUndoLogsThatResideinUndoTablespaces 38. Copyright201Oracleand/oritsaliates.Allrightsreserved.| OGC(OpenGeospaIalConsorIum) Boost.Geometry Boost.Geometry MySQL5.7:GIS-Boost.Geometry 43 ALTERTABLE addSPATIALindex(); 39. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQL5.7.7 mysql_install_db mysqld--iniIalize--iniIalize-insecure CREATEUSERALTERUSER SSL,PASSWORDEXPIRE,ACCOUNT[LOCK|UNLOCK] mysql.userPasswordauthenIcaIon_string SETPASSWORDPASSWORD() ALTERUSER ENCRYPT,DES_ENCRYPT,DES_DECRYPTAES mysqld--iniIalize--user=mysql mysql_install_db--user=mysql 40. Copyright201Oracleand/oritsaliates.Allrightsreserved.| Security-EncrypNon,Passwords,InstallaNon AES256EncrypIon(DefaultinMySQL5.7) Deployment: / ,(test), 45 [GlobalConguraNon] SETGLOBALdefault_password_lifeIme=180; [Individualuseraccounts] ALTERUSERjoro@localhostPASSWORDEXPIREINTERVAL90DAY; ALTERUSERjoro@localhostPASSWORDEXPIREDEFAULT; ALTERUSERjoro@localhostPASSWORDEXPIRENEVER; 41. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQL5.7 MulI-SourceReplicaIon PerformanceenhancementofMulI-ThreadSlave gId_modeisnowdynamic MakingMySQLSlaveReplicaIonFiltersDynamic PreparingimplementaIonofGroupReplicaIon[Labs] 42. Copyright201Oracleand/oritsaliates.Allrightsreserved.| 1 & MySQL5.7:MulI-SourceReplicaIon Binlog Master1 Binlog Master2 Binlog MasterN IO1 Relay1 Coordinator W1 W2 WX IO2 Relay2 Coordinator W1 W2 WX Coordinator W1 W2 WX ION RelayN Coordinator W1 W2 WX Slave 47 43. Copyright201Oracleand/oritsaliates.Allrightsreserved.| 48 MySQL5.7:MulI-SourceReplicaIon :17.1.4.1MySQLMulN-SourceReplicaNonOverview - - 44. Copyright201Oracleand/oritsaliates.Allrightsreserved.| 5 GTID& SysbenchOLTPtest 1,000 SSD/48coreHT/512GBRAM MySQL5.7: 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 0 4 16 25 50 100 200 WorkerThreads SlaveTransacNonsperSecond Baseline 50clients 100clients 150clients 200clients 51 --slave-parallel-type 1.DATABASE:(Default)UsethedbparIIonedMTS(1workerperdatabase) 2.LOGICAL_CLOCK:UselogicalclockbasedparallelizaIonmode. 45. Copyright201Oracleand/oritsaliates.Allrightsreserved.| 52 ONMASTER: 1.startmasterwith --binlog-max-ush-queue-Ime=0 ONSLAVE: 1.a.Startslaveserverwith --slave-parallel-type=LOGICAL_CLOCK--slave-parallel-workers=N 1.bStarttheslaveservernormally. ChangetheMTSopIonsdynamicallyusingthefollowing mysql:STOPSLAVE:--iftheslaveisrunning mysql:SETGLOBALSLAVE_PARALLEL_TYPE='LOGICAL_CLOCK'; mysql:SETGLOBALSLAVE_PARALLEL_WORKER=N; mysql:STARTSLAVE: Default0 DefaultDATABASE Default0 46. Copyright201Oracleand/oritsaliates.Allrightsreserved.| 54 GTID(gId_mode) EnablingGlobalTransacNonIdenNersWithoutDownNmeinMySQL5.7.6 1.DisableallwriteoperaIons. 2.WaitforalltransacIonstopropagate fromthemaster(s)toallslaves. 3.Stopallservers. 4.Oneachserver,setgId-mode=ONintheconguraIon le. 5.Startallservers. 6.EnablewriteoperaIons. ItissIllpossibletousetheold,oineprocedure. Theprocedureisasfollows: OineprocedureOnlineprocedure :17.1.5.2EnablingGTIDTransacIonsOnline 17.1.5.4VerifyingReplicaIonofAnonymousTransacIons 1 SET@@GLOBAL.ENFORCE_GTID_CONSISTENCY=WARN; 2SET@@GLOBAL.ENFORCE_GTID_CONSISTENCY=ON; 3SET@@GLOBAL.GTID_MODE=OFF_PERMISSIVE; 4SET@@GLOBAL.GTID_MODE=ON_PERMISSIVE; 5SHOWSTATUSLIKE'ONGOING_ANONYMOUS_TRANSACTION_COUNT'; 6SET@@GLOBAL.GTID_MODE=ON; 7Oneachserver,addgId-mode=ONtomy.cnf. 8 STOPSLAVE; CHANGEMASTERTOMASTER_AUTO_POSITION=1; STARTSLAVE; MySQLReplicaIonGTIDGTID GTID MySQL5.7.6MySQLMySQL 5.6.x Standard ReplicaIon 5.7.6 Standard ReplicaIon 5.7.6 GTIDMode ReplicaIon 47. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQLFabric1.5:& OpenStack ; Fabric:Python,Java, PHP,.NET,C(labs) MySQLFabric Connector ApplicaIon Read-slaves mappings SQL HAgroup Read-slaves HAgroup Connector ApplicaIon 55 GA 48. Copyright201Oracleand/oritsaliates.Allrightsreserved.| 56 MySQLSlaveReplicaIonFiltersDynamic 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 CHANGEREPLICATIONFILTER *slave* MySQL-5.7.3OpIon(my.cnf) MySQL ThefollowingslavereplicaIonlterscanbe changeddynamicallyusingthiscommand. mysql>STOPSLAVESQL_THREAD; QueryOK,0rowsaected(0.05sec) mysql>CHANGEREPLICATIONFILTER REPLICATE_DO_DB=(db1); QueryOK,0rowsaected(0.00sec) ) MySQL-5.7.3-MakingMySQLSlaveReplicaNonFiltersDynamic 49. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQLLabs 57 50. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQLLabs MySQLMySQLCluster MySQL5.6memcachedAPI MySQLCluster7.2memcachedAPI MySQL5.6PerformanceSchema MySQL5.6Intra-schemaMulIThreadSlave MySQL5.6OnlineAlterTable MySQL5.7MulISourceReplicaIon MySQL5.7NewOpImizerCostModel 58 51. Copyright201Oracleand/oritsaliates.Allrightsreserved.| ( OpImisIcStateMachine / InnoDB GTID PERFORMANCE_SCHEMA MySQL5.7: ApplicaIon MySQLMasters ReplicaIon Plugin API MySQL Server GroupComms (Corosync) 59 labs.mysql.com 52. Copyright201Oracleand/oritsaliates.Allrightsreserved.| EarlyAccessFeature(EAF):DataDicIonary ReplacingtheFRMs Asinglerepositoryfordatabaseobjectmetadata InnoDBtablesreplace.frm,.trg,.trn,.parles Atomic&crash-safeoperaIonstoday TransacIonalinthefuture Makesaddingnewfeaturesmucheasier Eliminatescomplexity,resolvesbugs Improvesperformance LeveragesInnoDBstrengths 60 53. Copyright201Oracleand/oritsaliates.Allrightsreserved.| HTTPPluginforMySQL MySQLHTTP(S) UTF8JSON 3 SQL CRUD-Key-Value JSON-Document Formoredetails; hcp://www.slideshare.net/nixnutz/hcp-plugin-for-mysql-39598656 61 54. Copyright201Oracleand/oritsaliates.Allrightsreserved.| HTTPPluginforMySQL TheSQLendpointandJSON 62 shell> curl --user basic_auth_user:basic_auth_passwd --url "http://127.0.0.1:8080/sql/db/SELECT+1 [ { "meta":[ {"type":8,"catalog":"def","database":"","table":", "org_table":"","column":"1","org_column":"","charset":63, "length":1,"flags":129,"decimals":0} ], "data":[ ["1"] ], "status":[{"server_status":2,"warning_count":0}] } ] 55. Copyright201Oracleand/oritsaliates.Allrightsreserved.| HTTPPluginforMySQL-IniIalversion HTTPBasicAuthenIcaIonforSSLandNon-SSL Noquerycachesupport Nocommercialthreadpoolpluginsupport NotallMySQLpluggableauthmethodssupported Unlimited:allSQLstatements Unlimited:everythingtheserverreturns 63 shell> curl --user basic_auth_user:basic_auth_passwd --url "http://.../sql/db/SELECT+col_float+FROM+sql_types" 56. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQLBinlogEvents FormerlyknownasBinlogAPI C++libraryforreadingBinarylog Canreadbinarylogfromserverorfromle Onetransportforeachkindofsource Currentlyhaveleandmysqltransport Decodebinarylogevents Containcodetodecodetheevents EventDrivenAPI 64 57. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQL5.7:JSON OpImizedforreadintensiveworkload NaIveJSONdatatypes NaIveinternalbinaryformatforecientprocessing&storage Built-inJSONfuncIons Allowingyoutoecientlystore,search,update,andmanipulateDocuments JSONComparator AllowsforeasyintegraIonofDocumentdatawithinyourSQLqueries IndexingofDocumentsusingGeneratedColumns InnoDBsupportsindexesonbothstoredandvirtualGeneratedColumns NewexpressionanalyzerautomaIcallyusesthebestfuncIonalindexavailable 6/6/15 Copyright2015,Oracleand/oritsaliates.Allrightsreserved 65 58. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQL5.7:JSON 66 mysql> CREATE TABLE employees (data 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; +---------------------------+ | data | +---------------------------+ | {"id": 1, "name": "Jane"} | | {"id": 2, "name": "Joe"} | +---------------------------+ 2 rows in set (0,00 sec) 59. Copyright201Oracleand/oritsaliates.Allrightsreserved.| MySQL5.7:JSON DocumentValidaIon oninsertonly EcientAccess 67 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 jsn_extract(data, '$.name') from employees; +-----------------------------+ | jsn_extract(data, '$.name') | +-----------------------------+ | "Jane" | | "Joe" | +-----------------------------+ 2 rows in set (0,00 sec) 60. Copyright201Oracleand/oritsaliates.Allrightsreserved.| jsn_array() BuildaJSONarrayfromlistofexpressions jsn_object() BuildsJSONobjectsfromavariablelengthlist ofkey/valuepairs jsn_insert() Adds'missing'datatoJSONdocuments jsn_remove() RemovesacributesfromexisIngJSON documents jsn_set() SetsacributeswithinJSONdocuments jsn_replace() Replaces(butdoesn'tadd)acributeswithin JSONdocuments jsn_append() Addsavaluetotheendofanarray jsn_merge() Mergestwoarrays jsn_extract() ReturnsavaluenestedinsideofaJSON document 6/6/15 68 JSONFuncIonsforCreaIng&ManipulaIng JSONDocuments Copyright2015,Oracleand/oritsaliates.Allrightsreserved 61. Copyright201Oracleand/oritsaliates.Allrightsreserved.| jsn_search() SearchforvalueswithinJSONdocumentsand returntheirlocaIons jsn_contains() Checksforaspecicelementandvalue jsn_contains_path() Determineifaspecicelementispresentina documentinaspecicposiIon jsn_valid() CheckifdocumentisavalidJSONdocument jsn_type() Findthetypeofavaluewithinadocument jsn_keys() ReturnsarraysofthekeynamesfortheJSON documents jsn_length() NumberofelementsinJSONdocument jsn_depth() LevelofnesInginJSONdocument jsn_unquote() HelpsmovefromJSONtootherMySQLtypes jsn_quote() HelpsmovefromotherMySQLtypestoJSON 6/6/15 69 QueryandSearchJSONFuncIons Copyright2015,Oracleand/oritsaliates.Allrightsreserved 62. Copyright201Oracleand/oritsaliates.Allrightsreserved.| GeneratedColumns VirtualGeneratedColumn Generatedontheywhenthecolumnisread Canbeindexed StoredGeneratedColumn Generatedwhenthereferencedcolumniswricento Canbeindexed mysql> ALTER TABLE employees ADD name VARCHAR(100) GENERATED ALWAYS AS(jsn_extract(info, '$.name')) VIRTUAL; mysql> ALTER TABLE employees ADD INDEX(name); hcp://mysqlserverteam.com/ 70 DiggingintoyourDocuments labs.mysql.com 6/6/15 Copyright2015,Oracleand/oritsaliates.Allrightsreserved 63. Copyright201Oracleand/oritsaliates.Allrightsreserved.| Savememory/storageandsimplify applicaIon JoinsbetweenDocuments Normalizedatawhereitmakessense ForeignKeysbetweenDocuments UpdatemulIpleDocumentsinasingle atomictransacIon Leverageallofyourdata Read/writeDocumentandrelaIonal datainasinglequery/transacIon 20yearsofproductmaturity 6/6/15 71 SoJustAnotherDocumentStore? Copyright2015,Oracleand/oritsaliates.Allrightsreserved 64. Copyright201Oracleand/oritsaliates.Allrightsreserved.| 5.6 MySQLServerGA InnoDB& &NoSQL MySQLCluster-GA 2NoSQL200SQL 7.4 5.7 MySQLServerRC & JSONGroupReplicaNon 65. Copyright201Oracleand/oritsaliates.Allrightsreserved.| Theworld'smostpopularopensourcedatabase