twjug august, what's new in mysql 5.7 rc

49
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | What's new in MySQL 5.7 Ryusuke Kajiyama / 梶山隆輔 / @RKajiyama MySQL Sales ConsulNng Senior Manager, Asia Pacific & Japan

Upload: ryusuke-kajiyama

Post on 15-Aug-2015

44 views

Category:

Technology


0 download

TRANSCRIPT

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

What's  new  in  MySQL  5.7  

Ryusuke  Kajiyama  /  梶山隆輔  /  @RKajiyama  MySQL  Sales  ConsulNng  Senior  Manager,  Asia  Pacific  &  Japan  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Safe  Harbor  Statement  The  following  is  intended  to  outline  our  general  product  direcNon.  It  is  intended  for  informaNon  purposes  only,  and  may  not  be  incorporated  into  any  contract.  It  is  not  a  commitment  to  deliver  any  material,  code,  or  funcNonality,  and  should  not  be  relied  upon  in  making  purchasing  decisions.  The  development,  release,  and  Nming  of  any  features  or  funcNonality  described  for  Oracle’s  products  remains  at  the  sole  discreNon  of  Oracle.  

3  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

 A  Year  of  Anniversaries!  

20  Years:  MySQL  

10  Years:  Oracle  stewardship  of  InnoDB    5  Years:  Oracle  stewardship  of  MySQL    

Thank  You,  MySQL  Community,  for  20  years  of  ContribuNons  to  MySQL!  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   5  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   6

4.0  Full  Text  Search/GIS  (MyISAM)  MulN-­‐table  UPDATE/DELETE  libmysqld  (embedded  MySQL)

Oracle  MySQL   Sun  

3.23  MyISAM  InnoDB  ReplicaNon  

5.1  Pluggable  Storage  Engine  ParNNoning  Task  Scheduler

5.6  memcached  API  UNDO  Tablespace  Global  TransacNon  ID  MulN  Thread  Slave  Online  ALTER  TABLE  Transportable  Tablespace  

5.5  InnoDB  as  Default  Semi-­‐sync  ReplicaNon  PERFORMANCE_SCHEMA  

1.0-­‐3.22  Storage  Engine  (ISAM,  HEAP) MulN  Thread Windows  ready/64bit  Character  sets  (SJIS/UJIS)

5.0  Stored  Procedures  Stored  FuncNons Cursors/Triggers/Views  XA  TransacNons INFORMATION_SCHEMA  

4.1  Unicode  Subquery  CSV,  ARCHIVE  ndbcluster  

1995 2000 2005 2010 2015

5.7+  New  OpNmizer  Cost  Model  Loss-­‐Less  ReplicaNon  MulN  Source  ReplicaNon  Group  RplicaNon  CJK  Full  Text  Search/GIS  (InnoDB)  Enhanced  Security  Data  DicNonary  NoSQL  OpNons      

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

•  Performance  – Read-­‐Only  TransacNon  – SSD  OpNmizaNons  – UNDO  Tablespace  – Faster  Subqueries  –  JSON  EXPLAIN  – Memcached  API  

•  Availability – Global  TransacNon  ID  – Auto  Failover  – MulN  Thread  Slave  – Binlog  Group  Commit  – OpNmized  Row-­‐Based  ReplicaNon  

– Crash-­‐safe  Slave  – ReplicaNon  Checksum

7

•  OperaNons  – Online  ALTER  TABLE  – Dump  and  Import  of  InnoDB  Buffer  Pool  

– Transportable  Tablespace  – Enhanced  Security  

•  Password  Policy  •  SHA256  •  Password  ExpiraNon  

What's  new  in  MySQL5.6

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7  Release  Candidate  Available!  

8  

Enhanced  InnoDB:  faster  online  &  bulk  load  operaNons  

ReplicaNon  Improvements  (incl.  mulN-­‐source,  mulN-­‐threaded  slaves...)  

New  OpNmizer  Cost  Model:  greater  user  control  &  berer  query  performance  

Performance  Schema  Improvements  

MySQL  SYS  Schema  

Performance  &  Scalability   Manageability  

2  X  Faster  than  MySQL  5.6  

