SlideShare a Scribd company logo
1 of 58
Download to read offline
MySQL 5.6 Experiences:
Bugs, Problems and Solutions
Valerii Kravchuk, Principal Support Engineer
http://mysqlentomologist.blogspot.com/
https://www.facebook.com/valerii.kravchuk
http://bugs.mysql.com
valerii.kravchuk@percona.com
www.percona.com
MySQL 5.6's current state and future - that's how I see it
www.percona.com
MySQL 5.6's current state and future - that's how I see it
● The sun is shining, the sky is blue - positive reviews, great benchmark
results
● Looks like a warm seaside is ahead, close enough - we can scale up to
1024 threads (but check http://www.mysqlperformanceblog.
com/2013/04/15/memory-allocators-mysql-performance-improvements-in-
pecona-server-5-5-30-30-2/), replication is crash safe and more efficient..
● There are some roads ahead, clearly visible, and people near the sea
that are probably happy - everybody looks happy about MySQL 5.6 GA,
early adopters among Oracle customers, positive blog posts
● There are clouds and some of them dark, rain and even storm is still
possible - MySQL 5.6 is slow for some, like Facebook
● Land is nice, probably ancient - who knows what bad things happened
here, and what is hidden in the ground
● There could be old rocks far in the sea and something in that grass and
bushes on our way ahead... Bugs?
www.percona.com
Bugs: scary, dangerous, nice, new,
ancient... all kinds of, in MySQL 5.6
www.percona.com
But let's read the manual first...
● We can just start with this page:
http://dev.mysql.com/doc/refman/5.6/en/mysql-nutshell.html
● Remove extra details and add references to each major
feature
● For every feature description from that page I am going
to add extra references (articles about the feature, bugs
related to the feature)
● I'll make some comments also (if I have anything useful
to add)
● That's how we get "Bugs (#), Problems (?) and
Solutions (!)"
www.percona.com
Security improvements
.mylogin.cnf and mysql_config_editor
Details:
● password is no longer stored in plain text (like in .my.cnf)...
● but if someone can read .mylogin.cnf, they have your MySQL password
● ~/.mylogin.cnf is not a more secure place to store your password than ~/.my.cnf
Links:
(?) http://mysqldump.azundris.com/archives/104-.mylogin.cnf-password-recovery.html
(!) http://mysqlblog.fivefarmers.com/2012/08/16/understanding-mysql_config_editors-security-aspects/
(!) http://serge.frezefond.com/2013/02/mysql-5-6-credentials-securely-stored/
(?#) http://www.skysql.com/blogs/kolbe/mysql-56-security-through-complacency
Bugs:
Bug #68680 - manual had some wrong details on where file is located on Windows, now fixed
Bug #68034 - how this feature can be used to workaround the bug (see Todd’s comment)
Bug #68277 - build problem related to mysql_config_editor, fixed in 5.6.11
Bug #66546 - some people were not happy that there is no way to hardcode password in the script,
without getting warning
www.percona.com
Security improvements
sha256_password plugin
Details:
● This plugin is built in, so it is always available and need not be loaded explicitly
● Authentication method is set per user
● Use of the sha256_password plugin requires that MySQL be built with SSL capabilities. YaSSL vs
OpenSSL (this gives more, because of RSA)
Links:
(?!) http://planet.mysql.com/entry/?id=34951 - how this is supported by PHP/mysqlnd
(!) http://lists.mysql.com/internals/38325 - some history
(!) http://dev.mysql.com/doc/internals/en/authentication-method.html - all methods available
(!) http://palominodb.com/blog/2011/12/04/hashing-algorithm-mysql-password - by default it was SHA1
(SHA1('password'))
Bugs:
Bug #68478 - with YaSSL (by default) SSL connection must be configured. Now this is clearly
documented
Bug #68858 - what authentication plugin is actually used by default?
www.percona.com
Security improvements
The mysql.user table now has a password_expired column
Details:
● After an account's password has been expired, all operations performed in subsequent
connections to the server using the account result in an error until the user issues a SET
PASSWORD statement to establish a new account password
● It took some time to have this supported by connectors and clients... Use new clients!
Links:
(!) http://blog.ulf-wendel.de/2013/solution-mysql-5-6-password-expired-php-cant-connect/
(?!) http://dev.mysql.com/doc/refman/5.6/en/alter-user.html - old problems before 5.6.7, still read the
manual carefully
Bugs:
Bug #68385 - In a MySQL server newer than MySQL 5.5 using a non-upgraded mysql.proc table (for
which mysql_upgrade had not been run), statements to set passwords caused a server crash due to a
faulty check for the password_expired column. Fix will be in 5.6.12.
www.percona.com
Security improvements
Checking password security
Details:
● Implemented by validate_password plugin, requires explicit installation
● validate% server variables, VALIDATE_PASSWORD_STRENGTH() --> 0 .. 100
● mysql_upgrade now produces a warning if it finds user accounts with passwords hashed with the
older pre-4.1 hashing method.
Links:
(!) http://dev.mysql.com/doc/refman/5.6/en/writing-password-validation-plugins.html
(!) http://dev.mysql.com/doc/refman/5.6/en/upgrading-from-previous-series.html
(?#) http://datacharmer.blogspot.com/2012/03/mysql-56-too-verbose-when-creating-data.html
(!) http://mysqlblog.fivefarmers.com/2012/05/30/why-your-pre-4-1-client-wont-like-mysql-5-6/
(!) http://mysqlblog.fivefarmers.com/2012/11/12/improved-password-policy-utility-for-mysql-5-6/
Bugs:
Bug #68165 - mysql_upgrade does NOT check that there are other users doing something. This may
lead to problems. “Not a Bug” for now.
Bug #65461 - this is a FR implemented (mysql_upgrade should warn when pre-4.1 passwords found)
www.percona.com
Security improvements
--random-passwords on Unix
Details:
● Invoking mysql_install_db with --random-passwords causes it to assign a random password to
the MySQL root accounts, set the “password expired” flag for those accounts, and remove the
anonymous-user MySQL accounts.
● Unattended, but still secure installation is the goal
Links:
(?) http://lists.mysql.com/internals/38625
(!) http://aws-ome.com/how-to-install-mysql-56-on-amazon-linux-ec2-instance-in-aws.html
(!) http://www.howtoforge.com/how-to-install-mysql-5.6-on-ubuntu-12.10-including-memcached-plugin
Bugs:
Bug #53796 - a FR implemented. Now we have unatteded but still secure installation
Bug #68118 - mysql_install_db is a Perl script (*.sh is still there) and had problems with errors
processing. Fixed in 5.6.11
www.percona.com
Security improvements
Logging of passwords
Details:
● passwords do not appear in plain text in statements written to the general query log, slow query
log, and binary log
● The mysql client no longer logs to its history file statements that refer to passwords
Links:
(!) http://databaseblog.myname.nl/2013/03/how-mysql-56-handles-passwords.html
(!?) http://forums.freebsd.org/showthread.php?t=38187 - why some SELECTs from mysql.user tables
are NOT logged
Bugs:
Bug #68200 - “Password logging does not work as documented”. Now documented in details - beware
of log-raw
Bug #68626 - may be related, “GRANT statements logged twice in slow query log”
Bug #44143 - related FR, still “Verified” for whatever reason
Bug #68034 - Using an empty password on the command line triggers a warning. This may break
scripts.
www.percona.com
Security improvements
START SLAVE and storing passwords for slave
Details:
● START SLAVE permits connection parameters to be specified for connecting to the master
● No need to store in master.info
Links:
(?) http://www.skysql.com/blogs/kolbe/mysql-56-security-through-complacency
(?) http://www.skysql.com/blogs/kolbe/mysql-56-master_info_repository-documentation-behavior-and-reality
Bugs:
Bug #68605 - START SLAVE after import of table-based repositories gives empty error message
Bug #68602 - Note about "master.info repository" on CHANGE MASTER TO is misleading
www.percona.com
Security in MySQL 5.6 - overview
www.percona.com
Changes to server defaults
New defaults since 5.6.6
Details:
● The motivation for these changes is to provide better out-of-box performance...
● and to reduce the need for DBAs to change settings
Links (!):
http://www.mysqlperformanceblog.com/2013/02/21/mysql-5-5-and-mysql-5-6-default-variable-values-
differences/ - great summary of real differences
https://blog.mozilla.org/it/2013/03/08/deprecated-removed-and-ignored-variables-in-mysql-5-6/ - useful
related reading
Bug #67598 - open bug report to discuss new defaults (too late probably)
https://blogs.oracle.com/supportingmysql/entry/mysql_server_5_6_default - original ammouncement of
new default my.cnf/my.ini files
(?) http://www.iheavy.com/2012/10/09/thoughts-on-upcoming-mysql-5-6-defaults/ - not everybody was
happy
http://mysql.wisborg.dk/2013/02/06/changes-to-options-and-variables-in-mysql-5-6/ - more on new
variables in 5.6 (inlcuding defaults)
www.percona.com
Changes to server defaults
New defaults since 5.6.6
Details:
● There was a long internal discussion about new default values for server variables in Oracle...
● I had not cared enough to follow it closely
● Same as MySQL Community, it seems...
Bugs:
Bug #68917 - not all default values are properly documented
Bug #68777 - more on innodb_open_files value (should be already documented in the manual)
Bug #68287 - effect of changed defaults for poor Windows users (high memory usage)
www.percona.com
InnoDB enhancements
www.percona.com
InnoDB enhancements
FULLTEXT indexes
Details:
● You can create FULLTEXT indexes on InnoDB tables...
● and query them using the MATCH() ... AGAINST syntax.
● This feature includes a new proximity search operator (@)...
● and several new configuration options and INFORMATION_SCHEMA tables (?)
Links:
(?!#) http://www.mysqlperformanceblog.com/2013/02/26/myisam-vs-innodb-full-text-search-in-mysql-5-6-part-1/
(?!#) http://www.mysqlperformanceblog.com/2013/03/04/innodb-full-text-search-in-mysql-5-6-part-2-the-queries/
(!) http://dimitrik.free.fr/blog/archives/2012/11/mysql-performance-innodb-vs-myisam-in-56.html
Bugs:
Bug #68720 - “Verified”, Literal phrases cannot be combined with + or - operator
Bug #68150 - fixed in 5.6.11. “InnoDB FULLTEXT Phrase Logic Incorrect”
Bug #62004 - parser plugins are NOT supported, but only 5.6.12 will tell you this
Bug #68816 - verified FR to add support for parser plugins
www.percona.com
InnoDB enhancements
FULLTEXT indexes
Details:
● It's expected to see bugs and missing details in the manual for a new feature like this...
● Upgrade to 5.6.11 if you need to use it!
● It was the highest priority for InnoDB team back in 2011-2012. Why?
Bugs:
Bug #68450 - fixed in 5.6.11. “InnoDB stopword tables cannot be set if the tables use UTF8”
Bug #68502 - fixed in 5.6.11. Some internal only tables are removed
Bug #67857 - not sure if this is already documented
Bug #68621 - InnoDB FULLTEXT index type is not documented
Bug #68948 - InnoDB table fulltext index in boolean mode ignores leading *
www.percona.com
InnoDB enhancements
Online ALTER TABLE
Details:
● Several ALTER TABLE operations can be performed without copying the table, without blocking
inserts, updates, and deletes to the table, or both
● No need for pt-online-schema-change and similar tools any more?
Links:
(?) http://mysqlha.blogspot.com/2013/02/mysql-56-online-ddl-for-busy-tables.html - “Online DDL for
InnoDB blocks all concurrent inserts/updates/deletes while the log is being applied”
(!?) https://blogs.oracle.com/mysqlinnodb/entry/online_alter_table_in_mysql - some history and
limitations
(?) http://code.openark.org/blog/mysql/state-of-inndb-online-ddl-in-mysql-5-6-9-rc-good-news-included -
detailed review at 5.6.9 stage
Bugs:
Bug #68498 - FR to make it “more online”
Bug #68019 - should be fixed in 5.6.10, but still. In online DDL operations, a DROP FOREIGN KEY
clause is not allowed in certain kinds of ALTER TABLE statement
Bug #65701 - still “Verified”, ALTER improvements in 5.6 had NOT fixed fixed it entirely
www.percona.com
InnoDB enhancements
Improved tablespace management
Details:
● When creating a table, you can designate a location outside the MySQL data directory to hold the .ibd
file
● You can export a table from one MySQL instance and import it in a different instance
Links:
(!) http://mysqlblog.fivefarmers.com/2012/11/07/smarter-innodb-transportable-tablespace-management-
operations/ - early blog post about the feature
(!) http://www.chriscalender.com/?p=1078 - “With InnoDB’s Transportable Tablespaces, Recovering Data
from Stranded .ibd Files is a Thing of the Past”
Bugs:
Bug #68171 - manual still misses some details and examples for a real use
Bug #68868 - some not closely related, but missing things in the manual
Bug #67792 - initial size for a tablespace, FR that worths implementing...
www.percona.com
InnoDB enhancements
Different page sizes supported (4K and 8K, SSD)
Details:
● For uncompressed tables, see innodb_page_size
● You specify the size when creating the MySQL instance.
● All InnoDB tablespaces within an instance share the same page size
Links:
(!) http://www.percona.com/doc/percona-server/5.1/flexibility/innodb_files_extend.html - Percona Server
5.x.y has this feature for a long time already
(?) http://www.mysqlperformanceblog.com/2011/04/21/innodb-page-sizes-plans-and-ideas/ - I do miss
bigger pages, 64K maybe, for compressed tables for example (and not only me, as this old post makes
obvious)
(?) http://www.mysqlperformanceblog.com/2011/04/07/innodb-row-size-limitation/ - something to re-
evaluate for smaller page size (if used)
Bugs:
Bug #62018 - you may get no real benefits from smaller page sizes on SSD with MySQL 5.6.x (still
“Verified”). btr_search_latch is on the way it seems
www.percona.com
InnoDB enhancements
Improvements to buffer pool flushing
Details:
● Adaptive flushing...
● The new algorithm and default configuration values are expected to improve performance and
concurrency for most users
● Advanced users can fine-tune their I/O responsiveness through several configuration options
Links:
(?) http://mysqlha.blogspot.com/2013/02/mysql-56-io-bound-update-only-workloads.html - real effect of
recent changes, based on tests Facebook made
(!) www.mysqlperformanceblog.com/2009/12/04/effect-of-adaptive_flushing/ - adaptive flushing is an old
Percona Server feature...
(?!) http://www.mysqlperformanceblog.com/2011/03/31/innodb-flushing-a-lot-of-memory-and-slow-disk/
(?!) http://www.mysqlperformanceblog.com/2011/01/13/different-flavors-of-innodb-flushing/ - summary of
experince on approaching the problem on older 5.1.x and 5.5.x.
(!) https://blogs.oracle.com/mysqlinnodb/entry/new_flushing_algorithm_in_innodb - original description of
new implementation from the authors
www.percona.com
InnoDB enhancements
Improvements to buffer pool flushing
Links:
(!) http://dimitrik.free.fr/blog/archives/2012/04/mysql-performance-improved-adaptive-flushing-in-56labs.html -
one of early blog posts about Oracle’s implementation and its effect
(?) http://www.mysqlperformanceblog.com/2012/09/04/adaptive-flushing-in-mysql-5-6/ - Percona’s evaluation of
the feature at early stage
(?) http://www.mysqlperformanceblog.com/2012/09/10/adaptive-flushing-in-mysql-5-6-cont/
(!?) http://dimitrik.free.fr/blog/archives/2013/01/mysql-performance-innodb-heavy-io-rw-workloads-limits-in-56.
html - “the real improvement will come once a parallel flushing will be implemented in 5.7”
(?) http://blog.mariadb.org/sysbench-oltp-mysql-5-6-vs-mariadb-10-0/ - this post caused a lot of questions and
discussions...
Bugs:
Bug #68481 - furious flushing isn't done any more and innodb_io_capacity is not used... How to control flushing
now?
Bug #58966 - is there any way to force “good old” 5.1 behavior (even if it was not always good)?
Bug #68497 - now documentation should explain details of flushing properly (bug is “Closed”)
www.percona.com
InnoDB enhancements
Memcached API (avoid the SQL overhead)
Details:
● You can code MySQL applications that access InnoDB tables through a NoSQL-style API
● This feature uses the popular memcached daemon to relay requests such as ADD, SET, and GET for key-
value pairs. SQL and NoSQL can co-exist
Links:
http://www.mysqlperformanceblog.com/2013/03/29/mysql-5-6-innodb-memcached-plugin-as-a-caching-layer/
(!) https://blogs.oracle.com/mysqlinnodb/entry/new_enhancements_for_innodb_memcached - from the original
authors...
(!) https://blogs.oracle.com/MySQL/entry/nosql_memcached_api_for_mysql - on API and implementation detaIs,
from original authors
(!) http://dom.as/2013/04/16/the-saddest-bug-of-them-all-sql-is-dead/ - what kinds of problems this solves?
Bugs:
Bug #68530 - still “Open”, “5.6 memory leak with innodb memcached plugin”
Bug #67026 - FR for “CSV output format”, still “Open”
Bug #68974 - still "Open". "NOT NULL columns prevent Memcached plugin from writing new records"
www.percona.com
InnoDB enhancements
Persistent optimizer statistics for InnoDB tables
Details:
● Optimizer statistics for InnoDB tables are gathered at more predictable intervals and can persist
across server restarts
● You can also control the amount of sampling done for InnoDB indexes
Links:
(!) https://blogs.oracle.com/mysqlinnodb/entry/innodb_persistent_statistics_at_last - original
announcement
Bugs:
Bug #67638 - still “Verified”: “optimizer bugs must be handled with greater care in 5.6+ - one has to
make sure the table he's using already has got decent index statistics”
Bug #68629 - documentation was incorrect originally
Bug #68163 - one more “noisy” case, fixed in 5.6.11
Bug #43968 - one of the problems this new feature solves
www.percona.com
InnoDB enhancements
Optimizations for read-only transactions
Details:
● These optimizations are applied automatically when practical, or
● You can specify START TRANSACTION READ ONLY to ensure the transaction is read-only.
Links:
(!) http://dimitrik.free.fr/blog/archives/2012/07/mysql-performance-readonly-adventure-in-mysql-56.html
(!) https://blogs.oracle.com/mysqlinnodb/entry/repeatable_read_isolation_level_in - internals and 5.6
read only optimizations described in details
(!) http://dimitrik.free.fr/blog/archives/2012/11/mysql-performance-innodb-vs-myisam-in-56.html - check
section on OLTP Read-Only benchmarks InnoDB vs MyISAM
Bugs:
Bug #66587 - read only transactions are still visible in INNODB STATUS it seems (to the contrary of
documentation claims)
Bug #49169 - see last comments, interesting related reading (on how Oracle is approaching problems
and reports/followup questions from Percona)
www.percona.com
InnoDB enhancements
Separate tablespaces for UNDO logs
Details:
● You can move the InnoDB undo log out of the system tablespace into one or more separate tablespaces
Links:
(?) http://serge.frezefond.com/2013/03/mysql-5-6-innodb_undo_tablespaces-very-usefull-only-if/
(!) https://blogs.oracle.com/mysqlenterprisebackup/entry/mysql_enterprise_backup_3_8 - use proper MEB
version (xtrabackup 2.0.6 does NOT support this feature yet)
(!) http://www.fromdual.com/shrinking-innodb-system-tablespace-file-ibdata1-poc - one of that hacks people had
to use before 5.6 to decrease ibdata* size
(?) http://www.mysqlperformanceblog.com/2010/06/10/reasons-for-run-away-main-innodb-tablespace/ - UNDO in
main tablespace had been a problem for a decade...
(!) http://blog.jcole.us/2013/01/03/the-basics-of-innodb-space-file-layout/ - check ibdata1 file overview (must read,
entire series, in any case)
Bugs:
Bug #68915 - you have to follow procedures that are not entirely clearly documented
Bug #67528 - one of the problems that is (hopefully) fixed with this feature
www.percona.com
InnoDB enhancements
Improvements for REDO logs handling
Details:
● The InnoDB redo log files now have a maximum combined size of 512GB, increased from 4GB.
● The startup behavior now automatically handles the situation where the size of the existing redo log files
does not match the size specified by innodb_log_file_size and innodb_log_files_in_group
Links:
(!) http://mysql.wisborg.dk/2013/02/24/changing-the-size-of-the-innodb-log-files-in-mysql-5-6/
(!) http://www.mysqlperformanceblog.com/2011/02/03/how-innodb-handles-redo-logging/ - background theory
(!) http://www.mysqlperformanceblog.com/2011/09/18/disaster-mysql-5-5-flushing/ - discussion (in comments)
why and when bigger redo may be useful
http://www.mysqlperformanceblog.com/2012/02/17/the-relationship-between-innodb-log-checkpointing-and-
dirty-buffer-pool-pages/ - some more related background theory
(!) http://www.percona.com/doc/percona-server/5.5/scalability/innodb_io_55.html#innodb_log_file_size - bigger
logs on 64-bit systems are available for a long time already in Percona Server
Bugs:
Bug #58779 - one of original FRs + explanation why limit is 512G (not 4T as initially advertised)
www.percona.com
InnoDB enhancements
Internal performance enhancements
Details:
● reducing contention by splitting the kernel mutex
● moving flushing operations from the main thread to a separate thread
● enabling multiple purge threads
● reducing contention for the buffer pool on large-memory systems
Links:
(!) http://dev.mysql.com/doc/refman/5.6/en/innodb-performance.html - manual page with more links
(!) https://blogs.oracle.com/MySQL/entry/mysql_5_6_is_a - all official Ads/marketing on one page, thanks to
Rob
(?!) http://dimitrik.free.fr/blog/archives/2012/10/mysql-performance-innodb-buffer-pool-instances-in-56.html -
one of early performance studies
(!) https://blogs.oracle.com/mysqlinnodb/entry/mysql_5_6_multi_threaded - on multiple purge threads
(!) https://blogs.oracle.com/mysqlinnodb/entry/mysql_5_6_innodb_scalability - on kernel mutex
www.percona.com
InnoDB enhancements
Internal performance enhancements
Details:
● Famous brainstorm meeting in Paris, May 2012
● Famous "G5" fix (it was decided to NOT backport it to 5.5.x) for systems with multiple CPU sockets
Links:
(!) http://mikaelronstrom.blogspot.com/2012/10/scalability-improvements-in-mysql-56.html - interesting
reading, mentions “G5”, split of kernel mutex, split of LOCK_open mutex and more
(!) https://blogs.oracle.com/mysqlinnodb/entry/introducing_page_cleaner_thread_in - on new page
cleaner/separate flush thread
http://www.pythian.com/blog/some-fun-around-mysql-history-list/ - for historical interest
Bugs:
Bug #63196 - one of the problems that multiple purge threads code in 5.6 solved
Bug #49169 - interesting comments on what else was (and was NOT) fixed in the process of splitting kernel
mutex
Bug #54982 - interesting discussion on one use case of kernel mutex
Bug #68555 - something still to fix
www.percona.com
InnoDB enhancements
Deadlocks detection
Details:
● InnoDB uses a new, faster algorithm to detect deadlocks.
● Information about all InnoDB deadlocks can be written to the MySQL server error log
Links:
(!) http://www.mysqlperformanceblog.com/2012/09/19/logging-deadlocks-errors/ - solution for previous
versions (pt-deadlock-logger)
(!) http://ebergen.net/wordpress/2009/08/27/|InnoDB|-deadlock-count-patch/ - previous solution to at
least count deadlocks
Bugs:
Bug #1784 - original FR asking for logging all deadlocks
Bug #50413 - just a useful reading related to deadlocks
Bug #49047 - old story...
www.percona.com
Partitioning enhancements
Details:
● The maximum number of partitions is increased to 8192
● ALTER TABLE ... EXCHANGE PARTITION statement
● SELECT * FROM t PARTITION (p0, p1) ... - (sub)partition selection for DML, including LOAD...
● Partition lock pruning
Links:
(!) http://mikaelronstrom.blogspot.com/2012/10/my-personal-list-of-new-features-in.html - early post
(?) http://dev.mysql.com/doc/refman/5.6/en/partitioning-limitations.html - there are still many limitations
(?) http://www.mysqlperformanceblog.com/2010/12/11/mysql-partitioning-can-save-you-or-kill-you/ -
partitioning is not a silver bullet
Bugs:
Bug #67982 - regression vs 5.1, probably still not fixed in 5.5.x and 5.6.x. “Got error 124 from storage
engine on DELETE from a partitioned table”
Bug #65112 - old known problem that seems not solved in 5.6.x
Bug #37252 - original bug related to locking that is now fixed
Bug #63083 - one of limitations that are still there
www.percona.com
PERFORMANCE_SCHEMA
Several new features
Details:
● Instrumentation for table input and output
● Event filtering by table, based on schema and/or table names
● Event filtering by thread. More information is collected for threads
● Summary tables for table and index I/O, and for table locks
● Instrumentation for statements and stages within statements
● Configuration of instruments and consumers at server startup (not only at runtime)
Links:
(!) http://marcalff.blogspot.com/2013/04/on-configuring-performance-schema.html - recent article from
Mark Alff on how to configure P_S
(!) http://dev.mysql.com/doc/refman/5.6/en/performance-schema-configuration.html - RTFM
https://www.facebook.com/notes/mysql-at-facebook/my-mysql-is-faster-than-your-
mysql/10151250402570933 - influence of P_S in 5.6.10 and... 5.1.63 or 5.1.52+FB patch are still fastest
in too many cases
(?) http://www.mysqlperformanceblog.com/2013/02/18/is-mysql-5-6-slower-than-mysql-5-5/ - Pecona’s
experience with P_S performance impact
www.percona.com
PERFORMANCE_SCHEMA
Links:
(!) http://dimitrik.free.fr/blog/archives/2012/06/mysql-performance-pfs-overhead-in-56.html - Oracle’s
experience with P_S performance impact
http://www.percona.com/webinars/using-mysql-56-performance-schema-troubleshoot-typical-workload-
bottlenecks - upcoming Webinar (May 15, 2013)
(!) http://mysqlintheenterprise.com/2013/03/21/a-visual-guide-to-the-mysql-performance-schema/ - some kind
of a beginner’s guide
(!) http://mysql.wisborg.dk/category/mysql/performance_schema/ - useful posts from Jesper on the topic
(!) http://marcalff.blogspot.com/2011/04/performance-schema-faq-1-enable-without.html - one of early blog
posts about differences vs 5.5
(!) http://www.markleith.co.uk/2012/07/13/monitoring-processes-with-performance-schema-in-mysql-5-6/ -
blog post (based on design now a bit outdated) from one of original authors and design decision makers
(!?#) http://mysqlentomologist.blogspot.com/2013/01/how-to-use-performanceschema-to-check.html - my own
configuration experience
http://www.mysqlperformanceblog.com/2011/12/02/three-ways-that-the-poor-mans-profiler-can-hurt-mysql/ -
P_S or PMP?
- How to get any information about MDL locks for PERFORMANCE_SCHEMA?
www.percona.com
PERFORMANCE_SCHEMA
Bugs:
Bug #68413 - Facebook: “performance_schema overhead is at least 10%”
Bug #68097 - still some details to document in the manual
Bug #68574 - “No instrumentation for InnoDB files in P_S on windows”
Bug #68514 - beware of memory usage impact with P_S
Bug #67736 - useful reading about pre-5.6.10 experience with P_S (CPU impact)
Bug #68785 - new features work well together (or not)...
Bug #66589 - still not fixed (do not use mysqlhotcopy)
Bug #64941 - one of the problems that MySQL 5.6 fixed
www.percona.com
Replication and logging
Several replication enhancements were added
Details:
● Transaction-based replication using global transaction identifiers (also known as “GTIDs”)
● --gtid-mode and --enforce-gtid-consistency
● GTID-based replication is completely transaction-based
Links:
http://www.mysqlperformanceblog.com/2013/02/08/how-to-createrestore-a-slave-using-gtid-replication-
in-mysql-5-6/ - GTID changes well known procedures for DBA (?!)
http://www.mysqlperformanceblog.com/2013/03/26/repair-mysql-5-6-gtid-replication-by-injecting-empty-
transactions/ - what to do instead of SLAVE_SQL_SKIP_COUNTER=n... (!)
http://www.percona.com/resources/technical-presentations/mysql-56-gtid-nutshell-percona-live-
university-toronto - more from Miguel on the topic (!)
http://svenmysql.blogspot.com/2012/10/failover-and-flexible-replication.html - one of early posts
explaining ideas and goals of GTID-based replication (!)
www.percona.com
Replication and logging
Global transaction IDs
Links:
(!) http://svenmysql.blogspot.com/2012/10/advanced-use-of-global-transaction.html - one of early
tutorials
(!) https://blogs.oracle.com/MySQL/entry/deep_dive_into_gtids_and
(?!) http://datacharmer.blogspot.com/2013/01/easily-testing-mysql-56-gtid-in-sandbox.html - early testing
results from Giuseppe
(?!) https://lists.launchpad.net/maria-developers/msg04837.html - early discussion of Oracle’s
implementation
(?) http://kristiannielsen.livejournal.com/17008.html - MariaDB’s implementation and views
(!?) http://datacharmer.blogspot.com/2013/02/parallel-replication-and-gtid-tale-of.html - replication
features working together...
(!) https://twitter.com/jswanhart/status/296250444345380865 - even twit on the topic may be usefull
(extra 44 bytes per transaction)
(!) http://drcharlesbell.blogspot.com/2012/04/mysql-utilities-and-global-transaction.html - new MySQL
Utilities to use with GTID-based replication
(?!) http://code.openark.org/blog/mysql/thoughts-on-mysql-5-6-new-replication-features - early
experience
www.percona.com
Replication and logging - GTIDs
Bugs:
Bug #68566 - “mysqlbinlog should be more friendly with GTID”
Bug #68525 - problem when enforce-gtid-consistency is used
Bug #68386 - fixed in 5.6.11, 5.6.10 was hardly usable at scale because of this bug
Bug #68638 - “read_gtids_from_binlog improperly calls my_error with
ER_MASTER_FATAL_ERROR_READ” (minor, but still...)
Bug #68598 - "CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE statements are not
supported inside transactions when using GTIDs", limitation that should be properly documented now
Bug #68589 - documentation fixed months after GA
Bug #65189 - customer asked to NOT make some of gtid_* server variables, but who cared...
Bug #68314 - mysqldump from 5.6 demands GTIDs even for pre-5.6 versions :)
Bug #68038 - mysqldump-related, fixed in 5.6.11
Bug #67507 - probably same as above, but still “Verified”
Bug #67099 - FR, “In many environments the slave is NEVER expected to be promoted to a master so
there is no need to enable binlogging.”...
Bug #60964 - mysqlbinlog might print "### Row event for unknown table" even though transactions
succeeded on both master and slave. “Not a bug” (check comments)
Bug #68967 - about server_id_bits. Is it related? Who knows, it’s not documented...
www.percona.com
Replication and logging
Row image control
Details:
● Logging only columns required for uniquely identifying and executing changes on each row - to save disk
space, network resources, and memory usage
● binlog_row_image server system variable: minimal (log required columns only), full (log all columns), or
noblob
Links:
http://binlogtorelaylog.blogspot.com/2012/10/sneak-peek-inside-mysql-56-RBR.html - early description
Bugs:
Bug #68767 - still “Open”, but beware of binlog_row_image set to minimal if MERGE tables are used
Bug #65116 - not all old known RBR problems are solved. “REPLACE INTO does not update auto increment
when replicated row based”
Bug #68607 - one more RBR problem to solve... “REPLACE statement not properly logged in binary log in RBR”
Bug #68953 - “Binlog write errors silently ignored”. “Verified”.
Bug #66363 - “Large transaction writing rbr with sync_binlog hangs entire server on fsync” (still “Verified”)
Bug #67942 - regression in 5.5 and 5.6. “CREATE TABLE is not written in binary log if connection is killed...”
www.percona.com
Replication and logging
Crash safe binary logs
Details:
● Only complete events are logged or read back
● Server logs the length of the event and uses this information to verify that the event was written correctly
● Server can also write checksums for the events using CRC32, see binlog_checksum system variable
● To cause the server to read checksums from the binary log, use the master_verify_checksum
● The --slave-sql-verify-checksum system variable causes the slave SQL thread to read checksums
Links:
(?) http://www.mysqlperformanceblog.com/2013/02/15/replication-checksums-in-mysql-5-6/ - Percona’s
experience
(!) http://www.percona.com/doc/percona-server/5.5/reliability/crash_resistant_replication.html - Percona’s way to
do crash resistant replication
(?) https://kb.askmonty.org/en/binlog-event-checksum-interoperability/ - on binlog checksums and versions
interoperability
Bugs:
Bug #68892 - bad GRANT can break replication (not directly related)
Bug #68281 - “Not a bug”, but still useful reading. “sync_master_info=1 kills slave MTS concurrency”
www.percona.com
Replication and logging
--master-info-repository and --relay-log-info-repository
Details:
● Connection information can be logged into InnoDB tables
● To guarantee crash safety on the slave, run the slave with the --relay-log-recovery option enabled
Links:
(?) http://datacharmer.blogspot.com/2012/08/mysql-56-replication-gotchas-and-bugs.html - some
consequences, may be unexpected...
(?) http://www.skysql.com/blogs/kolbe/mysql-56-master-info-repository-documentation-behavior-and-reality -
Kolbe’s (SkySQL) comments
(?#) http://www.skysql.com/blogs/kolbe/mysql-56-security-through-complacency - some more from him
Bugs:
Bug #68460 - “blocked with FLUSH TABLES WITH READ LOCK + SHOW SLAVE STATUS”
Bug #68604 - “MySQL crashes trying to start slave” (after loading slave_master_info from another instance)
Bug #68605 - “START SLAVE after import of table-based repositories gives empty error message”
Bug #68599 - “Warning issued about master.info when using master-info-repository=table” (minor, but still...)
www.percona.com
Replication and logging
New features of mysqlbinlog
Details:
● mysqlbinlog now has the capability to back up a binary log in its original binary format
● When invoked with the --read-from-remote-server and --raw options, mysqlbinlog connects to a server,
requests the log files, and writes output files in the same format as the originals
Links:
(!) http://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog-server-id.html - more details from the manual
(!) http://www.mysqlperformanceblog.com/2012/01/18/backing-up-binary-log-files-with-mysqlbinlog/ - Percona’s
early review
Bugs:
Bug #68347 - genuine bug with -R option: “mysqlbinlog does not reset the "at" byte position counter with
ROTATE_EVENT”
Bug #67643 - mysqlbinlog version increase, fixed only in 5.6.11
Bug #68566 - mysqlbinlog and GTID related FR
Bug #68547 - “Open”, related FR: “Remote Binlog Back-up should save binlog file along with position no.”
www.percona.com
Replication and logging
Multi-threaded slave (MTS)
Details:
● N slave worker threads as determined by the value of the slave_parallel_workers server system variable
● Slave assumes that data and updates are partitioned on a per-database basis
● It is not necessary to coordinate transactions between different databases, but order can be different...
Links:
(!) https://blogs.oracle.com/MySQL/entry/benchmarking_mysql_replication_with_multi - Oracle’s benchmarks
(!) http://andreithedolphin.blogspot.com/2012/10/parallel-slave-in-mysql-replication.html - early high level
architecture review and benhcmarks from one of the the authors (Andrei Elkin)
http://scriptingmysql.wordpress.com/2013/01/07/mysql-replication-multi-threaded-slaves-parallel-event-
execution/ - some useful speculations
(?!) http://dom.as/2011/12/03/replication-prefetching/ - useful related reading (attempts to speed up single
threaded replication)
Bugs:
Bug #68506 - “Got SIGSEGV on MTS recovery + SQL thread error”
Bug #68465 - “Make slave_transaction_retries work with MTS”
Bug #68281 - beware of sync_master_info=1 when using MTS (“Not a Bug”, but still)
www.percona.com
Replication and logging
Binlog group commit is finally implemented
Links:
(!) http://dimitrik.free.fr/blog/archives/2012/06/mysql-performance-binlog-group-commit-in-56.html
(!) http://www.percona.com/doc/percona-server/5.5/performance/binary_group_commit.html - exists for a long
time in Percona Server
(!?) http://kristiannielsen.livejournal.com/16382.html - MariaDB’s work
(!) http://www.mysqlperformanceblog.com/2011/07/13/testing-the-group-commit-fix/ - benchmarking Percona’s
version
(!) http://dev.mysql.com/worklog/task/?id=5223 - original Oracle’s WL
Bugs:
Bug #68569 - deadlock with group commit
Bug #49326 - original FR
Bug #68250 - “Current semi-synchronous replication may cause deadlock”. Status is unclear, but there are
claims that 5.6 is even more likely to be affected because of binlog group commit.
Bug #68251 - “3-way deadlock on semisync replication and binlog rotate”. Reported on 5.6.9, still “Verified”.
Bug #67929 - “Race in bin log dump thread results in slave missing events”. Not related to group commit, but
note that only 5.6.11 will have the fix.
www.percona.com
Optimizer enhancements
Disk-Sweep Multi-Range Read (MRR)
Details:
● With MRR optimization, MySQL tries to reduce the number of random disk access for range scans by first
scanning the index only and collecting the keys for the relevant rows. Then the keys are sorted and finally
the rows are retrieved from the base table using the order of the primary key
Links:
(!) https://kb.askmonty.org/en/multi-range-read-optimization/ - MRR theory from MariaDB
(!) http://www.mysqlperformanceblog.com/2012/03/21/multi-range-read-mrr-in-mysql-5-6-and-mariadb-5-5/ -
MRR explanation from Percona (Ovais)
Bugs:
Bug #68919 - regression vs 5.5.x because of MRR (good it can be switched off)
Bug #62676 - documentation is still not perfect...
Bug #60864 - one more case
Bug #68977 - one more documentation problem (MRR decision is cost-based by default actually)
www.percona.com
Optimizer enhancements
Index Condition Pushdown (ICP)
Details:
● If parts of the WHERE condition can be evaluated by using only fields from the index, the MySQL server
pushes this part of the WHERE condition down to the storage engine...
● ICP can reduce the number of accesses the storage engine has to do against the base table and the
number of accesses the MySQL server has to do against the storage engine
Links:
http://www.mysqlperformanceblog.com/2012/03/12/index-condition-pushdown-in-mysql-5-6-and-mariadb-5-5-
and-its-performance-impact/ - Percona’s view
http://www.mysqlperformanceblog.com/2013/03/14/mysql-5-6-10-optimizer-limitations-index-condition-
pushdown/ - ICP limitations (?)
http://olavsandstaa.blogspot.com/2011/04/mysql-56-index-condition-pushdown.html - early review from Oracle
side (!)
Bugs:
Bug #68554 - “Optimizer wrongly choses covering index over ICP”
Bug #68154 - “explain output 'Using index condition' not proper”
www.percona.com
Optimizer enhancements
EXPLAIN for DML statements + JSON output format
Details:
● The EXPLAIN statement now provides execution plan information for DELETE, INSERT, REPLACE, and
UPDATE statements
● In addition, the EXPLAIN statement now can produce output in JSON format
Links:
(?#) http://s.petrunia.net/blog/?p=75 - Sergey Petrunia’s review of the feature
Bugs:
Bug #67638 - “Odd optimizer choice for UPDATE .. ORDER BY ... LIMIT query”
Bug #68299 - “unexpected "Using where" in "explain update/delete"”
www.percona.com
Optimizer enhancements
Subqueries optimizations
Details:
● Materialization of subqueries in the FROM clause is postponed until their contents are needed
● Optimizer may add an index to a derived table to speed up row retrieval from it
● Optimizer uses semi-join and materialization strategies
Links:
(!) http://igors-notes.blogspot.com/2012/10/once-more-about-comparison-of-subquery.html - not invented by
Oracle (from Igor Babaev)
(!) http://igors-notes.blogspot.com/2012/02/comparing-optimizer-features-of-mariadb.html - more about history
from Igor
(?) http://s.petrunia.net/blog/?p=78 - “No, Sheeri, MySQL 5.6 does not optimize subqueries away”
(!) http://s.petrunia.net/blog/?p=73 - More on cost-based choice between subquery Materialization and IN-
>EXISTS
Bugs:
Bug #68254 - still “Open”, “subquery optimize to wrong semi-join with extensions syntax to group by”
www.percona.com
Optimizer enhancements
Batched Key Access (BKA)
Details:
● BKA join algorithm is now available that uses both index access to the joined table and a join buffer
● BKA algorithm supports inner join, outer join, and semi-join operations, including nested...
● Improved join performance due to more efficient table scanning
Links:
(!) http://jorgenloland.blogspot.com/2012/12/favorite-mysql-56-features-optimizer.html - general review of
optimizer improvements
(!) http://www.mysqlperformanceblog.com/2012/04/04/join-optimizations-in-mysql-5-6-and-mariadb-5-5/ -
Percona’s review (by Ovais)
(!) http://oysteing.blogspot.com/2011/10/bacthed-key-access-speeds-up-disk-bound.html - one of earlier posts
http://www.mysqlperformanceblog.com/2012/05/31/a-case-for-mariadbs-hash-joins/ - interesting benhcmark
http://s.petrunia.net/blog/?p=49 - MySQL 6.0 news: Batched Key Access is in (history of this feature)
Bugs:
Bug #68899 - “dynamic range” access path is not cost-based (beware of big join_buffer_size)
www.percona.com
Optimizer enhancements
Optimizer tracing
Details:
● The optimizer now has a tracing capability, primarily for use by developers
● A set of optimizer_trace_xxx system variables
● The INFORMATION_SCHEMA.OPTIMIZER_TRACE table
Links:
(!) http://guilhembichot.blogspot.com/2011/09/optimizer-tracing-how-to-configure-it.html - early post about the
feature from one of authors
http://dimitrik.free.fr/blog/archives/2012/01/mysql-performance-overhead-of-optimizer-tracing-in-mysql-56.html
(!) http://opensourcedba.wordpress.com/2012/01/05/optimizer-tracing/ - some more links there
https://blogs.oracle.com/svetasmirnova/entry/my_18_mysql_5_6 - Sveta likes it :)
(!) http://jorgenloland.blogspot.com/2011/10/optimizer-tracing-query-execution-plan.html - what it is and what it
is NOT
A Look Under the Hood of CBO: The 10053 Event - that's what I'd like to see instead
Bugs:
Bug #33486 - original FR
www.percona.com
Let me produce some flame...
www.percona.com
State of optimizer in MySQL 5.6
Old and new Optimizer bugs
Links:
(?) http://www.mysqlperformanceblog.com/2009/09/20/guidance-for-mysql-optimizer-developers/ - wishlist from
PZ :)
(?) http://www.mysqlperformanceblog.com/2013/03/11/mysql-5-6-vs-5-5-on-the-star-schema-benchmark/ - is it
optimizer that matters most? Interesting case of 5.5.30 vs 5.6.10 studied in details
Bugs:
Bug #54808 - “Optimizer use REF joins where it should use EQ_REF”, still “Verified”
Bug #58604 - “crash in cleanup code of explain partitions after killing connection”, still “Verified”, 5.6.1 was listed
among versions affected
Bug #59187 - “Wrong result with NULL NOT IN subquery”, still “Verified”, 5.6.2 was listed as affected
Bug #62504 - “select count(distinct N1), count(distinct N2) from test.AA works incorrectly”, 5.6.10 is also
affected
Bug #65957 - “Poor correlated subquery performance with order by and limit”, regression comparing to 5.0.x.
5.6.6 was affected
Bug #67815 - “MySQL consistently uses a low cardinality non-referenced column in a index scan”
Bug #68350 - “query proc - re-execute of stored routine, inefficient query plan”
www.percona.com
State of optimizer in MySQL 5.6
Generic optimizer bugs in 5.6.x not listed above
Bug #68656 - “ORDER BY ignored in some situations for UPDATE query”. Regression since 5.5.6(!)
Bug #68825 - extra optimizer overhead in 5.6 is like 1%
Bug #68713 - memory left uninitialized in one case...
Bug #68871 - minor, but still...
Bug #68749 - basic case of wrong results in 5.5 and 5.6 (“Basic SELECT count(distinct id) is broken.”). Let’s
question QA?
Bug #68046 - one of the ways 5.6.10 was badly broken: “IN() clause with many constant values does not
perform”. Regression in 5.6.6+, fixed in 5.6.11.
Bug #69005 - wrong results with Order by lower(column) (regression vs 5.5)
Bug #68897 - wrong results in 5.6.10 (regression vs 5.0.x)
www.percona.com
Conditions handling in SPs
MySQL now supports the GET DIAGNOSTICS, and more...
Details:
● Block scope is used in determining which handler to select
● Condition precedence is more accurately resolved
● Bug #55843 fixed (diagnostics area clearing has changed)
● Now the handler for the condition with highest precedence is chosen, even if it is not the first condition
raised by the statement
Links:
(!) http://marcalff.blogspot.com/2011/10/mysql-get-diagnostics.html - early post about the feature
(!) http://code.openark.org/blog/mysql/mysql-error-handling-on-server-side-a-no-go - problem that is now solved
(!) Bug #61392 - one of the problems solved, “The RETURN statement did not clear the diagnostics area as it
should have. Now the diagnostics area is cleared before executing RETURN.”
Bugs:
Bug #11660 - original FR, implemented
Bug #38806 - original problem, “Wrong scope for SQL HANDLERS in SP”, solved
Bug #68831 - does not work as expected sometimes, “HANDLER FOR SQLEXCEPTION not catching Error 1452
(FK constraint) for UPDATE”
www.percona.com
Data types
Several data type changes have been implemented
Details:
● MySQL now permits fractional seconds (6 digits) for TIME, DATETIME, and TIMESTAMP values
● DEFAULT CURRENT_TIMESTAMP and ON UPDATE CURRENT_TIMESTAMP clauses - for any
TIMESTAMP and DATETIME columns
● explicit_defaults_for_timestamp system variable
● YEAR(2) columns in existing tables are treated as before, but YEAR(2) in new or altered tables are
converted to YEAR(4)
Bugs:
Bug #68864 - “INTERVAL treats null values of text columns as float/int”. Not new in 5.6.
Bug #68760 - “Datetime rounding problem”, looks like regression vs 5.5.30
Bug #68759 - “Inconsistent results on comparison a time field with a non-time literal”, looks like regression vs
5.5.31
Bug #68577 - “Incorrect enum values returned when using UNION after CREATE AS SELECT”. Not new...
Bug #68192 - “Limitation on DOUBLE or REAL length is ignored with INSERT .. SELECT”. Not new in 5.6
Bug #68062 - “TIME_TO_SEC() doesn't support fractional seconds”. Reported against 5.6.8 and still NOT fixed.
www.percona.com
Do we have a hope?
www.percona.com
Features without serious problems
● InnoDB support for read only media (Bug #67600 - you should not miss
innodb_read_only option or server will crash...)
● New InnoDB-related I_S tables: INNODB_SYS_*, INNODB_BUFFER_*
(also in 5.5.28+), INNODB_FT_*, INNODB_METRICS (209 counters as of
5.6.10)
● InnoDB data dictionary size control (table_definition_cache)
● Preloading the InnoDB buffer pool
● Delayed replication (MASTER_DELAY vs pt-slave-delay) and other small
replication improvements
● SELECT ... FROM single_table ...
ORDER BY non_index_column [DESC] LIMIT [M,]N
● Host cache: new Connection_errors_xxx status variables, host_cache_size
variable, P_S.host_cache table
● Improved OpenGIS support (Bug #68091 - “ST_Overlaps and ST_Intersects
give erroneous results”, still a bug even in 5.6.11)
www.percona.com
Thank you!
Questions and Answers
Please, report bugs to:
http://bugs.mysql.com

More Related Content

What's hot

FOSDEM 2015: gdb tips and tricks for MySQL DBAs
FOSDEM 2015: gdb tips and tricks for MySQL DBAsFOSDEM 2015: gdb tips and tricks for MySQL DBAs
FOSDEM 2015: gdb tips and tricks for MySQL DBAsValerii Kravchuk
 
Gdb basics for my sql db as (openfest 2017) final
Gdb basics for my sql db as (openfest 2017) finalGdb basics for my sql db as (openfest 2017) final
Gdb basics for my sql db as (openfest 2017) finalValeriy Kravchuk
 
Basic MySQL Troubleshooting for Oracle DBAs
Basic MySQL Troubleshooting for Oracle DBAsBasic MySQL Troubleshooting for Oracle DBAs
Basic MySQL Troubleshooting for Oracle DBAsSveta Smirnova
 
Gdb basics for my sql db as (percona live europe 2019)
Gdb basics for my sql db as (percona live europe 2019)Gdb basics for my sql db as (percona live europe 2019)
Gdb basics for my sql db as (percona live europe 2019)Valerii Kravchuk
 
Perl Stored Procedures for MySQL (2009)
Perl Stored Procedures for MySQL (2009)Perl Stored Procedures for MySQL (2009)
Perl Stored Procedures for MySQL (2009)Antony T Curtis
 
Flame Graphs for MySQL DBAs - FOSDEM 2022 MySQL Devroom
Flame Graphs for MySQL DBAs - FOSDEM 2022 MySQL DevroomFlame Graphs for MySQL DBAs - FOSDEM 2022 MySQL Devroom
Flame Graphs for MySQL DBAs - FOSDEM 2022 MySQL DevroomValeriy Kravchuk
 
Performance Schema for MySQL troubleshooting
Performance Schema for MySQL troubleshootingPerformance Schema for MySQL troubleshooting
Performance Schema for MySQL troubleshootingSveta Smirnova
 
MariaDB Server on macOS - FOSDEM 2022 MariaDB Devroom
MariaDB Server on macOS -  FOSDEM 2022 MariaDB DevroomMariaDB Server on macOS -  FOSDEM 2022 MariaDB Devroom
MariaDB Server on macOS - FOSDEM 2022 MariaDB DevroomValeriy Kravchuk
 
Using Perl Stored Procedures for MariaDB
Using Perl Stored Procedures for MariaDBUsing Perl Stored Procedures for MariaDB
Using Perl Stored Procedures for MariaDBAntony T Curtis
 
The New MariaDB Offering - MariaDB 10, MaxScale and more
The New MariaDB Offering - MariaDB 10, MaxScale and moreThe New MariaDB Offering - MariaDB 10, MaxScale and more
The New MariaDB Offering - MariaDB 10, MaxScale and moreMariaDB Corporation
 
External Language Stored Procedures for MySQL
External Language Stored Procedures for MySQLExternal Language Stored Procedures for MySQL
External Language Stored Procedures for MySQLAntony T Curtis
 
Preparse Query Rewrite Plugins
Preparse Query Rewrite PluginsPreparse Query Rewrite Plugins
Preparse Query Rewrite PluginsSveta Smirnova
 
Summary tables with flexviews
Summary tables with flexviewsSummary tables with flexviews
Summary tables with flexviewsJustin Swanhart
 
Performance Schema for MySQL Troubleshooting
 Performance Schema for MySQL Troubleshooting Performance Schema for MySQL Troubleshooting
Performance Schema for MySQL TroubleshootingSveta Smirnova
 
Linux /proc filesystem for MySQL DBAs - FOSDEM 2021
Linux  /proc filesystem for MySQL DBAs - FOSDEM 2021Linux  /proc filesystem for MySQL DBAs - FOSDEM 2021
Linux /proc filesystem for MySQL DBAs - FOSDEM 2021Valeriy Kravchuk
 
Performance Schema for MySQL Troubleshooting
Performance Schema for MySQL TroubleshootingPerformance Schema for MySQL Troubleshooting
Performance Schema for MySQL TroubleshootingSveta Smirnova
 
Troubleshooting MySQL Performance
Troubleshooting MySQL PerformanceTroubleshooting MySQL Performance
Troubleshooting MySQL PerformanceSveta Smirnova
 
Performance Schema for MySQL Troubleshooting
Performance Schema for MySQL TroubleshootingPerformance Schema for MySQL Troubleshooting
Performance Schema for MySQL TroubleshootingSveta Smirnova
 
MySQL Indexierung CeBIT 2014
MySQL Indexierung CeBIT 2014MySQL Indexierung CeBIT 2014
MySQL Indexierung CeBIT 2014FromDual GmbH
 
Nginx and friends - putting a turbo button on your site
Nginx and friends - putting a turbo button on your siteNginx and friends - putting a turbo button on your site
Nginx and friends - putting a turbo button on your siteWim Godden
 

What's hot (20)

FOSDEM 2015: gdb tips and tricks for MySQL DBAs
FOSDEM 2015: gdb tips and tricks for MySQL DBAsFOSDEM 2015: gdb tips and tricks for MySQL DBAs
FOSDEM 2015: gdb tips and tricks for MySQL DBAs
 
Gdb basics for my sql db as (openfest 2017) final
Gdb basics for my sql db as (openfest 2017) finalGdb basics for my sql db as (openfest 2017) final
Gdb basics for my sql db as (openfest 2017) final
 
Basic MySQL Troubleshooting for Oracle DBAs
Basic MySQL Troubleshooting for Oracle DBAsBasic MySQL Troubleshooting for Oracle DBAs
Basic MySQL Troubleshooting for Oracle DBAs
 
Gdb basics for my sql db as (percona live europe 2019)
Gdb basics for my sql db as (percona live europe 2019)Gdb basics for my sql db as (percona live europe 2019)
Gdb basics for my sql db as (percona live europe 2019)
 
Perl Stored Procedures for MySQL (2009)
Perl Stored Procedures for MySQL (2009)Perl Stored Procedures for MySQL (2009)
Perl Stored Procedures for MySQL (2009)
 
Flame Graphs for MySQL DBAs - FOSDEM 2022 MySQL Devroom
Flame Graphs for MySQL DBAs - FOSDEM 2022 MySQL DevroomFlame Graphs for MySQL DBAs - FOSDEM 2022 MySQL Devroom
Flame Graphs for MySQL DBAs - FOSDEM 2022 MySQL Devroom
 
Performance Schema for MySQL troubleshooting
Performance Schema for MySQL troubleshootingPerformance Schema for MySQL troubleshooting
Performance Schema for MySQL troubleshooting
 
MariaDB Server on macOS - FOSDEM 2022 MariaDB Devroom
MariaDB Server on macOS -  FOSDEM 2022 MariaDB DevroomMariaDB Server on macOS -  FOSDEM 2022 MariaDB Devroom
MariaDB Server on macOS - FOSDEM 2022 MariaDB Devroom
 
Using Perl Stored Procedures for MariaDB
Using Perl Stored Procedures for MariaDBUsing Perl Stored Procedures for MariaDB
Using Perl Stored Procedures for MariaDB
 
The New MariaDB Offering - MariaDB 10, MaxScale and more
The New MariaDB Offering - MariaDB 10, MaxScale and moreThe New MariaDB Offering - MariaDB 10, MaxScale and more
The New MariaDB Offering - MariaDB 10, MaxScale and more
 
External Language Stored Procedures for MySQL
External Language Stored Procedures for MySQLExternal Language Stored Procedures for MySQL
External Language Stored Procedures for MySQL
 
Preparse Query Rewrite Plugins
Preparse Query Rewrite PluginsPreparse Query Rewrite Plugins
Preparse Query Rewrite Plugins
 
Summary tables with flexviews
Summary tables with flexviewsSummary tables with flexviews
Summary tables with flexviews
 
Performance Schema for MySQL Troubleshooting
 Performance Schema for MySQL Troubleshooting Performance Schema for MySQL Troubleshooting
Performance Schema for MySQL Troubleshooting
 
Linux /proc filesystem for MySQL DBAs - FOSDEM 2021
Linux  /proc filesystem for MySQL DBAs - FOSDEM 2021Linux  /proc filesystem for MySQL DBAs - FOSDEM 2021
Linux /proc filesystem for MySQL DBAs - FOSDEM 2021
 
Performance Schema for MySQL Troubleshooting
Performance Schema for MySQL TroubleshootingPerformance Schema for MySQL Troubleshooting
Performance Schema for MySQL Troubleshooting
 
Troubleshooting MySQL Performance
Troubleshooting MySQL PerformanceTroubleshooting MySQL Performance
Troubleshooting MySQL Performance
 
Performance Schema for MySQL Troubleshooting
Performance Schema for MySQL TroubleshootingPerformance Schema for MySQL Troubleshooting
Performance Schema for MySQL Troubleshooting
 
MySQL Indexierung CeBIT 2014
MySQL Indexierung CeBIT 2014MySQL Indexierung CeBIT 2014
MySQL Indexierung CeBIT 2014
 
Nginx and friends - putting a turbo button on your site
Nginx and friends - putting a turbo button on your siteNginx and friends - putting a turbo button on your site
Nginx and friends - putting a turbo button on your site
 

Similar to MySQL 5.6 Experiences: Bugs, Problems and Solutions

Clouldera Implementation Guide for Production Deployments
Clouldera Implementation Guide for Production DeploymentsClouldera Implementation Guide for Production Deployments
Clouldera Implementation Guide for Production DeploymentsAhmed Mekawy
 
Upgrade from MySQL 5.7 to MySQL 8.0
Upgrade from MySQL 5.7 to MySQL 8.0Upgrade from MySQL 5.7 to MySQL 8.0
Upgrade from MySQL 5.7 to MySQL 8.0Olivier DASINI
 
MariaDB 5.5 and what comes next - Percona Live NYC 2012
MariaDB 5.5 and what comes next - Percona Live NYC 2012MariaDB 5.5 and what comes next - Percona Live NYC 2012
MariaDB 5.5 and what comes next - Percona Live NYC 2012Colin Charles
 
My SQL Replication and Scaling
My SQL Replication and ScalingMy SQL Replication and Scaling
My SQL Replication and ScalingMindfire Solutions
 
MySQL's new Secure by Default Install -- All Things Open October 20th 2015
MySQL's new Secure by Default Install -- All Things Open October 20th 2015MySQL's new Secure by Default Install -- All Things Open October 20th 2015
MySQL's new Secure by Default Install -- All Things Open October 20th 2015Dave Stokes
 
Caching and tuning fun for high scalability @ FOSDEM 2012
Caching and tuning fun for high scalability @ FOSDEM 2012Caching and tuning fun for high scalability @ FOSDEM 2012
Caching and tuning fun for high scalability @ FOSDEM 2012Wim Godden
 
Getting started with my sql
Getting started with my sqlGetting started with my sql
Getting started with my sqlWeb Sky
 
The Full MySQL and MariaDB Parallel Replication Tutorial
The Full MySQL and MariaDB Parallel Replication TutorialThe Full MySQL and MariaDB Parallel Replication Tutorial
The Full MySQL and MariaDB Parallel Replication TutorialJean-François Gagné
 
01 demystifying mysq-lfororacledbaanddeveloperv1
01 demystifying mysq-lfororacledbaanddeveloperv101 demystifying mysq-lfororacledbaanddeveloperv1
01 demystifying mysq-lfororacledbaanddeveloperv1Ivan Ma
 
ProxySQL for MySQL
ProxySQL for MySQLProxySQL for MySQL
ProxySQL for MySQLMydbops
 
MySQL 5.7: What's New, Nov. 2015
MySQL 5.7: What's New, Nov. 2015MySQL 5.7: What's New, Nov. 2015
MySQL 5.7: What's New, Nov. 2015Mario Beck
 
Mysql 57-upcoming-changes
Mysql 57-upcoming-changesMysql 57-upcoming-changes
Mysql 57-upcoming-changesMorgan Tocker
 
MySQL for Oracle DBAs
MySQL for Oracle DBAsMySQL for Oracle DBAs
MySQL for Oracle DBAsBen Krug
 
Upgrading to my sql 8.0
Upgrading to my sql 8.0Upgrading to my sql 8.0
Upgrading to my sql 8.0Ståle Deraas
 
AdminCamp 2017 - IBM Connections Adminblast
AdminCamp 2017 - IBM Connections AdminblastAdminCamp 2017 - IBM Connections Adminblast
AdminCamp 2017 - IBM Connections AdminblastNico Meisenzahl
 
Caching and tuning fun for high scalability @ PHPTour
Caching and tuning fun for high scalability @ PHPTourCaching and tuning fun for high scalability @ PHPTour
Caching and tuning fun for high scalability @ PHPTourWim Godden
 

Similar to MySQL 5.6 Experiences: Bugs, Problems and Solutions (20)

Clouldera Implementation Guide for Production Deployments
Clouldera Implementation Guide for Production DeploymentsClouldera Implementation Guide for Production Deployments
Clouldera Implementation Guide for Production Deployments
 
Upgrade from MySQL 5.7 to MySQL 8.0
Upgrade from MySQL 5.7 to MySQL 8.0Upgrade from MySQL 5.7 to MySQL 8.0
Upgrade from MySQL 5.7 to MySQL 8.0
 
MariaDB 5.5 and what comes next - Percona Live NYC 2012
MariaDB 5.5 and what comes next - Percona Live NYC 2012MariaDB 5.5 and what comes next - Percona Live NYC 2012
MariaDB 5.5 and what comes next - Percona Live NYC 2012
 
My SQL Replication and Scaling
My SQL Replication and ScalingMy SQL Replication and Scaling
My SQL Replication and Scaling
 
MySQL's new Secure by Default Install -- All Things Open October 20th 2015
MySQL's new Secure by Default Install -- All Things Open October 20th 2015MySQL's new Secure by Default Install -- All Things Open October 20th 2015
MySQL's new Secure by Default Install -- All Things Open October 20th 2015
 
Caching and tuning fun for high scalability @ FOSDEM 2012
Caching and tuning fun for high scalability @ FOSDEM 2012Caching and tuning fun for high scalability @ FOSDEM 2012
Caching and tuning fun for high scalability @ FOSDEM 2012
 
Getting started with my sql
Getting started with my sqlGetting started with my sql
Getting started with my sql
 
SQL Server 2014 Backup to Azure - SQL Saturday CR 2015
SQL Server 2014 Backup to Azure - SQL Saturday CR 2015SQL Server 2014 Backup to Azure - SQL Saturday CR 2015
SQL Server 2014 Backup to Azure - SQL Saturday CR 2015
 
The Full MySQL and MariaDB Parallel Replication Tutorial
The Full MySQL and MariaDB Parallel Replication TutorialThe Full MySQL and MariaDB Parallel Replication Tutorial
The Full MySQL and MariaDB Parallel Replication Tutorial
 
01 demystifying mysq-lfororacledbaanddeveloperv1
01 demystifying mysq-lfororacledbaanddeveloperv101 demystifying mysq-lfororacledbaanddeveloperv1
01 demystifying mysq-lfororacledbaanddeveloperv1
 
ProxySQL for MySQL
ProxySQL for MySQLProxySQL for MySQL
ProxySQL for MySQL
 
MySQL 5.7: What's New, Nov. 2015
MySQL 5.7: What's New, Nov. 2015MySQL 5.7: What's New, Nov. 2015
MySQL 5.7: What's New, Nov. 2015
 
MySQL NoSQL APIs
MySQL NoSQL APIsMySQL NoSQL APIs
MySQL NoSQL APIs
 
Mysql 57-upcoming-changes
Mysql 57-upcoming-changesMysql 57-upcoming-changes
Mysql 57-upcoming-changes
 
MySQL for Oracle DBAs
MySQL for Oracle DBAsMySQL for Oracle DBAs
MySQL for Oracle DBAs
 
Upgrading to my sql 8.0
Upgrading to my sql 8.0Upgrading to my sql 8.0
Upgrading to my sql 8.0
 
AdminCamp 2017 - IBM Connections Adminblast
AdminCamp 2017 - IBM Connections AdminblastAdminCamp 2017 - IBM Connections Adminblast
AdminCamp 2017 - IBM Connections Adminblast
 
Mysql ppt
Mysql pptMysql ppt
Mysql ppt
 
Caching and tuning fun for high scalability @ PHPTour
Caching and tuning fun for high scalability @ PHPTourCaching and tuning fun for high scalability @ PHPTour
Caching and tuning fun for high scalability @ PHPTour
 
Mysql tracing
Mysql tracingMysql tracing
Mysql tracing
 

Recently uploaded

Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 

MySQL 5.6 Experiences: Bugs, Problems and Solutions

  • 1. MySQL 5.6 Experiences: Bugs, Problems and Solutions Valerii Kravchuk, Principal Support Engineer http://mysqlentomologist.blogspot.com/ https://www.facebook.com/valerii.kravchuk http://bugs.mysql.com valerii.kravchuk@percona.com
  • 2. www.percona.com MySQL 5.6's current state and future - that's how I see it
  • 3. www.percona.com MySQL 5.6's current state and future - that's how I see it ● The sun is shining, the sky is blue - positive reviews, great benchmark results ● Looks like a warm seaside is ahead, close enough - we can scale up to 1024 threads (but check http://www.mysqlperformanceblog. com/2013/04/15/memory-allocators-mysql-performance-improvements-in- pecona-server-5-5-30-30-2/), replication is crash safe and more efficient.. ● There are some roads ahead, clearly visible, and people near the sea that are probably happy - everybody looks happy about MySQL 5.6 GA, early adopters among Oracle customers, positive blog posts ● There are clouds and some of them dark, rain and even storm is still possible - MySQL 5.6 is slow for some, like Facebook ● Land is nice, probably ancient - who knows what bad things happened here, and what is hidden in the ground ● There could be old rocks far in the sea and something in that grass and bushes on our way ahead... Bugs?
  • 4. www.percona.com Bugs: scary, dangerous, nice, new, ancient... all kinds of, in MySQL 5.6
  • 5. www.percona.com But let's read the manual first... ● We can just start with this page: http://dev.mysql.com/doc/refman/5.6/en/mysql-nutshell.html ● Remove extra details and add references to each major feature ● For every feature description from that page I am going to add extra references (articles about the feature, bugs related to the feature) ● I'll make some comments also (if I have anything useful to add) ● That's how we get "Bugs (#), Problems (?) and Solutions (!)"
  • 6. www.percona.com Security improvements .mylogin.cnf and mysql_config_editor Details: ● password is no longer stored in plain text (like in .my.cnf)... ● but if someone can read .mylogin.cnf, they have your MySQL password ● ~/.mylogin.cnf is not a more secure place to store your password than ~/.my.cnf Links: (?) http://mysqldump.azundris.com/archives/104-.mylogin.cnf-password-recovery.html (!) http://mysqlblog.fivefarmers.com/2012/08/16/understanding-mysql_config_editors-security-aspects/ (!) http://serge.frezefond.com/2013/02/mysql-5-6-credentials-securely-stored/ (?#) http://www.skysql.com/blogs/kolbe/mysql-56-security-through-complacency Bugs: Bug #68680 - manual had some wrong details on where file is located on Windows, now fixed Bug #68034 - how this feature can be used to workaround the bug (see Todd’s comment) Bug #68277 - build problem related to mysql_config_editor, fixed in 5.6.11 Bug #66546 - some people were not happy that there is no way to hardcode password in the script, without getting warning
  • 7. www.percona.com Security improvements sha256_password plugin Details: ● This plugin is built in, so it is always available and need not be loaded explicitly ● Authentication method is set per user ● Use of the sha256_password plugin requires that MySQL be built with SSL capabilities. YaSSL vs OpenSSL (this gives more, because of RSA) Links: (?!) http://planet.mysql.com/entry/?id=34951 - how this is supported by PHP/mysqlnd (!) http://lists.mysql.com/internals/38325 - some history (!) http://dev.mysql.com/doc/internals/en/authentication-method.html - all methods available (!) http://palominodb.com/blog/2011/12/04/hashing-algorithm-mysql-password - by default it was SHA1 (SHA1('password')) Bugs: Bug #68478 - with YaSSL (by default) SSL connection must be configured. Now this is clearly documented Bug #68858 - what authentication plugin is actually used by default?
  • 8. www.percona.com Security improvements The mysql.user table now has a password_expired column Details: ● After an account's password has been expired, all operations performed in subsequent connections to the server using the account result in an error until the user issues a SET PASSWORD statement to establish a new account password ● It took some time to have this supported by connectors and clients... Use new clients! Links: (!) http://blog.ulf-wendel.de/2013/solution-mysql-5-6-password-expired-php-cant-connect/ (?!) http://dev.mysql.com/doc/refman/5.6/en/alter-user.html - old problems before 5.6.7, still read the manual carefully Bugs: Bug #68385 - In a MySQL server newer than MySQL 5.5 using a non-upgraded mysql.proc table (for which mysql_upgrade had not been run), statements to set passwords caused a server crash due to a faulty check for the password_expired column. Fix will be in 5.6.12.
  • 9. www.percona.com Security improvements Checking password security Details: ● Implemented by validate_password plugin, requires explicit installation ● validate% server variables, VALIDATE_PASSWORD_STRENGTH() --> 0 .. 100 ● mysql_upgrade now produces a warning if it finds user accounts with passwords hashed with the older pre-4.1 hashing method. Links: (!) http://dev.mysql.com/doc/refman/5.6/en/writing-password-validation-plugins.html (!) http://dev.mysql.com/doc/refman/5.6/en/upgrading-from-previous-series.html (?#) http://datacharmer.blogspot.com/2012/03/mysql-56-too-verbose-when-creating-data.html (!) http://mysqlblog.fivefarmers.com/2012/05/30/why-your-pre-4-1-client-wont-like-mysql-5-6/ (!) http://mysqlblog.fivefarmers.com/2012/11/12/improved-password-policy-utility-for-mysql-5-6/ Bugs: Bug #68165 - mysql_upgrade does NOT check that there are other users doing something. This may lead to problems. “Not a Bug” for now. Bug #65461 - this is a FR implemented (mysql_upgrade should warn when pre-4.1 passwords found)
  • 10. www.percona.com Security improvements --random-passwords on Unix Details: ● Invoking mysql_install_db with --random-passwords causes it to assign a random password to the MySQL root accounts, set the “password expired” flag for those accounts, and remove the anonymous-user MySQL accounts. ● Unattended, but still secure installation is the goal Links: (?) http://lists.mysql.com/internals/38625 (!) http://aws-ome.com/how-to-install-mysql-56-on-amazon-linux-ec2-instance-in-aws.html (!) http://www.howtoforge.com/how-to-install-mysql-5.6-on-ubuntu-12.10-including-memcached-plugin Bugs: Bug #53796 - a FR implemented. Now we have unatteded but still secure installation Bug #68118 - mysql_install_db is a Perl script (*.sh is still there) and had problems with errors processing. Fixed in 5.6.11
  • 11. www.percona.com Security improvements Logging of passwords Details: ● passwords do not appear in plain text in statements written to the general query log, slow query log, and binary log ● The mysql client no longer logs to its history file statements that refer to passwords Links: (!) http://databaseblog.myname.nl/2013/03/how-mysql-56-handles-passwords.html (!?) http://forums.freebsd.org/showthread.php?t=38187 - why some SELECTs from mysql.user tables are NOT logged Bugs: Bug #68200 - “Password logging does not work as documented”. Now documented in details - beware of log-raw Bug #68626 - may be related, “GRANT statements logged twice in slow query log” Bug #44143 - related FR, still “Verified” for whatever reason Bug #68034 - Using an empty password on the command line triggers a warning. This may break scripts.
  • 12. www.percona.com Security improvements START SLAVE and storing passwords for slave Details: ● START SLAVE permits connection parameters to be specified for connecting to the master ● No need to store in master.info Links: (?) http://www.skysql.com/blogs/kolbe/mysql-56-security-through-complacency (?) http://www.skysql.com/blogs/kolbe/mysql-56-master_info_repository-documentation-behavior-and-reality Bugs: Bug #68605 - START SLAVE after import of table-based repositories gives empty error message Bug #68602 - Note about "master.info repository" on CHANGE MASTER TO is misleading
  • 14. www.percona.com Changes to server defaults New defaults since 5.6.6 Details: ● The motivation for these changes is to provide better out-of-box performance... ● and to reduce the need for DBAs to change settings Links (!): http://www.mysqlperformanceblog.com/2013/02/21/mysql-5-5-and-mysql-5-6-default-variable-values- differences/ - great summary of real differences https://blog.mozilla.org/it/2013/03/08/deprecated-removed-and-ignored-variables-in-mysql-5-6/ - useful related reading Bug #67598 - open bug report to discuss new defaults (too late probably) https://blogs.oracle.com/supportingmysql/entry/mysql_server_5_6_default - original ammouncement of new default my.cnf/my.ini files (?) http://www.iheavy.com/2012/10/09/thoughts-on-upcoming-mysql-5-6-defaults/ - not everybody was happy http://mysql.wisborg.dk/2013/02/06/changes-to-options-and-variables-in-mysql-5-6/ - more on new variables in 5.6 (inlcuding defaults)
  • 15. www.percona.com Changes to server defaults New defaults since 5.6.6 Details: ● There was a long internal discussion about new default values for server variables in Oracle... ● I had not cared enough to follow it closely ● Same as MySQL Community, it seems... Bugs: Bug #68917 - not all default values are properly documented Bug #68777 - more on innodb_open_files value (should be already documented in the manual) Bug #68287 - effect of changed defaults for poor Windows users (high memory usage)
  • 17. www.percona.com InnoDB enhancements FULLTEXT indexes Details: ● You can create FULLTEXT indexes on InnoDB tables... ● and query them using the MATCH() ... AGAINST syntax. ● This feature includes a new proximity search operator (@)... ● and several new configuration options and INFORMATION_SCHEMA tables (?) Links: (?!#) http://www.mysqlperformanceblog.com/2013/02/26/myisam-vs-innodb-full-text-search-in-mysql-5-6-part-1/ (?!#) http://www.mysqlperformanceblog.com/2013/03/04/innodb-full-text-search-in-mysql-5-6-part-2-the-queries/ (!) http://dimitrik.free.fr/blog/archives/2012/11/mysql-performance-innodb-vs-myisam-in-56.html Bugs: Bug #68720 - “Verified”, Literal phrases cannot be combined with + or - operator Bug #68150 - fixed in 5.6.11. “InnoDB FULLTEXT Phrase Logic Incorrect” Bug #62004 - parser plugins are NOT supported, but only 5.6.12 will tell you this Bug #68816 - verified FR to add support for parser plugins
  • 18. www.percona.com InnoDB enhancements FULLTEXT indexes Details: ● It's expected to see bugs and missing details in the manual for a new feature like this... ● Upgrade to 5.6.11 if you need to use it! ● It was the highest priority for InnoDB team back in 2011-2012. Why? Bugs: Bug #68450 - fixed in 5.6.11. “InnoDB stopword tables cannot be set if the tables use UTF8” Bug #68502 - fixed in 5.6.11. Some internal only tables are removed Bug #67857 - not sure if this is already documented Bug #68621 - InnoDB FULLTEXT index type is not documented Bug #68948 - InnoDB table fulltext index in boolean mode ignores leading *
  • 19. www.percona.com InnoDB enhancements Online ALTER TABLE Details: ● Several ALTER TABLE operations can be performed without copying the table, without blocking inserts, updates, and deletes to the table, or both ● No need for pt-online-schema-change and similar tools any more? Links: (?) http://mysqlha.blogspot.com/2013/02/mysql-56-online-ddl-for-busy-tables.html - “Online DDL for InnoDB blocks all concurrent inserts/updates/deletes while the log is being applied” (!?) https://blogs.oracle.com/mysqlinnodb/entry/online_alter_table_in_mysql - some history and limitations (?) http://code.openark.org/blog/mysql/state-of-inndb-online-ddl-in-mysql-5-6-9-rc-good-news-included - detailed review at 5.6.9 stage Bugs: Bug #68498 - FR to make it “more online” Bug #68019 - should be fixed in 5.6.10, but still. In online DDL operations, a DROP FOREIGN KEY clause is not allowed in certain kinds of ALTER TABLE statement Bug #65701 - still “Verified”, ALTER improvements in 5.6 had NOT fixed fixed it entirely
  • 20. www.percona.com InnoDB enhancements Improved tablespace management Details: ● When creating a table, you can designate a location outside the MySQL data directory to hold the .ibd file ● You can export a table from one MySQL instance and import it in a different instance Links: (!) http://mysqlblog.fivefarmers.com/2012/11/07/smarter-innodb-transportable-tablespace-management- operations/ - early blog post about the feature (!) http://www.chriscalender.com/?p=1078 - “With InnoDB’s Transportable Tablespaces, Recovering Data from Stranded .ibd Files is a Thing of the Past” Bugs: Bug #68171 - manual still misses some details and examples for a real use Bug #68868 - some not closely related, but missing things in the manual Bug #67792 - initial size for a tablespace, FR that worths implementing...
  • 21. www.percona.com InnoDB enhancements Different page sizes supported (4K and 8K, SSD) Details: ● For uncompressed tables, see innodb_page_size ● You specify the size when creating the MySQL instance. ● All InnoDB tablespaces within an instance share the same page size Links: (!) http://www.percona.com/doc/percona-server/5.1/flexibility/innodb_files_extend.html - Percona Server 5.x.y has this feature for a long time already (?) http://www.mysqlperformanceblog.com/2011/04/21/innodb-page-sizes-plans-and-ideas/ - I do miss bigger pages, 64K maybe, for compressed tables for example (and not only me, as this old post makes obvious) (?) http://www.mysqlperformanceblog.com/2011/04/07/innodb-row-size-limitation/ - something to re- evaluate for smaller page size (if used) Bugs: Bug #62018 - you may get no real benefits from smaller page sizes on SSD with MySQL 5.6.x (still “Verified”). btr_search_latch is on the way it seems
  • 22. www.percona.com InnoDB enhancements Improvements to buffer pool flushing Details: ● Adaptive flushing... ● The new algorithm and default configuration values are expected to improve performance and concurrency for most users ● Advanced users can fine-tune their I/O responsiveness through several configuration options Links: (?) http://mysqlha.blogspot.com/2013/02/mysql-56-io-bound-update-only-workloads.html - real effect of recent changes, based on tests Facebook made (!) www.mysqlperformanceblog.com/2009/12/04/effect-of-adaptive_flushing/ - adaptive flushing is an old Percona Server feature... (?!) http://www.mysqlperformanceblog.com/2011/03/31/innodb-flushing-a-lot-of-memory-and-slow-disk/ (?!) http://www.mysqlperformanceblog.com/2011/01/13/different-flavors-of-innodb-flushing/ - summary of experince on approaching the problem on older 5.1.x and 5.5.x. (!) https://blogs.oracle.com/mysqlinnodb/entry/new_flushing_algorithm_in_innodb - original description of new implementation from the authors
  • 23. www.percona.com InnoDB enhancements Improvements to buffer pool flushing Links: (!) http://dimitrik.free.fr/blog/archives/2012/04/mysql-performance-improved-adaptive-flushing-in-56labs.html - one of early blog posts about Oracle’s implementation and its effect (?) http://www.mysqlperformanceblog.com/2012/09/04/adaptive-flushing-in-mysql-5-6/ - Percona’s evaluation of the feature at early stage (?) http://www.mysqlperformanceblog.com/2012/09/10/adaptive-flushing-in-mysql-5-6-cont/ (!?) http://dimitrik.free.fr/blog/archives/2013/01/mysql-performance-innodb-heavy-io-rw-workloads-limits-in-56. html - “the real improvement will come once a parallel flushing will be implemented in 5.7” (?) http://blog.mariadb.org/sysbench-oltp-mysql-5-6-vs-mariadb-10-0/ - this post caused a lot of questions and discussions... Bugs: Bug #68481 - furious flushing isn't done any more and innodb_io_capacity is not used... How to control flushing now? Bug #58966 - is there any way to force “good old” 5.1 behavior (even if it was not always good)? Bug #68497 - now documentation should explain details of flushing properly (bug is “Closed”)
  • 24. www.percona.com InnoDB enhancements Memcached API (avoid the SQL overhead) Details: ● You can code MySQL applications that access InnoDB tables through a NoSQL-style API ● This feature uses the popular memcached daemon to relay requests such as ADD, SET, and GET for key- value pairs. SQL and NoSQL can co-exist Links: http://www.mysqlperformanceblog.com/2013/03/29/mysql-5-6-innodb-memcached-plugin-as-a-caching-layer/ (!) https://blogs.oracle.com/mysqlinnodb/entry/new_enhancements_for_innodb_memcached - from the original authors... (!) https://blogs.oracle.com/MySQL/entry/nosql_memcached_api_for_mysql - on API and implementation detaIs, from original authors (!) http://dom.as/2013/04/16/the-saddest-bug-of-them-all-sql-is-dead/ - what kinds of problems this solves? Bugs: Bug #68530 - still “Open”, “5.6 memory leak with innodb memcached plugin” Bug #67026 - FR for “CSV output format”, still “Open” Bug #68974 - still "Open". "NOT NULL columns prevent Memcached plugin from writing new records"
  • 25. www.percona.com InnoDB enhancements Persistent optimizer statistics for InnoDB tables Details: ● Optimizer statistics for InnoDB tables are gathered at more predictable intervals and can persist across server restarts ● You can also control the amount of sampling done for InnoDB indexes Links: (!) https://blogs.oracle.com/mysqlinnodb/entry/innodb_persistent_statistics_at_last - original announcement Bugs: Bug #67638 - still “Verified”: “optimizer bugs must be handled with greater care in 5.6+ - one has to make sure the table he's using already has got decent index statistics” Bug #68629 - documentation was incorrect originally Bug #68163 - one more “noisy” case, fixed in 5.6.11 Bug #43968 - one of the problems this new feature solves
  • 26. www.percona.com InnoDB enhancements Optimizations for read-only transactions Details: ● These optimizations are applied automatically when practical, or ● You can specify START TRANSACTION READ ONLY to ensure the transaction is read-only. Links: (!) http://dimitrik.free.fr/blog/archives/2012/07/mysql-performance-readonly-adventure-in-mysql-56.html (!) https://blogs.oracle.com/mysqlinnodb/entry/repeatable_read_isolation_level_in - internals and 5.6 read only optimizations described in details (!) http://dimitrik.free.fr/blog/archives/2012/11/mysql-performance-innodb-vs-myisam-in-56.html - check section on OLTP Read-Only benchmarks InnoDB vs MyISAM Bugs: Bug #66587 - read only transactions are still visible in INNODB STATUS it seems (to the contrary of documentation claims) Bug #49169 - see last comments, interesting related reading (on how Oracle is approaching problems and reports/followup questions from Percona)
  • 27. www.percona.com InnoDB enhancements Separate tablespaces for UNDO logs Details: ● You can move the InnoDB undo log out of the system tablespace into one or more separate tablespaces Links: (?) http://serge.frezefond.com/2013/03/mysql-5-6-innodb_undo_tablespaces-very-usefull-only-if/ (!) https://blogs.oracle.com/mysqlenterprisebackup/entry/mysql_enterprise_backup_3_8 - use proper MEB version (xtrabackup 2.0.6 does NOT support this feature yet) (!) http://www.fromdual.com/shrinking-innodb-system-tablespace-file-ibdata1-poc - one of that hacks people had to use before 5.6 to decrease ibdata* size (?) http://www.mysqlperformanceblog.com/2010/06/10/reasons-for-run-away-main-innodb-tablespace/ - UNDO in main tablespace had been a problem for a decade... (!) http://blog.jcole.us/2013/01/03/the-basics-of-innodb-space-file-layout/ - check ibdata1 file overview (must read, entire series, in any case) Bugs: Bug #68915 - you have to follow procedures that are not entirely clearly documented Bug #67528 - one of the problems that is (hopefully) fixed with this feature
  • 28. www.percona.com InnoDB enhancements Improvements for REDO logs handling Details: ● The InnoDB redo log files now have a maximum combined size of 512GB, increased from 4GB. ● The startup behavior now automatically handles the situation where the size of the existing redo log files does not match the size specified by innodb_log_file_size and innodb_log_files_in_group Links: (!) http://mysql.wisborg.dk/2013/02/24/changing-the-size-of-the-innodb-log-files-in-mysql-5-6/ (!) http://www.mysqlperformanceblog.com/2011/02/03/how-innodb-handles-redo-logging/ - background theory (!) http://www.mysqlperformanceblog.com/2011/09/18/disaster-mysql-5-5-flushing/ - discussion (in comments) why and when bigger redo may be useful http://www.mysqlperformanceblog.com/2012/02/17/the-relationship-between-innodb-log-checkpointing-and- dirty-buffer-pool-pages/ - some more related background theory (!) http://www.percona.com/doc/percona-server/5.5/scalability/innodb_io_55.html#innodb_log_file_size - bigger logs on 64-bit systems are available for a long time already in Percona Server Bugs: Bug #58779 - one of original FRs + explanation why limit is 512G (not 4T as initially advertised)
  • 29. www.percona.com InnoDB enhancements Internal performance enhancements Details: ● reducing contention by splitting the kernel mutex ● moving flushing operations from the main thread to a separate thread ● enabling multiple purge threads ● reducing contention for the buffer pool on large-memory systems Links: (!) http://dev.mysql.com/doc/refman/5.6/en/innodb-performance.html - manual page with more links (!) https://blogs.oracle.com/MySQL/entry/mysql_5_6_is_a - all official Ads/marketing on one page, thanks to Rob (?!) http://dimitrik.free.fr/blog/archives/2012/10/mysql-performance-innodb-buffer-pool-instances-in-56.html - one of early performance studies (!) https://blogs.oracle.com/mysqlinnodb/entry/mysql_5_6_multi_threaded - on multiple purge threads (!) https://blogs.oracle.com/mysqlinnodb/entry/mysql_5_6_innodb_scalability - on kernel mutex
  • 30. www.percona.com InnoDB enhancements Internal performance enhancements Details: ● Famous brainstorm meeting in Paris, May 2012 ● Famous "G5" fix (it was decided to NOT backport it to 5.5.x) for systems with multiple CPU sockets Links: (!) http://mikaelronstrom.blogspot.com/2012/10/scalability-improvements-in-mysql-56.html - interesting reading, mentions “G5”, split of kernel mutex, split of LOCK_open mutex and more (!) https://blogs.oracle.com/mysqlinnodb/entry/introducing_page_cleaner_thread_in - on new page cleaner/separate flush thread http://www.pythian.com/blog/some-fun-around-mysql-history-list/ - for historical interest Bugs: Bug #63196 - one of the problems that multiple purge threads code in 5.6 solved Bug #49169 - interesting comments on what else was (and was NOT) fixed in the process of splitting kernel mutex Bug #54982 - interesting discussion on one use case of kernel mutex Bug #68555 - something still to fix
  • 31. www.percona.com InnoDB enhancements Deadlocks detection Details: ● InnoDB uses a new, faster algorithm to detect deadlocks. ● Information about all InnoDB deadlocks can be written to the MySQL server error log Links: (!) http://www.mysqlperformanceblog.com/2012/09/19/logging-deadlocks-errors/ - solution for previous versions (pt-deadlock-logger) (!) http://ebergen.net/wordpress/2009/08/27/|InnoDB|-deadlock-count-patch/ - previous solution to at least count deadlocks Bugs: Bug #1784 - original FR asking for logging all deadlocks Bug #50413 - just a useful reading related to deadlocks Bug #49047 - old story...
  • 32. www.percona.com Partitioning enhancements Details: ● The maximum number of partitions is increased to 8192 ● ALTER TABLE ... EXCHANGE PARTITION statement ● SELECT * FROM t PARTITION (p0, p1) ... - (sub)partition selection for DML, including LOAD... ● Partition lock pruning Links: (!) http://mikaelronstrom.blogspot.com/2012/10/my-personal-list-of-new-features-in.html - early post (?) http://dev.mysql.com/doc/refman/5.6/en/partitioning-limitations.html - there are still many limitations (?) http://www.mysqlperformanceblog.com/2010/12/11/mysql-partitioning-can-save-you-or-kill-you/ - partitioning is not a silver bullet Bugs: Bug #67982 - regression vs 5.1, probably still not fixed in 5.5.x and 5.6.x. “Got error 124 from storage engine on DELETE from a partitioned table” Bug #65112 - old known problem that seems not solved in 5.6.x Bug #37252 - original bug related to locking that is now fixed Bug #63083 - one of limitations that are still there
  • 33. www.percona.com PERFORMANCE_SCHEMA Several new features Details: ● Instrumentation for table input and output ● Event filtering by table, based on schema and/or table names ● Event filtering by thread. More information is collected for threads ● Summary tables for table and index I/O, and for table locks ● Instrumentation for statements and stages within statements ● Configuration of instruments and consumers at server startup (not only at runtime) Links: (!) http://marcalff.blogspot.com/2013/04/on-configuring-performance-schema.html - recent article from Mark Alff on how to configure P_S (!) http://dev.mysql.com/doc/refman/5.6/en/performance-schema-configuration.html - RTFM https://www.facebook.com/notes/mysql-at-facebook/my-mysql-is-faster-than-your- mysql/10151250402570933 - influence of P_S in 5.6.10 and... 5.1.63 or 5.1.52+FB patch are still fastest in too many cases (?) http://www.mysqlperformanceblog.com/2013/02/18/is-mysql-5-6-slower-than-mysql-5-5/ - Pecona’s experience with P_S performance impact
  • 34. www.percona.com PERFORMANCE_SCHEMA Links: (!) http://dimitrik.free.fr/blog/archives/2012/06/mysql-performance-pfs-overhead-in-56.html - Oracle’s experience with P_S performance impact http://www.percona.com/webinars/using-mysql-56-performance-schema-troubleshoot-typical-workload- bottlenecks - upcoming Webinar (May 15, 2013) (!) http://mysqlintheenterprise.com/2013/03/21/a-visual-guide-to-the-mysql-performance-schema/ - some kind of a beginner’s guide (!) http://mysql.wisborg.dk/category/mysql/performance_schema/ - useful posts from Jesper on the topic (!) http://marcalff.blogspot.com/2011/04/performance-schema-faq-1-enable-without.html - one of early blog posts about differences vs 5.5 (!) http://www.markleith.co.uk/2012/07/13/monitoring-processes-with-performance-schema-in-mysql-5-6/ - blog post (based on design now a bit outdated) from one of original authors and design decision makers (!?#) http://mysqlentomologist.blogspot.com/2013/01/how-to-use-performanceschema-to-check.html - my own configuration experience http://www.mysqlperformanceblog.com/2011/12/02/three-ways-that-the-poor-mans-profiler-can-hurt-mysql/ - P_S or PMP? - How to get any information about MDL locks for PERFORMANCE_SCHEMA?
  • 35. www.percona.com PERFORMANCE_SCHEMA Bugs: Bug #68413 - Facebook: “performance_schema overhead is at least 10%” Bug #68097 - still some details to document in the manual Bug #68574 - “No instrumentation for InnoDB files in P_S on windows” Bug #68514 - beware of memory usage impact with P_S Bug #67736 - useful reading about pre-5.6.10 experience with P_S (CPU impact) Bug #68785 - new features work well together (or not)... Bug #66589 - still not fixed (do not use mysqlhotcopy) Bug #64941 - one of the problems that MySQL 5.6 fixed
  • 36. www.percona.com Replication and logging Several replication enhancements were added Details: ● Transaction-based replication using global transaction identifiers (also known as “GTIDs”) ● --gtid-mode and --enforce-gtid-consistency ● GTID-based replication is completely transaction-based Links: http://www.mysqlperformanceblog.com/2013/02/08/how-to-createrestore-a-slave-using-gtid-replication- in-mysql-5-6/ - GTID changes well known procedures for DBA (?!) http://www.mysqlperformanceblog.com/2013/03/26/repair-mysql-5-6-gtid-replication-by-injecting-empty- transactions/ - what to do instead of SLAVE_SQL_SKIP_COUNTER=n... (!) http://www.percona.com/resources/technical-presentations/mysql-56-gtid-nutshell-percona-live- university-toronto - more from Miguel on the topic (!) http://svenmysql.blogspot.com/2012/10/failover-and-flexible-replication.html - one of early posts explaining ideas and goals of GTID-based replication (!)
  • 37. www.percona.com Replication and logging Global transaction IDs Links: (!) http://svenmysql.blogspot.com/2012/10/advanced-use-of-global-transaction.html - one of early tutorials (!) https://blogs.oracle.com/MySQL/entry/deep_dive_into_gtids_and (?!) http://datacharmer.blogspot.com/2013/01/easily-testing-mysql-56-gtid-in-sandbox.html - early testing results from Giuseppe (?!) https://lists.launchpad.net/maria-developers/msg04837.html - early discussion of Oracle’s implementation (?) http://kristiannielsen.livejournal.com/17008.html - MariaDB’s implementation and views (!?) http://datacharmer.blogspot.com/2013/02/parallel-replication-and-gtid-tale-of.html - replication features working together... (!) https://twitter.com/jswanhart/status/296250444345380865 - even twit on the topic may be usefull (extra 44 bytes per transaction) (!) http://drcharlesbell.blogspot.com/2012/04/mysql-utilities-and-global-transaction.html - new MySQL Utilities to use with GTID-based replication (?!) http://code.openark.org/blog/mysql/thoughts-on-mysql-5-6-new-replication-features - early experience
  • 38. www.percona.com Replication and logging - GTIDs Bugs: Bug #68566 - “mysqlbinlog should be more friendly with GTID” Bug #68525 - problem when enforce-gtid-consistency is used Bug #68386 - fixed in 5.6.11, 5.6.10 was hardly usable at scale because of this bug Bug #68638 - “read_gtids_from_binlog improperly calls my_error with ER_MASTER_FATAL_ERROR_READ” (minor, but still...) Bug #68598 - "CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE statements are not supported inside transactions when using GTIDs", limitation that should be properly documented now Bug #68589 - documentation fixed months after GA Bug #65189 - customer asked to NOT make some of gtid_* server variables, but who cared... Bug #68314 - mysqldump from 5.6 demands GTIDs even for pre-5.6 versions :) Bug #68038 - mysqldump-related, fixed in 5.6.11 Bug #67507 - probably same as above, but still “Verified” Bug #67099 - FR, “In many environments the slave is NEVER expected to be promoted to a master so there is no need to enable binlogging.”... Bug #60964 - mysqlbinlog might print "### Row event for unknown table" even though transactions succeeded on both master and slave. “Not a bug” (check comments) Bug #68967 - about server_id_bits. Is it related? Who knows, it’s not documented...
  • 39. www.percona.com Replication and logging Row image control Details: ● Logging only columns required for uniquely identifying and executing changes on each row - to save disk space, network resources, and memory usage ● binlog_row_image server system variable: minimal (log required columns only), full (log all columns), or noblob Links: http://binlogtorelaylog.blogspot.com/2012/10/sneak-peek-inside-mysql-56-RBR.html - early description Bugs: Bug #68767 - still “Open”, but beware of binlog_row_image set to minimal if MERGE tables are used Bug #65116 - not all old known RBR problems are solved. “REPLACE INTO does not update auto increment when replicated row based” Bug #68607 - one more RBR problem to solve... “REPLACE statement not properly logged in binary log in RBR” Bug #68953 - “Binlog write errors silently ignored”. “Verified”. Bug #66363 - “Large transaction writing rbr with sync_binlog hangs entire server on fsync” (still “Verified”) Bug #67942 - regression in 5.5 and 5.6. “CREATE TABLE is not written in binary log if connection is killed...”
  • 40. www.percona.com Replication and logging Crash safe binary logs Details: ● Only complete events are logged or read back ● Server logs the length of the event and uses this information to verify that the event was written correctly ● Server can also write checksums for the events using CRC32, see binlog_checksum system variable ● To cause the server to read checksums from the binary log, use the master_verify_checksum ● The --slave-sql-verify-checksum system variable causes the slave SQL thread to read checksums Links: (?) http://www.mysqlperformanceblog.com/2013/02/15/replication-checksums-in-mysql-5-6/ - Percona’s experience (!) http://www.percona.com/doc/percona-server/5.5/reliability/crash_resistant_replication.html - Percona’s way to do crash resistant replication (?) https://kb.askmonty.org/en/binlog-event-checksum-interoperability/ - on binlog checksums and versions interoperability Bugs: Bug #68892 - bad GRANT can break replication (not directly related) Bug #68281 - “Not a bug”, but still useful reading. “sync_master_info=1 kills slave MTS concurrency”
  • 41. www.percona.com Replication and logging --master-info-repository and --relay-log-info-repository Details: ● Connection information can be logged into InnoDB tables ● To guarantee crash safety on the slave, run the slave with the --relay-log-recovery option enabled Links: (?) http://datacharmer.blogspot.com/2012/08/mysql-56-replication-gotchas-and-bugs.html - some consequences, may be unexpected... (?) http://www.skysql.com/blogs/kolbe/mysql-56-master-info-repository-documentation-behavior-and-reality - Kolbe’s (SkySQL) comments (?#) http://www.skysql.com/blogs/kolbe/mysql-56-security-through-complacency - some more from him Bugs: Bug #68460 - “blocked with FLUSH TABLES WITH READ LOCK + SHOW SLAVE STATUS” Bug #68604 - “MySQL crashes trying to start slave” (after loading slave_master_info from another instance) Bug #68605 - “START SLAVE after import of table-based repositories gives empty error message” Bug #68599 - “Warning issued about master.info when using master-info-repository=table” (minor, but still...)
  • 42. www.percona.com Replication and logging New features of mysqlbinlog Details: ● mysqlbinlog now has the capability to back up a binary log in its original binary format ● When invoked with the --read-from-remote-server and --raw options, mysqlbinlog connects to a server, requests the log files, and writes output files in the same format as the originals Links: (!) http://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog-server-id.html - more details from the manual (!) http://www.mysqlperformanceblog.com/2012/01/18/backing-up-binary-log-files-with-mysqlbinlog/ - Percona’s early review Bugs: Bug #68347 - genuine bug with -R option: “mysqlbinlog does not reset the "at" byte position counter with ROTATE_EVENT” Bug #67643 - mysqlbinlog version increase, fixed only in 5.6.11 Bug #68566 - mysqlbinlog and GTID related FR Bug #68547 - “Open”, related FR: “Remote Binlog Back-up should save binlog file along with position no.”
  • 43. www.percona.com Replication and logging Multi-threaded slave (MTS) Details: ● N slave worker threads as determined by the value of the slave_parallel_workers server system variable ● Slave assumes that data and updates are partitioned on a per-database basis ● It is not necessary to coordinate transactions between different databases, but order can be different... Links: (!) https://blogs.oracle.com/MySQL/entry/benchmarking_mysql_replication_with_multi - Oracle’s benchmarks (!) http://andreithedolphin.blogspot.com/2012/10/parallel-slave-in-mysql-replication.html - early high level architecture review and benhcmarks from one of the the authors (Andrei Elkin) http://scriptingmysql.wordpress.com/2013/01/07/mysql-replication-multi-threaded-slaves-parallel-event- execution/ - some useful speculations (?!) http://dom.as/2011/12/03/replication-prefetching/ - useful related reading (attempts to speed up single threaded replication) Bugs: Bug #68506 - “Got SIGSEGV on MTS recovery + SQL thread error” Bug #68465 - “Make slave_transaction_retries work with MTS” Bug #68281 - beware of sync_master_info=1 when using MTS (“Not a Bug”, but still)
  • 44. www.percona.com Replication and logging Binlog group commit is finally implemented Links: (!) http://dimitrik.free.fr/blog/archives/2012/06/mysql-performance-binlog-group-commit-in-56.html (!) http://www.percona.com/doc/percona-server/5.5/performance/binary_group_commit.html - exists for a long time in Percona Server (!?) http://kristiannielsen.livejournal.com/16382.html - MariaDB’s work (!) http://www.mysqlperformanceblog.com/2011/07/13/testing-the-group-commit-fix/ - benchmarking Percona’s version (!) http://dev.mysql.com/worklog/task/?id=5223 - original Oracle’s WL Bugs: Bug #68569 - deadlock with group commit Bug #49326 - original FR Bug #68250 - “Current semi-synchronous replication may cause deadlock”. Status is unclear, but there are claims that 5.6 is even more likely to be affected because of binlog group commit. Bug #68251 - “3-way deadlock on semisync replication and binlog rotate”. Reported on 5.6.9, still “Verified”. Bug #67929 - “Race in bin log dump thread results in slave missing events”. Not related to group commit, but note that only 5.6.11 will have the fix.
  • 45. www.percona.com Optimizer enhancements Disk-Sweep Multi-Range Read (MRR) Details: ● With MRR optimization, MySQL tries to reduce the number of random disk access for range scans by first scanning the index only and collecting the keys for the relevant rows. Then the keys are sorted and finally the rows are retrieved from the base table using the order of the primary key Links: (!) https://kb.askmonty.org/en/multi-range-read-optimization/ - MRR theory from MariaDB (!) http://www.mysqlperformanceblog.com/2012/03/21/multi-range-read-mrr-in-mysql-5-6-and-mariadb-5-5/ - MRR explanation from Percona (Ovais) Bugs: Bug #68919 - regression vs 5.5.x because of MRR (good it can be switched off) Bug #62676 - documentation is still not perfect... Bug #60864 - one more case Bug #68977 - one more documentation problem (MRR decision is cost-based by default actually)
  • 46. www.percona.com Optimizer enhancements Index Condition Pushdown (ICP) Details: ● If parts of the WHERE condition can be evaluated by using only fields from the index, the MySQL server pushes this part of the WHERE condition down to the storage engine... ● ICP can reduce the number of accesses the storage engine has to do against the base table and the number of accesses the MySQL server has to do against the storage engine Links: http://www.mysqlperformanceblog.com/2012/03/12/index-condition-pushdown-in-mysql-5-6-and-mariadb-5-5- and-its-performance-impact/ - Percona’s view http://www.mysqlperformanceblog.com/2013/03/14/mysql-5-6-10-optimizer-limitations-index-condition- pushdown/ - ICP limitations (?) http://olavsandstaa.blogspot.com/2011/04/mysql-56-index-condition-pushdown.html - early review from Oracle side (!) Bugs: Bug #68554 - “Optimizer wrongly choses covering index over ICP” Bug #68154 - “explain output 'Using index condition' not proper”
  • 47. www.percona.com Optimizer enhancements EXPLAIN for DML statements + JSON output format Details: ● The EXPLAIN statement now provides execution plan information for DELETE, INSERT, REPLACE, and UPDATE statements ● In addition, the EXPLAIN statement now can produce output in JSON format Links: (?#) http://s.petrunia.net/blog/?p=75 - Sergey Petrunia’s review of the feature Bugs: Bug #67638 - “Odd optimizer choice for UPDATE .. ORDER BY ... LIMIT query” Bug #68299 - “unexpected "Using where" in "explain update/delete"”
  • 48. www.percona.com Optimizer enhancements Subqueries optimizations Details: ● Materialization of subqueries in the FROM clause is postponed until their contents are needed ● Optimizer may add an index to a derived table to speed up row retrieval from it ● Optimizer uses semi-join and materialization strategies Links: (!) http://igors-notes.blogspot.com/2012/10/once-more-about-comparison-of-subquery.html - not invented by Oracle (from Igor Babaev) (!) http://igors-notes.blogspot.com/2012/02/comparing-optimizer-features-of-mariadb.html - more about history from Igor (?) http://s.petrunia.net/blog/?p=78 - “No, Sheeri, MySQL 5.6 does not optimize subqueries away” (!) http://s.petrunia.net/blog/?p=73 - More on cost-based choice between subquery Materialization and IN- >EXISTS Bugs: Bug #68254 - still “Open”, “subquery optimize to wrong semi-join with extensions syntax to group by”
  • 49. www.percona.com Optimizer enhancements Batched Key Access (BKA) Details: ● BKA join algorithm is now available that uses both index access to the joined table and a join buffer ● BKA algorithm supports inner join, outer join, and semi-join operations, including nested... ● Improved join performance due to more efficient table scanning Links: (!) http://jorgenloland.blogspot.com/2012/12/favorite-mysql-56-features-optimizer.html - general review of optimizer improvements (!) http://www.mysqlperformanceblog.com/2012/04/04/join-optimizations-in-mysql-5-6-and-mariadb-5-5/ - Percona’s review (by Ovais) (!) http://oysteing.blogspot.com/2011/10/bacthed-key-access-speeds-up-disk-bound.html - one of earlier posts http://www.mysqlperformanceblog.com/2012/05/31/a-case-for-mariadbs-hash-joins/ - interesting benhcmark http://s.petrunia.net/blog/?p=49 - MySQL 6.0 news: Batched Key Access is in (history of this feature) Bugs: Bug #68899 - “dynamic range” access path is not cost-based (beware of big join_buffer_size)
  • 50. www.percona.com Optimizer enhancements Optimizer tracing Details: ● The optimizer now has a tracing capability, primarily for use by developers ● A set of optimizer_trace_xxx system variables ● The INFORMATION_SCHEMA.OPTIMIZER_TRACE table Links: (!) http://guilhembichot.blogspot.com/2011/09/optimizer-tracing-how-to-configure-it.html - early post about the feature from one of authors http://dimitrik.free.fr/blog/archives/2012/01/mysql-performance-overhead-of-optimizer-tracing-in-mysql-56.html (!) http://opensourcedba.wordpress.com/2012/01/05/optimizer-tracing/ - some more links there https://blogs.oracle.com/svetasmirnova/entry/my_18_mysql_5_6 - Sveta likes it :) (!) http://jorgenloland.blogspot.com/2011/10/optimizer-tracing-query-execution-plan.html - what it is and what it is NOT A Look Under the Hood of CBO: The 10053 Event - that's what I'd like to see instead Bugs: Bug #33486 - original FR
  • 52. www.percona.com State of optimizer in MySQL 5.6 Old and new Optimizer bugs Links: (?) http://www.mysqlperformanceblog.com/2009/09/20/guidance-for-mysql-optimizer-developers/ - wishlist from PZ :) (?) http://www.mysqlperformanceblog.com/2013/03/11/mysql-5-6-vs-5-5-on-the-star-schema-benchmark/ - is it optimizer that matters most? Interesting case of 5.5.30 vs 5.6.10 studied in details Bugs: Bug #54808 - “Optimizer use REF joins where it should use EQ_REF”, still “Verified” Bug #58604 - “crash in cleanup code of explain partitions after killing connection”, still “Verified”, 5.6.1 was listed among versions affected Bug #59187 - “Wrong result with NULL NOT IN subquery”, still “Verified”, 5.6.2 was listed as affected Bug #62504 - “select count(distinct N1), count(distinct N2) from test.AA works incorrectly”, 5.6.10 is also affected Bug #65957 - “Poor correlated subquery performance with order by and limit”, regression comparing to 5.0.x. 5.6.6 was affected Bug #67815 - “MySQL consistently uses a low cardinality non-referenced column in a index scan” Bug #68350 - “query proc - re-execute of stored routine, inefficient query plan”
  • 53. www.percona.com State of optimizer in MySQL 5.6 Generic optimizer bugs in 5.6.x not listed above Bug #68656 - “ORDER BY ignored in some situations for UPDATE query”. Regression since 5.5.6(!) Bug #68825 - extra optimizer overhead in 5.6 is like 1% Bug #68713 - memory left uninitialized in one case... Bug #68871 - minor, but still... Bug #68749 - basic case of wrong results in 5.5 and 5.6 (“Basic SELECT count(distinct id) is broken.”). Let’s question QA? Bug #68046 - one of the ways 5.6.10 was badly broken: “IN() clause with many constant values does not perform”. Regression in 5.6.6+, fixed in 5.6.11. Bug #69005 - wrong results with Order by lower(column) (regression vs 5.5) Bug #68897 - wrong results in 5.6.10 (regression vs 5.0.x)
  • 54. www.percona.com Conditions handling in SPs MySQL now supports the GET DIAGNOSTICS, and more... Details: ● Block scope is used in determining which handler to select ● Condition precedence is more accurately resolved ● Bug #55843 fixed (diagnostics area clearing has changed) ● Now the handler for the condition with highest precedence is chosen, even if it is not the first condition raised by the statement Links: (!) http://marcalff.blogspot.com/2011/10/mysql-get-diagnostics.html - early post about the feature (!) http://code.openark.org/blog/mysql/mysql-error-handling-on-server-side-a-no-go - problem that is now solved (!) Bug #61392 - one of the problems solved, “The RETURN statement did not clear the diagnostics area as it should have. Now the diagnostics area is cleared before executing RETURN.” Bugs: Bug #11660 - original FR, implemented Bug #38806 - original problem, “Wrong scope for SQL HANDLERS in SP”, solved Bug #68831 - does not work as expected sometimes, “HANDLER FOR SQLEXCEPTION not catching Error 1452 (FK constraint) for UPDATE”
  • 55. www.percona.com Data types Several data type changes have been implemented Details: ● MySQL now permits fractional seconds (6 digits) for TIME, DATETIME, and TIMESTAMP values ● DEFAULT CURRENT_TIMESTAMP and ON UPDATE CURRENT_TIMESTAMP clauses - for any TIMESTAMP and DATETIME columns ● explicit_defaults_for_timestamp system variable ● YEAR(2) columns in existing tables are treated as before, but YEAR(2) in new or altered tables are converted to YEAR(4) Bugs: Bug #68864 - “INTERVAL treats null values of text columns as float/int”. Not new in 5.6. Bug #68760 - “Datetime rounding problem”, looks like regression vs 5.5.30 Bug #68759 - “Inconsistent results on comparison a time field with a non-time literal”, looks like regression vs 5.5.31 Bug #68577 - “Incorrect enum values returned when using UNION after CREATE AS SELECT”. Not new... Bug #68192 - “Limitation on DOUBLE or REAL length is ignored with INSERT .. SELECT”. Not new in 5.6 Bug #68062 - “TIME_TO_SEC() doesn't support fractional seconds”. Reported against 5.6.8 and still NOT fixed.
  • 57. www.percona.com Features without serious problems ● InnoDB support for read only media (Bug #67600 - you should not miss innodb_read_only option or server will crash...) ● New InnoDB-related I_S tables: INNODB_SYS_*, INNODB_BUFFER_* (also in 5.5.28+), INNODB_FT_*, INNODB_METRICS (209 counters as of 5.6.10) ● InnoDB data dictionary size control (table_definition_cache) ● Preloading the InnoDB buffer pool ● Delayed replication (MASTER_DELAY vs pt-slave-delay) and other small replication improvements ● SELECT ... FROM single_table ... ORDER BY non_index_column [DESC] LIMIT [M,]N ● Host cache: new Connection_errors_xxx status variables, host_cache_size variable, P_S.host_cache table ● Improved OpenGIS support (Bug #68091 - “ST_Overlaps and ST_Intersects give erroneous results”, still a bug even in 5.6.11)
  • 58. www.percona.com Thank you! Questions and Answers Please, report bugs to: http://bugs.mysql.com