The basics of the InnoDB undo logging and history system
InnoDB implements multi-version concurrency control (MVCC), meaning that different users will see different versions of the data they are interacting with (sometimes called snapshots, which is a bit of...
View ArticleA little fun with InnoDB multi-versioning
Consider the following commands, executed in the MySQL CLI on a new connection with no special preparation (and pay special attention to the execution time): mysql> show create table t \G...
View ArticleInnoDB with reduced page sizes wastes up to 6% of disk space
In InnoDB bugs found during research on InnoDB data storage I mentioned MySQL Bug #67963 which was then titled “InnoDB wastes 62 out of every 16384 pages”. I said: InnoDB needs to occasionally allocate...
View ArticleThanks, Oracle for fixing MySQL Bug 69477
Just under a year ago, on June 14, 2013, I reported MySQL Bug 69477 (and MariaDB Bug MDEV-4662) titled “InnoDB: Use of large externally-stored fields makes crash recovery lose data”. The gist of this...
View ArticleStupid and dangerous: SET GLOBAL sql_log_bin
It’s been almost 4.5 years since, during some code refactoring, it was decided (or accidentally changed?) that sql_log_bin should become a GLOBAL variable as well as a SESSION one. Almost 2 years ago,...
View ArticleVisualizing the impact of ordered vs. random index insertion in InnoDB
[This post refers to innodb_ruby version 0.9.11 as of October 2, 2014.] Many DBAs know that building indexes in “random” order (or really any order that greatly differs from ordered by key) can be much...
View ArticleThanks, Oracle, for fixing the stupid and dangerous SET GLOBAL sql_log_bin!
As of MySQL 5.5.41, released on November 28 (last week), Oracle has fixed MySQL Bug 67433, which I filed on October 31, 2012 and wrote about 4 months ago in Stupid and dangerous: SET GLOBAL...
View ArticleReconsidering access paths for index ordering… a dangerous optimization… and...
MySQL has had an interesting optimization for years now1, which has popped up from time to time: in certain circumstances, it may choose to use an index that is index-wise less efficient, but provides...
View Article