Improved  Security:  safer  iniNalizaNon,  setup  &  management  

NEW!  JSON  Support  (now  in  labs)  

RC  

And  many  more  new  features  and  enhancements...  hrp://mysqlserverteam.com/the-­‐mysql-­‐5-­‐7-­‐7-­‐release-­‐candidate-­‐is-­‐available/    

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7:  Improvements  Leading  up  to  RC1  •  InnoDB  for  berer  transacNonal  throughput,  availability,  IO    • ReplicaDon  for  berer  scalability  and  availability  •  Fabric  for  high  availability  and  sharding  • Performance  Schema  for  new  and  improved  performance  metrics  • OpDmizer  for  berer  EXPLAINing,  parsing,  query  performance  • GIS  with  naNve  InnoDB  spaNal  indexes  and  Boost.Geometry  integraNon  •  Security  with  easier,  safer  instance  iniNalizaNon,  setup  and  management  

Available  Now!  dev.mysql.com/downloads/mysql/  

9  

Copyright  ©  2015,  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  

Que

ries  p

er  Secon

d  

ConnecDons  

MySQL  5.7:  Sysbench  Read  Only  (Point  Select)  

MySQL  5.7  

MySQL  5.6  

MySQL  5.5  

MySQL  5.7:  Sysbench:  Read  Only    

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  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7:  InnoDB,  NoSQL  With  Memcached    6x  Faster  than  MySQL  5.6  Thank  you,  Facebook                            

0  

200,000  

400,000  

600,000  

800,000  

1,000,000  

1,200,000  

8   16   32   64   128   256   512   1,024  

Que

ries  p

er  Secon

d  

ConnecDons  

MySQL  5.7  vs  5.6  -­‐  InnoDB  &  Memcached  

MySQL  5.7  

MySQL  5.6  

1  Million  QPS  

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  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7  Parser  &  OpNmizer  Refactoring  

OpNmizer  

Logical  transformaNons  

Cost-­‐based  opNmizer:  Join  order  and  access  methods  

Plan  refinement  

Query  execuNon  plan  

Query  execuNon  

Parser  

Resolver:  SemanNc  check,name  resoluNon  

SQL    DML  query  

Query  result  

Storage  Engine  InnoDB   MyISAM  

Improves  readability,  maintainability  and  stability    

– Cleanly  separate  the  parsing,  opNmizing,  and  execuNon  stages  

– Allows  for  easier  feature  addiNons,  with  lessened  risk  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7:  Parser  Refactoring    • Challenge:  

– Overly  complex,  hard  to  add  new  syntax  

•  SoluNon:  – Create  an  internal  parse  tree  borom-­‐up  – Create  an  AST  (Abstract  Syntax  Tree)  from  the  parse  tree  and  the    user's  context.    

– Have  syntax  rules  that  are  more  precisely  defined  and  are  closer  to    the  SQL  standard.    

– More  precise  error  messages  – Berer  support  for  larger  syntax  rules  in  the  future  

Resolver

Optimizer

SE

Lexical Scanner (lexer)

GNU Bison-generated Parser (bottom-up parsing style)

Contextualization

Parser (new)

Executor

AST

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

•  OpNmizer  and  Parser  refactoring  –  Improves  readability,  maintainability  and  stability    

–  Cleanly  separate  the  parsing,  opNmizing,  and  execuNon  stages  

–  Allows  for  easier  feature  addiNons,  with  lessened  risk  

•  New  hint  framework  –  Easier  to  manage    – With  support  for  addiNonal  new  hints    

•  Improved  JSON  EXPLAIN  •  EXPLAIN  for  running  thread  

•  New  Cost  based  OpNmizer  •  Generated  Columns  

•  Support  for  InnoDB  based  internal  temp  tables    

•  Berer  ONLY_FULL_GROUP_BY  mode  

•  Berer  support  for  InnoDB  &  GIS  •  Many  specific  new  opNmizaNons    

Queries  execute  faster,  while  using  less  CPU  and  disk  space!  

 

MySQL  5.7:  OpNmizer  Improvements    

14  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7  OpNmizer:  New  Cost  Model  • More  accurate  cost  esNmates  

– Berer  decisions  by  the  opNmizer  should  improve  query  performance  

