I’ve written the following posts about InnoDB internals, structures, and behavior:
- On learning InnoDB: A journey to the core: An introduction to the innodb_ruby and innodb_diagrams projects.
- A quick introduction to innodb_ruby: How to set up innodb_ruby and a few demos of what it can do.
- The basics of InnoDB space file layout: How InnoDB structures its space files and the pages they contain.
- Page management in InnoDB space files: Structures related to management of file segments, extents, and pages within space files.
- Exploring InnoDB page management with innodb_ruby: Interactive exploration of the page management data structures from a real InnoDB space file.
- The physical structure of InnoDB index pages: A description of InnoDB’s index pages, where data is stored, and how records are placed in them.
- B+Tree index structures in InnoDB: A logical high-level exploration of InnoDB’s B+Tree indexes and their efficiency.
- The physical structure of records in InnoDB: A low-level illustration of InnoDB’s row storage formats.
- Efficiently traversing InnoDB B+Trees with the page directory: A deep examination of efficiency in traversing B+Trees in InnoDB.
- InnoDB bugs found during research on InnoDB data storage: An explanation about 7 different bugs found during the research for this work
- How does InnoDB behave without a Primary Key?: A short discussion about InnoDB’s implicit ROW_ID column which is used in tables without a suitable PRIMARY KEY.
- InnoDB Tidbit: The doublewrite buffer wastes 32 pages (512 KiB): How the file segment allocation used in InnoDB plus a bit of programming laziness caused 512 KiB to be wasted in every InnoDB system tablespace.
- The basics of the InnoDB undo logging and history system: A short introduction to multi-version concurrency control, undo logging, InnoDB’s history system, and how they are all related.
- A little fun with InnoDB multi-versioning: A fun and somewhat scary look at the “hidden” effects of multi-versioning and InnoDB’s history system.
- InnoDB with reduced page sizes wastes up to 6% of disk space: InnoDB’s required bookkeeping information for each extent wastes many pages, and it gets a lot worse with reduced (4k or 8k) page sizes.
- Visualizing the impact of ordered vs. random index insertion in InnoDB: Using the space-lsn-age-illustrate and space-extents-illustrate modes of innodb_space to visualize the efficiency of index builds.
InnoDB bugs found during research on InnoDB data storage – Jeremy Cole
InnoDB: A journey to the core: At the MySQL Conference – Jeremy Cole
InnoDB Tidbit: The doublewrite buffer wastes 32 pages (512 KiB) – Jeremy Cole
Engineer duo from Google, LinkedIn join again for InnoDB talks
innodb_flush_logs_on_trx_commit and Galera Cluster | Open Query blog
MySQL的InnoDB索引原理详解 – 码农网
MySQL学习 | zhaohui的小屋
MySQL InnoDB Update和Crash Recovery流程 | Codeba
推荐一些学习MySQL 进阶的书籍/资料 – Python量化投资
从MySQL InnoDB物理文件格式深入理解索引 | Neo的技术博客
Improve you chinese … | blog2Lau
一些学习MySQL 进阶的书籍/资料 – 鸿蒙
נושאים מתקדמים ב MySQL: חלק ג׳ – מנועי אחסון, ומבנה האינדקסים – בלוג ארכיטקטורת תוכנה
[翻译] 关于学习 InnoDB：InnoDB 核心之旅 –
[翻译] InnoDB 空间文件中的页面管理 –
[InnoDB]性别字段为什么不适合加索引 - 算法网
Is there a tuning parameter for MySQL that allows you to set an on-disk gap between non-sequential primary keys?
Comparing MySQL and Db2: Table and Index Structure – DataGeek.blog
Does mysql use B-tree,B+tree or both?
InnoDB引擎–存储结构与文件 – 源码巴士
【原理解析】MySQL的数据存在磁盘上到底长什么样 - 随风的博客