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.

MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?

1,214 views

Published on

"MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?" session at https://www.percona.com/live/17/sessions/mysql-storage-engines-which-do-you-use-tokudb-myrocks-innodb

Published in: Software
  • Be the first to comment

  • Be the first to like this

MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?

  1. 1. MySQL Storage Engines Which Do You Use? April, 25, 2017 Sveta Smirnova
  2. 2. • MySQL Support engineer • Author of • MySQL Troubleshooting • JSON UDF functions • FILTER clause for MySQL • Speaker • Percona Live, OOW, Fosdem, DevConf, HighLoad... Sveta Smirnova 2
  3. 3. • MySQL < 3.23 had only engine: ISAM From Type to Engine 3
  4. 4. • MySQL < 3.23 had only engine: ISAM • Version 3.23 introduced table types mysql> CREATE TABLE plmce( -> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, -> name VARCHAR(100) -> ) TYPE = MyISAM; Query OK, 0 rows affected, 1 warning (0.10 sec) From Type to Engine 3
  5. 5. • MySQL < 3.23 had only engine: ISAM • Version 3.23 introduced table types • In year 2003 term ”Type” was deprecated From Type to Engine 3
  6. 6. • MySQL < 3.23 had only engine: ISAM • Version 3.23 introduced table types • In year 2003 term ”Type” was deprecated • Engines were built-in into server From Type to Engine 3
  7. 7. • MySQL < 3.23 had only engine: ISAM • Version 3.23 introduced table types • In year 2003 term ”Type” was deprecated • Engines were built-in into server • Nobody could deliver engine independently From Type to Engine 3
  8. 8. • MySQL < 3.23 had only engine: ISAM • Version 3.23 introduced table types • In year 2003 term ”Type” was deprecated • Engines were built-in into server • Nobody could deliver engine independently • Version 5.1 changed everything • Pluggable storage engine API was introduced From Type to Engine 3
  9. 9. • Part of MySQL since version 3.23.24 • Released at March, 10, 2001 InnoDB 4
  10. 10. • Part of MySQL since version 3.23.24 • Created by Innobase OY • Acquired by Oracle in 2005 InnoDB 4
  11. 11. • Part of MySQL since version 3.23.24 • Created by Innobase OY • Major changes in 5.1 • New tablespace format • Dynamic loading • Online index creation • ... • Released as a plugin InnoDB 4
  12. 12. • Part of MySQL since version 3.23.24 • Created by Innobase OY • Major changes in 5.1 • Two versions in 5.1.38 - 5.1.73 Built-in Pluggable InnoDB 4
  13. 13. • Many others started own storage engines Pioneers 5
  14. 14. • Many others started own storage engines • Most notable • Tokutek • Primebase Pioneers 5
  15. 15. • Many others started own storage engines • Most notable • Tokutek TokuDB Write-scale Acquired by Percona in 2015 • Primebase Pioneers 5
  16. 16. • Many others started own storage engines • Most notable • Tokutek TokuDB Write-scale Acquired by Percona in 2015 • Primebase PBXT Better BLOB handling technology Engine not supported now Pioneers 5
  17. 17. • Built-in engines were converted into plugins • Some old engines were removed • BerkeleyDB • ISAM In the Official Distribution 6
  18. 18. • Number of engine grows • They can • Shard: Spider • Use any source of data: CONNECT • Connect to foreign sources: FederatedX • Perform full text search: SphinxSE • More • MariaDB includes most of the engines Community 7
  19. 19. • All engines • Store data • Retrieve data Simple and Complex Engines 8
  20. 20. • All engines • Simple engines • Use built-ins for all other job Locking Transactions support Diagnostic Simple and Complex Engines 8
  21. 21. • All engines • Simple engines • Complex engines • Implement Own locking model Transactions Diagnostic Log files More Simple and Complex Engines 8
  22. 22. • All three • Transactional • Row-level locking • MVCC • ACID • XA • Automatic crash recovery Three Majors: InnoDB, TokuDB, MyRocks 9
  23. 23. • All three • InnoDB • Universal • Default since 5.5.5 Three Majors: InnoDB, TokuDB, MyRocks 9
  24. 24. • All three • InnoDB • TokuDB • Write optimized • Fine compression support • Best for big data Three Majors: InnoDB, TokuDB, MyRocks 9
  25. 25. • All three • InnoDB • TokuDB • MyRocks • Write and space optimized • Great compression support • Best for SSD Three Majors: InnoDB, TokuDB, MyRocks 9
  26. 26. • B-Tree • Extremely fast read access • Needs to be re-balanced on write InnoDB 10
  27. 27. • B-Tree • Reach features set • Foreign keys • Locks at the engine level Row Gap Auto-increment Table • Compression • Extended crash recovery InnoDB 10
  28. 28. • Initial Data 11 / 10 12 / 2 24 / / 1 9 23 25 B-Tree 11
  29. 29. • SELECT 11 11 / 10 12 / 2 24 / / 1 9 23 25 B-Tree 11
  30. 30. • SELECT 10 11 / 10 12 / 2 24 / / 1 9 23 25 B-Tree 11
  31. 31. • SELECT 2 11 / 10 12 / 2 24 / / 1 9 23 25 B-Tree 11
  32. 32. • SELECT 9 11 / 10 12 / 2 24 / / 1 9 23 25 B-Tree 11
  33. 33. • INSERT 5 11 / 10 12 / 2 24 / / 1 5 9 23 25 B-Tree 11
  34. 34. • INSERT 5 11 / 10 12 / 2 24 / / 1 5 9 23 25 B-Tree 11
  35. 35. • INSERT 5 11 / 10 12 / 2 24 / / 1 5 9 23 25 B-Tree 11
  36. 36. • INSERT 5 11 / 9 10 12 / 2 24 / / 1 5 23 25 B-Tree 11
  37. 37. • INSERT 5 10 11 / 9 12 / 2 24 / / 1 5 23 25 B-Tree 11
  38. 38. • INSERT 5 10 / 9 12 / / 2 11 24 / / 1 5 23 25 B-Tree 11
  39. 39. • Fractal Tree • Write optimized • All writes stored in buffers • Background thread flushes them • By default reads are slow TokuDB 12
  40. 40. • Fractal Tree • Optimizations for reads • Secondary Clustered Indexes • Read-free replication • No index fragmentation TokuDB 12
  41. 41. • Fractal Tree • Optimizations for reads • Optimizations for writes • Fast inserts • Bulk loader • Compression TokuDB 12
  42. 42. • Fractal Tree • Optimizations for reads • Optimizations for writes • Other features and limitations • Reach set of locking diagnostic • No foreign key support • Crash recovery is limited if compare to InnoDB TokuDB 12
  43. 43. • LSM Tree • Write and space optimized • All writes go to MemTable and WAL first • Data files are immutable • Compaction • Designed for small transactions MyRocks 13
  44. 44. • LSM Tree • Optimizations for reads • Bloom filter • ICP • No ”index dives” • Reverse column families • Read-free replication MyRocks 13
  45. 45. • LSM Tree • Optimizations for reads • Optimizations for writes • Options for bulk operations • Compression MyRocks 13
  46. 46. • LSM Tree • Optimizations for reads • Optimizations for writes • Limitations • Two transaction isolation levels READ COMMITTED REPEATABLE READ MyRocks 13
  47. 47. • LSM Tree • Optimizations for reads • Optimizations for writes • Limitations • Two transaction isolation levels • No gap locking • No support for Foreigh Keys Full Text Keys Spatial Keys MyRocks 13
  48. 48. • LSM Tree • Optimizations for reads • Optimizations for writes • Limitations • Two transaction isolation levels • No gap locking • No support for • Index only access for limited types BINARY Collation latin1 bin Collation utf8 bin MyRocks 13
  49. 49. • LSM Tree • Optimizations for reads • Optimizations for writes • Limitations • Two transaction isolation levels • No gap locking • No support for • Index only access for limited types • Crash recovery is limited MyRocks 13
  50. 50. InnoDB TokuDB MyRocks Reads Fast Slow Slow Writes Comparatively Slow Fast Fast Transaction Isolation Levels 4 4 2 (RR, RC) Foreign Keys Yes Not Not Space Used Plenty Workload-depend Small Compression Yes Yes Yes Crash Recovery Automatic, Tunable Automatic Automatic Three Majors: comparison 14
  51. 51. • MySQL has many storage engines • They provide a lot of flexibility • Many extend server functionality • Simple and complex engines exist • InnoDB is feasible for most workloads • TokuDB and MyRocks are best for write intensive applications Summary 15
  52. 52. • April, 25, 5:15pm, Balroom B • MyRocks Engineering: deploying a new MySQL storage engine to production • Herman Lee MySQL Storage Engine Sessions at Percona Live 16
  53. 53. • April, 25, 5:15pm, Balroom B • April, 26, 11:10am, Room 203 • EVCache: Lowering Costs for a Low-Latency Cache with RocksDB • Scott Mansfield MySQL Storage Engine Sessions at Percona Live 16
  54. 54. • April, 25, 5:15pm, Balroom B • April, 26, 11:10am, Room 203 • April, 26, 2:00pm, Balroom C • MyRocks: best practice at Alibaba • dengcheng he, jiayi wang MySQL Storage Engine Sessions at Percona Live 16
  55. 55. • April, 25, 5:15pm, Balroom B • April, 26, 11:10am, Room 203 • April, 26, 2:00pm, Balroom C • April, 26, 2:00pm, Room 203 • Six New Important RocksDB Features And Planned Works • Siying Dong MySQL Storage Engine Sessions at Percona Live 16
  56. 56. • April, 25, 5:15pm, Balroom B • April, 26, 11:10am, Room 203 • April, 26, 2:00pm, Balroom C • April, 26, 2:00pm, Room 203 • April, 26, 4:30pm, Ballroom E • Using SPIDER for sharding in production • Kayoko GOTO, Kentoku SHIBA MySQL Storage Engine Sessions at Percona Live 16
  57. 57. • April, 25, 5:15pm, Balroom B • April, 26, 11:10am, Room 203 • April, 26, 2:00pm, Balroom C • April, 26, 2:00pm, Room 203 • April, 26, 4:30pm, Ballroom E • April, 27, 11:00am, Ballroom E • MariaRocks: MyRocks in MariaDB • Sergei Petrunia MySQL Storage Engine Sessions at Percona Live 16
  58. 58. • April, 25, 5:15pm, Balroom B • April, 26, 11:10am, Room 203 • April, 26, 2:00pm, Balroom C • April, 26, 2:00pm, Room 203 • April, 26, 4:30pm, Ballroom E • April, 27, 11:00am, Ballroom E • April, 27, 1:50pm, Ballroom A • TokuDB vs RocksDB • George Lorch, Vladislav Lesin MySQL Storage Engine Sessions at Percona Live 16
  59. 59. • InnoDB Documentation • TokuDB Documentation • MyRocks Wiki • MySQL User manual on storage engines • Experts MySQL • MySQL 5.1 Plugin Development More informaiton 17
  60. 60. ??? Time For Questions 18
  61. 61. http://www.slideshare.net/SvetaSmirnova https://twitter.com/svetsmirnova Thank you! 19

×