• Adapt  to  new  hardware  architectures  – SSDs,  larger  memory  sizes,  improved  caches  

• More  maintainable  cost  model  implementaNon  – Avoid  hard  coded  “cost  constants”  – Refactoring  of  exisNng  cost  model  code  

• Configurable  and  tunable  – mysql.server_cost  and  mysql.engine_cost  tables  – API  for  determining  where  data  resides:  on  disk  or  in  cache    

15  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7:  Query  Rewrite  Plugin  • New  pre  and  post  parse  query  rewrite  APIs    

– Users  can  write  their  own  plug-­‐ins  • Provides  a  post-­‐parse  query  plugin  

– Rewrite  problemaNc  queries  without  the  need  to  make  applicaNon  changes  – Add  hints  – Modify  join  order  – Many  more  …  

•  Improve  problemaNc  queries  from  ORMs,  third  party  apps,  etc  •  Eliminates  many  legacy  use  cases  for  proxies  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7:  OpNmizer  -­‐  Cost  Info  in  JSON  EXPLAIN    •  Expanded  JSON  EXPLAIN  

– Now  includes  all  available  cost  info  – Used  for  Visual  Explain  In  MySQL  Workbench  

17  

{ "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" ], ...

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Memory  InstrumentaDon  •  Aggregates  staNsNcs  by  

–  Type  of  memory  used  (caches,  internal  buffers,  …)  

–  Thread/account/user/host  indirectly  performing  the  memory  operaNon    

•  Arributes  include    – Memory  used  (bytes)  –  OperaNon  counts  –  High/Low  Water  Marks    

Statement  InstrumentaDon  •  Stored  Procedures    •  Stored  FuncNons  •  Prepared  Statements  

•  TransacNons  

AddiDonal  InformaDon  •  ReplicaNon  slave  status  •  MDL  lock  instrumentaNon  

•  Status  and  variables  per  thread  

•  Server  stage  tracking  •  Track  long  running  SQL  •  Improved  configuraNon  and  ease-­‐of-­‐use  

•  All  while  reducing  total  footprint  and  overhead    

 

MySQL  5.7:  Performance  Schema    

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

HTTP  Plugin  for  MySQL  •  Server  Plugin  adds  HTTP(S)  endpoints  to  MySQL  • Results  are  serialized  to  JSON  format  encoded  as  UTF8  • Provides  3  choices  of  User  Endpoint  Types  

– SQL  – CRUD  -­‐  Key-­‐Value  – JSON  -­‐  Document  

•  For  more  details;  hrp://www.slideshare.net/nixnutz/hrp-­‐plugin-­‐for-­‐mysql-­‐39598656  

19  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

HTTP  Plugin  for  MySQL The  SQL  endpoint  and  JSON  

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}] } ]

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

HTTP  Plugin  for  MySQL  -­‐  IniNal  version  • HTTP  Basic  AuthenNcaNon  for  SSL  and  Non-­‐SSL    • No  query  cache  support    • No  commercial  thread  pool  plugin  support    • Not  all  MySQL  pluggable  auth  methods  supported    • Unlimited:  all  SQL  statements    • Unlimited:  everything  the  server  returns    

21  

shell> curl --user basic_auth_user:basic_auth_passwd --url "http://.../sql/db/SELECT+col_float+FROM+sql_types"

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

HTTP  Plugin  for  MySQL GET  =  SELECT  

shell> curl ... --url "http://../crud/db/sql_types/1" { "id" : "1", "col_char" : "CHAR(127)" , "col_null" : null, "col_date" : "2014-12-23", "col_decimal" : "123.45", "col_float" : "0.9999", "col_bigint" : "9223372036854775807" } shell> curl ... --url 'http://../crud/db/simple/' { "errno" : 2000, "error" : "The request URL must include a primary key value” }

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  Binlog  Events Formerly  known  as  Binlog  API

• C++  library  for  reading  Binary  log  • Can  read  binary  log  from  server  or  from  file  

– One  transport  for  each  kind  of  source  – Currently  have  file  and  mysql  transport  

• Decode  binary  log  events  – Contain  code  to  decode  the  events  

•  Event  Driven  API  

23

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7:  JSON  • OpNmized  for  read  intensive  workload    • NaNve  JSON  data  types  

– NaNve  internal  binary  format  for  efficient  processing  &  storage  

• Built-­‐in  JSON  funcNons  – Allowing  you  to  efficiently  store,  search,  update,  and  manipulate  Documents  

•  JSON  Comparator  – Allows  for  easy  integraNon  of  Document  data  within  your  SQL  queries  

•  Indexing  of  Documents  using  Generated  Columns    – InnoDB  supports  indexes  on  both  stored  and  virtual  Generated  Columns  – New  expression  analyzer  automaNcally  uses  the  best  “funcNonal”  index  available  

24  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7:  JSON

25

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)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7:  JSON • Document  ValidaNon  

– on  insert  only    

•  Efficient  Access  

26

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)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

•  jsn_array() –  Build  a  JSON  array  from  list  of  expressions  

•  jsn_object() –  Builds  JSON  objects  from  a  variable  length  list  of  key/value  pairs  

•  jsn_insert() –  Adds  'missing'  data  to  JSON  documents  

•  jsn_remove() –  Removes  arributes  from  exisNng  JSON  documents  

•  jsn_set() –  Sets  arributes  within  JSON  documents  

•  jsn_replace() –  Replaces  (but  doesn't  add)  arributes  within  JSON  documents  

•  jsn_append() –  Adds  a  value  to  the  end  of  an  array  

•  jsn_merge() – Merges  two  arrays    

•  jsn_extract() –  Returns  a  value  nested  inside  of  a  JSON  document  

27  

JSON  FuncNons  for  CreaNng  &  ManipulaNng    JSON  Documents  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

•  jsn_search() –  Search  for  values  within  JSON  documents  and  return  their  locaNons  

•  jsn_contains() –  Checks  for  a  specific  element  and  value  

•  jsn_contains_path() –  Determine  if  a  specific  element  is  present  in  a  document  in  a  specific  posiNon  

•  jsn_valid() –  Check  if  document  is  a  valid  JSON  document  

•  jsn_type() –  Find  the  type  of  a  value  within  a  document  

•  jsn_keys() –  Returns  arrays  of  the  key  names  for  the  JSON  documents  

•  jsn_length() –  Number  of  elements  in  JSON  document  

•  jsn_depth() –  Level  of  nesNng  in  JSON  document  

•  jsn_unquote() –  Helps  move  from  JSON  to  other  MySQL  types  

•  jsn_quote() –  Helps  move  from  other  MySQL  types  to  JSON  

28  

Query  and  Search  JSON  FuncNons  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Generated  Columns  

• Virtual  Generated  Column  – Generated  on  the  fly  when  the  column  is  read  – Can  be  indexed  

•  Stored  Generated  Column  – Generated  when  the  referenced  column  is  wriren  to  – Can  be  indexed  mysql> ALTER TABLE employees ADD name VARCHAR(100) GENERATED ALWAYS AS(jsn_extract(info, '$.name')) VIRTUAL; mysql> ALTER TABLE employees ADD INDEX(name); hrp://mysqlserverteam.com/  

Digging  into  your  Documents  

labs.mysql.com  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

•  Save  memory/storage  and  simplify  applicaNon  – Joins  between  Documents  

•  Normalize  data  where  it  makes  sense  

– Foreign  Keys  between  Documents  – Update  mulNple  Documents  in  a  single  atomic  transacNon  

•  Leverage  all  of  your  data  – Read/write  Document  and  relaNonal  data  in  a  single  query/transacNon  

•  20  years  of  product  maturity  

30  

So  Just  Another  Document  Store?  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7:  SYS  Schema    Helper  objects  for  DBAs,  Developers  and  OperaDons  staff  • Helps  simplify  DBA  /  Ops  tasks        -­‐  Monitor  server  health,  user,  host  staNsNcs    -­‐  Spot,  diagnose,  and  tune  performance  issues  

•   Easy  to  understand  views  with  insights  into        -­‐  IO  hot  spots,  Locking,  Costly  SQL  statements        -­‐  Schema,  table  and  index  staNsNcs      

•  SYS  is  similar  to  -­‐  Oracle  V$  catalog  views  -­‐  Microso{  SQL  DMVs  (Dynamic  Mgmnt  Views)  

 

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

•  Replaced  custom  code  with  Boost.Geometry  –  For  spaNal  calculaNons  –  For  spaNal  analysis    –  Enabling  full  OGC  compliance  – We’re  also  Boost.Geometry  contributors!  

•  InnoDB  R-­‐tree  based  spaNal  indexes  –  Full  ACID,  MVCC,  &  transacNonal  support  –  Index  records  contain  minimum  bounding  box  

•  GeoHash  •  GeoJSON  •  Helper  funcNons  such  as  ST_Distance_Sphere()  and  ST_MakeEnvelope()  

MySQL  5.7:  GIS  Improvements    

32  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

•  NaNve  ParNNoning  –  Eliminates  previous  limitaNons  –  Eliminates  resource  usage  problems  –  Transportable  tablespace  support  

•  NaNve  Full-­‐Text  Search    –  Including  full  CJK  support!  

•  NaNve  SpaNal  Indexes  •  Transparent  page  compression    

•  Support  for  32K  and  64K  pages  –  Use  with  transparent  page  compression  for  very  high  compression  raNos  

•  General  TABLESPACE  support    –  Store  mulNple  tables  in  user  defined  shared  tablespaces    

•  Support  for  MySQL  Group  ReplicaNon  –  High  priority  transacNons  

•  Improved  support  for  cache  preloading  –  Load  your  horest  data  loaded  at  startup  

•  Configurable  fill-­‐factor    –  Allows  for  improvements  in  storage  footprint  

•  Improved  bulk-­‐data  load  performance  

MySQL  5.7:  InnoDB  Improvements    

33  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7:  InnoDB  –  Always  Online    • Resize  the  InnoDB  Buffer  Pool  online    

– Allows  DBAs  to  tune  the  buffer  size  without  any  downNme  – Adapt  in  real-­‐Nme  to  changes  in  database  usage  parerns  

•  Separate  UNDO  tablespace  – With  automaNc  online  truncaNon    

• AddiNonal  Online  ALTER  TABLE  support  – Enlarge  VARCHAR,  Rename  Index  

• Dynamic  configuraNon  – Making  exisNng  se}ngs  dynamically  configurable  – As  a  design  principle  for  new  features  &  se}ngs  

34  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7:  InnoDB  -­‐  Bulk  Load  for  Create  Index      • Much  faster  INDEX  creaNon  and  bulk  loads    •  Sorted  index  builds,  done  from  the  borom-­‐up  

– Improves  speed  by  increasing  locality  and  decreasing  node  spli}ng  

• Pages  are  compressed  only  when  full  • New  innodb_fill_factor  opNon  controls  free  space  le{  in  each  page  • Performance  results  show  

– 2-­‐3x  performance  improvement  for  ADD/CREATE  INDEX  operaNons  •  Up  to  500x  improvement  with  larger  -­‐-­‐innodb_sort_buffer_size  values  

– 2-­‐5%  improvement  for  standard  INSERT  operaNons    

35  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7:  InnoDB  Temporary  Tables      • New  separate  tablespace  for  temporary  tables  

– Improved  CREATE/DROP  performance  – DDL  changes  are  transient,  which  eliminates  some  disk  IO  

• OpNmize  DML  operaNons  – No  REDO  logging,  no  change  buffering,  less  locking  

• New  intrinsic  temporary  tables  – Specialized  temporary  tables  with  tailored  ACID/MVCC  semanNcs  – Light  weight  and  ultra-­‐fast,  great  for  intermediate  query  execuNon  operaNons  

•  InnoDB  as  default  storage  engine  for  disk  based  temp  tables  – OpNmizer  switched  from  MyISAM  to  InnoDB  (faster)  for  internal  temp  tables  

36  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7:  InnoDB  Full-­‐Text  CJK  Support    •  Two  new  Full-­‐Text  Parser  plugins  • N-­‐gram  parser  supports  Chinese,  Japanese,  &  Korean  

– Supports  all  ideographic  languages  that  do  not  use  word  delimiters  

• MeCab  parser  supports  Japanese  – NaNve  Japanese  focused  language  support  

•  Easily  customized    – Token  sizes,  stop  words,  …  

•  Supports  advanced  searches    – BOOLEAN  MODE,  NATURAL  LANGUAGE  MODE,  with  Ranking  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

EAF:  InnoDB  Compression    Thank  you,  SanDisk  Fusion-­‐io    

•  Transparent  Page  Level  Compression  – Happens  transparently  in  background  threads  – Managed  enNrely  within  the  IO  layer  – Uses  sparse  file  and  "hole  punching"  support  in  OS  kernels  and  File  Systems  

• Reduces  IO    – Improves  MySQL  performance  – Improves  storage  efficiency  – Reduces  write  cycles,  thus  increasing  SSD  lifespan  

• Applies  to  all  InnoDB  data,  including  the  system  tablespace  and  UNDO  logs  

38  

labs.mysql.com  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7:  Syslog  Support  for  Linux/Unix  pla�orms      

• NaNve  support  for  syslog  •  Simple  opNon  to  (re)direct  log  output  to  naNve  syslog  facility  •  Start-­‐up  server  configuraNon  opNon  • Dynamically  in  the  running  server  

–   System  variable  log_syslog  (ON/OFF,  defaults  to  OFF).  

Thank  you,  Simon  Mudd  at  booking.com  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7:  Security  -­‐  EncrypNon,  Passwords,  InstallaNon    • AES  256  EncrypNon    

– Default  in  MySQL  5.7    

• Password  rotaNon  policies  – Can  be  set  globally,  and  at  the  user  level  

• Deployment:  enable  secure  unarended  install  by  default  – Random  password  set  on  install  – Remove  anonymous  accounts  – Deployment  without  test  account,  schema,  demo  files  

•  Easier  instance  iniNalizaNon  and  setup:  mysqld  –iniNalize  • New  detecNon  and  support  for  systemd    

40  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7:  Security  –  SSL,  Proxy  User    •  SSL  

– Enabled  by  default  – Auto-­‐detecNon  of  exisNng  keys  and  certs  – Auto  generaNon  of  keys  and  certs  when  needed    – New  helper  uNlity:  mysql_ssl_rsa_setup  

•  Extended  Proxy  User  Support  – Added  Built-­‐in  AuthenNcaNon  Plugins  support  for  Proxy  Users  – Allows  mulNple  users  to  share  a  single  set  of  managed  privileges  

41  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

•  GTID  enhancements  –  On-­‐line,  phased  deployment  of  GTIDs  –  Binary  logging  on  slave  now  opNonal  

•  Enhanced  Semi-­‐synchronous  replicaNon  – Write  guaranteed  to  be  received  by  slave  before  being  observed  by  clients  of  the  master  

–  OpNon  to  wait  on  Acks  from  mulNple  slaves  

•  MulN-­‐Source  ReplicaNon  –  Consolidate  updates  from  mulNple  Masters  into  one  Slave  

•  Dynamic  slave  filters  

•  8-­‐10x  Faster  slave  throughput  –  O{en  removes  slave  as  a  borleneck;  keep  pace  with  master  with  8+  slave  threads  

–  OpNon  to  preserve  Commit  order  –  AutomaNc  slave  transacNon  retries  

 

MySQL  5.7:  ReplicaNon  Improvements    

42  

0%#

50%#

100%#

150%#

200%#

250%#

1# 8# 24# 48#Slave#Threads#

Slave#throughput#vs.#96#Thread#Master#

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

• MulN-­‐Source  ReplicaNon  – Consolidate  updates  from  mulNple  Masters  into  one  Slave  •  Consolidated  view  of  all  shards  • More  flexible  topologies  •  Centralized  point  for  backups  

– CompaNble  with  Semi-­‐Sync  ReplicaNon  &  enhanced  MTS  

• Performance  Schema  tables  for  monitoring  slave  

• Online  OperaNons:  Dynamic  ReplicaNon  Filters,  switch  master  

MySQL  5.7:  ReplicaNon  Improvements  

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  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

•  MulN-­‐master  update  anywhere  –  Conflict  detecNon  and  resoluNon  (transacNon  rollback)  –  OpNmisNc  State  Machine  ReplicaNon  

•  AutomaNc  group  membership  management  and  failure  detecNon  –  No  need  for  server  fail-­‐over  –  ElasNc  scale  out/in  –  No  single  point  of  failure  –  AutomaNc  reconfiguraNon  

•  Well  integrated  –  InnoDB  –  GTID-­‐based  replicaNon  –  PERFORMANCE_SCHEMA  

EAF:  Group  ReplicaNon    

ApplicaNon  

MySQL  Masters   ReplicaNon    Plugin  

API  

MySQL  Server  

Group  Comms  

labs.mysql.com  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  Fabric  1.5  

•  High  Availability  –  Server  monitoring  with  auto-­‐promoNon  and  transparent  applicaNon  failover  

•  OpNonally  scale-­‐out  through  sharding  –  ApplicaNon  provides  shard  key  –  Range  or  Hash  –  Tools  for  resharding  –  Global  updates  &  tables  

•  Fabric-­‐aware  connectors  rather  than  proxy:  Python,  Java,  PHP,  .NET,  C  (labs)  –  Lower  latency,  borleneck-­‐free  

•  Server  provisioning  using  OpenStack  etc.  

High  Availability  +  Sharding-­‐Based  Scale-­‐out  

MySQL  Fabric  

Connector  

ApplicaNon  

Read-­‐slaves  

mappings  

SQL  

HA  group  

Read-­‐slaves  

HA  group  

Connector  

ApplicaNon  

GA  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  Workbench  6.3    •  Fabric    

– Add  node,  browse,  view,  connect  • Performance  Dashboard    

– Performance  Schema  Reports  &  Graphs  

• Visual  Explain  • GIS  Viewer  • MigraNon    

– New  Microso{  Access    – Microso{  SQL  Server,  Sybase,    PostgreSQL,  SQLite  

 

GA  

46  

• New  Easy  to  Use  Wizards  for  – Fast  Data  MigraNon  – Table<-­‐>File  Data  Import/Export  (like  Excel)  – SSL  CerNficate  CreaNon    

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  on  Windows  •  MySQL  Installer  for  Windows  •  MySQL  Workbench  

•  MySQL  MigraNon  Wizard  – Microso{  SQL  Server  – Microso{  Access  

•  MySQL  for  Visual  Studio  

•  MySQL  for  Excel  

•  MySQL  NoNfier  

•  MySQL  Connector/.Net  

•  MySQL  Connector/ODBC  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  Repos  •  DistribuNons  

–  Oracle,  Red  Hat,  CentOS    –  Fedora  –  Ubuntu,  Debian  –  SUSE  

•  Official  MySQL  Docker  Image  from  Oracle  

•  Coming  Soon  –  Preconfigured  Containers  –  Improved  support  for  popular  DevOps  deployment  tools  

hrps://dev.mysql.com/downloads/repo        

MySQL  on  GitHub  •  Git  for  MySQL  Engineering  

–  Fast,  flexible  and  great  for  a  distributed  team  –  Great  tooling    –  Large  and  vibrant  community  

•  GitHub  for  MySQL  Community  –  Easy  and  fast  code  availability  to  the  community  and  to  downstream  projects  

–  New  Pull  Requests    hrps://github.com/mysql      

 48  

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7:  AddiNonal  Info    •  hrp://mysqlserverteam.com/whats-­‐new-­‐in-­‐mysql-­‐5-­‐7-­‐first-­‐release-­‐candidate/  •  hrp://mysqlserverteam.com/json-­‐labs-­‐release-­‐overview/  

•  hrp://mysqlserverteam.com/?s=query+rewrite  

•  hrp://mysqlserverteam.com/category/performance/opNmizer/  

•  hrp://mysqlserverteam.com/category/innodb/  

•  hrp://mysqlserverteam.com/category/mysql/performance-­‐schema/  

•  hrp://mysqlserverteam.com/category/gis/  

•  hrp://mysqlserverteam.com/category/full-­‐text-­‐search/  

•  hrp://mysqlserverteam.com/category/dicNonary/  

•  hrp://dev.mysql.com/doc/refman/5.7/en/  

49