MariaDB and MySQL link collection
/ home / computer / mariadb and mysql / .
General
Strategy
- Evan Klitzke, Uber, 2016-07-26: Why Uber Engineering Switched from Postgres to MySQL
- Peter Zaitsev, Percona, 2024-10-23: Open Source and Flawed Foundations
- Peter Zaitsev, Percona, 2024-10-28: Abandonware in Popular Open Source Databases
- wangbin579, advancedmysql: The Art of Problem Solving in Software Engineering - How to Make MySQL Better, on Github, on X/Twitter
- Max Mether, MariaDB plc. 2025-02-13: Announcing Yearly LTS Releases for MariaDB Community Server
- Liu Tang, TiDB, 2025-10-19: Ten Years, Starting Again: My Journey with TiDB
Internals
- Libing Song, Alibaba Cloud, 2024-04-24: Binlog Commit Optimization For Large Transaction
- Jake Edge, LWN.net, 2024-05-24: Atomic writes without tears
- Laurynas Biveinis, 2024-11-08: Storing the MySQL Data Dictionary in a 3rd-Party Storage Engine
- Yunus Uyanik, Percona, 2024-12-12: MySQL with Diagrams Part One: Replication Architecture
- Ke Yu, ApsaraDB (Alibaba), 2025-01-07: An Introduction to MySQL Parallel Query and DDL
- Yunus Uyanik, Percona, 2025-01-07: MySQL with Diagrams Part Two: How KILL Works
- Libing Song, Alibaba Cloud: 2025-04-24: Rollback Prepared Transactions Asynchronously During Binlog Crash Recovery
- Yunus Uyanik, Percona, 2025-09-17: MySQL with Diagrams Part Three: The Life Story of the Writing Process
InnoDB Internals
InnoDB Overview
InnoDB Memory Management
- Baron Schwartz, 2011-01-29: How InnoDB performs a checkpoint
- Alexey Stroganov, Percona, 2013-10-30: InnoDB adaptive flushing in MySQL 5.6: checkpoint age and io capacity
- Jean-François Gagné, Booking.com, 2015-08-29: Unexpected Memory Consumption for Bulk Index Creation in InnoDB (MySQL)
- Marco Tusa, 2017-04-10: InnoDB Page Merging and Page Splitting
- Yves Trudeau and Francisco Bordenave, Percona, 2019-12-18: Give Love to Your SSDs – Reduce innodb_io_capacity_max!
- Vadim Tkachenko, Percona, 2020-08-13: How Many innodb_buffer_pool_instances Do You Need in MySQL 8?
- ApsaraDB, 2024-04-01: MySQL Memory Allocation and Management (Part I)
- ApsaraDB, 2024-04-01: MySQL Memory Allocation and Management (Part II)
- ApsaraDB: 2024-04-02: MySQL Memory Allocation and Management (Part III)
- Benjamin Dicken, PlanetScale, 2024-04-24: PlanetScale: The MySQL adaptive hash index
InnoDB, AHI
https://blog.jcole.us/2012/04/16/a-brief-update-on-numa-and-mysql/
https://blog.jcole.us/2010/09/28/mysql-swap-insanity-and-the-numa-architecture/
InnoDB Tablespace Management
- Jeremy Cole: innodb_ruby: A parser for InnoDB file formats, in Ruby
- Jeremy Cole, 2013-01-03: The basics of InnoDB space file layout
- Miguel Angel Nieto, Percona, 2013-08-20: Why is the ibdata1 file continuously growing in MySQL?
- Frederic Descamps, 2019-10-22: MySQL & InnoDB Disk Space
- Mayank Prasad, Oracle/MySQL, MySQL Server Team, 2019-11-08: InnoDB : Tablespace Space Management
- Przemysław Malkowski, Percona, 2024-01-31: MySQL Table Size Is Way Bigger After Adding a Simple Index; Why?
- Jean-François Gagné, Aiven, 2024-09-03: Faster MySQL Startup with Many Tables (1M+)
- Chen Zongzhi, 2024-09-06: MySQL B-tree Height Issues in Large Single Tables
- Jean-François Gagné, Aiven, 2024-10-28: Impressed by Disabling InnoDB Redo Logging for Creating Tables as Fast as Possible
- Jean-François Gagné, Aiven, 2024-11-11: Long and Silent / Stressful MySQL Startup with Many Tables
- Jean-François Gagné, Aiven, 2024-11-19: Understanding InnoDB Tablespace Duplicate Check (MySQL Startup with Many Tables)
- Song Zhao, Alibaba: 2025-01-06: ibdNinja: A powerful tool for parsing and analyzing MySQL 8.0 (.ibd) data files
InnoDB Page Cleaner Thread
InnoDB technical internals
- Jeremy Cole, 2013-01-07: The physical structure of InnoDB index pages
- Jeremy Cole, 2013-01-10: B+Tree index structures in InnoDB
- Annamalai Gurusami, 2013-01-15: Repeatable Read Isolation Level in InnoDB - How Consistent Read View Works
from Wayback Machine
- Annamalai Gurusami, 2013-04-19: Data Organization in InnoDB
from Wayback Machine
- Peter Zaitsev, Pecona, 2015-01-14: MySQL performance implications of InnoDB isolation modes
- Dimitri Kravchuk, 2015-02-17: Impact of InnoDB Transaction Isolation Modes in MySQL 5.7
- Annamalai Gurusami, Oracle/MySQL: 2015-06-04: The InnoDB Change Buffer
- Satya Bodapati, Percona, 2019-05-08: MySQL InnoDB Sorted Index Builds
- Hercules Sakthi, 2020-04-09: MySQL 8 InnoDB flow Architecture with related variables
- Krunal Bauskar, MySQL On ARM, 2020-04-14: Understanding InnoDB rw-lock stats
- Mayank Prasad, 2023-03-09: MySQL 8.0 INSTANT ADD and DROP Column(s)
- Pep Pla, 2023-07-05: The Impacts of Fragmentation in MySQL
- Kristian Köhntopp, 2023-07-06: MySQL: InnoDB Fragmentation
- Frederic Descamps, 2024-03-19: MySQL InnoDB’s Instant Schema Changes: What DBAs Should Know
- Chen Zongzhi, 2024-06-09: InnoDB B-tree Latch Optimization History
- Daniel Guzman Burgos, ex-Percona, 2024-09-01: Contention in MySQL InnoDB. Useful info from the semaphores section
- Benjamin Dicken, Planetscale, 2024-09-09: B-trees and database indexes^
- Kedar, 2024-11-04: MySQL Change Buffer – What When and FAQ
- Vladislav Lesin, MariaDB plc, 2024-11-06: Isolation level violation testing and debugging in MariaDB
- Guoqing Ma (Yiyun), ApsaraDB / Alibaba, 2024-11-22: How Does MySQL Implement Concurrency Control? (Part I)
- Guoqing Ma (Yiyun), ApsaraDB / Alibaba, 2024-11-22: How Does MySQL Implement Concurrency Control? (Part II)
- Song Zhao, Alibaba: 2025-01-14: Dissecting an Extreme Sparse MySQL Table Using ibdNinja
- Song Zhao, Alibaba: 2025-02-28: Deep Dive into MySQL - Implicit Locks
- Song Zhao, Alibaba: 2025-04-27: How Many B+Tree Searches Are Hidden Inside a MySQL Insert?
- Jean-François Gagné, booking.com, 2025-04-28: Performance Regression in MySQL 8.0, Fixed in 8.4, Easy Workaround (innodb_doublewrite_pages)
- Song Zhao, Alibaba: 2025-06-05: A Potential Optimization for Inserting into MySQL Unique Indexes
- Pep Pla, Percona, 2025-07-03: A Tale of Two Databases: How PostgreSQL and MySQL Handle Torn Pages
InnoDB Transaction Log / REDO Log
- Peter Zaitsev, 2006-07-03: Choosing proper innodb_log_file_size
- Baron Schwartz, 2008-11-21: How to calculate a good InnoDB log file size
- Nickolay Ihalainen, 2013-09-11: How to move the InnoDB log sequence number (LSN) forward
- Vlad Lesin, 2014-03-28: Innodb redo log archiving
- Jeremy Cole, 2014-04-16: The basics of the InnoDB undo logging and history system
- Peter Zaitsev, 2014-12-24: InnoDB crash recovery speed in MySQL 5.6
- Baron Schwartz, 2015-07-20: What Is InnoDB History List Length?
- Vadim Tkachenko, 2016-05-31: What is a big innodb_log_file_size?
- Marko Mäkelä, 2017-11-17: Change the InnoDB redo log format to reduce write amplification
- ApsaraDB, 2022-06-01: An In-Depth Analysis of REDO Logs in InnoDB
- ApsaraDB, 2022-07-29: MySQL Deep Dive - Implementation and Acquisition Mechanism of Metadata Locking
- Vinicius Grippa, 2022-08-10: MySQL 8.0 Dynamic Redo Log Sizing
- Jean-François Gagné, 2022-11-30: Tail Latencies in Percona Server because of InnoDB Stalls on Empty Free List
- Chris Calender, 2023-03-25: Enabling the Verbose InnoDB Lock Monitor in MariaDB and Percona Server for XtraDB+ and XtraDB
- Arunjith Aravindan, 2023-08-07: Understanding the Differences Between InnoDB Undo Log and Redo Log
- Mark Callaghan, Small Datum LLC, 2024-01-03: innodb_log_writer_threads and the Insert Benchmark
- Vinicius Grippa, Percona, 2024-01-18: Syscalls Analysis in MySQL When Using innodb_flush_method and innodb_use_fdatasync
- Siddhant Sawant, Microsoft, 2025-01-29: Understanding and managing history list length in Azure Database for MySQL
- Sylvain Arbaudie, ArBauDie.IT, 2025-02-24: InnoDB deep dive : commit phase
Architecture / Design / Topologies / High availabilty
- Shlomi Noach, PlanetScale, 2024-08-29: Anatomy of a Throttler - part 1
Learn about some design considerations for implementing a database throttler.
- Anders Karlsson, MariaDB plc, 2024-10-03: Using MariaDB MaxScale for Schema Sharding With Galera
- Mikael Ronstrom, RonDB at Hopsworks AB, 2024-10-04: Early design choices for RonDB and InnoDB
- Song Zhao, Alibaba: 2024-10-04: Hack MySQL: Create an Extremely Sparse InnoDB Table (B+Tree)
- Shlomi Noach, PlanetScale, 2024-10-10: Anatomy of a Throttler - part 2
Design consideration for implementing a database throttler with a comparison of singular vs distributed throttler deployments.
- Daniel Nichter, 2024-10-20: Group Commit and Transaction Dependency Tracking - Towards Multi-threaded Replication
- Marko Mäkelä, MariaDB plc, 2024-10-24: Recent InnoDB Enhancements that Boost Performance in MariaDB Server
- Mark Callaghan, Small Datum LLC, 2024-10-29: Trying out Advanced MySQL
- Rob Schwyzer, MariaDB plc, 2024-12-04: Using Connector Failover for MariaDB MaxScale Resiliency
- Sergey Pronin, Percona, 2024-12-04: The Evolution of Stateful Applications in Kubernetes
- John Timmer, 2024-12-17: HA Galera Cluster with HAProxy and Keepalived: Simplifying the Setup
- Kumar Babu P G, Rohit Kapoor, Amazon/AWS, 2025-01-02: Querying and writing to MySQL and MariaDB from Amazon Aurora and Amazon RDS for PostgreSQL using the mysql_fdw extension, Part 2: Handling foreign objects
- ProxySQL, 2024-12-30: A Beginner’s Guide to Database Sharding: How to Scale Your Database Effectively
- Bryce Yu, WeScale, 2025-01-13: Scaling Database Connections
- Mike Frank, Oracle/MySQL, 2025-01-09: PCI DSS 4.0 Compliance and MySQL
- Benjamin Dicken, PlateScale, 2025-01-09: Database Sharding
- Anil Joshi, Percona, 2025-02-14: Orchestrator (for Managing MySQL) High Availability Using Raft
- Vicențiu Ciorbaru. MariaDB foundation, 2025-04-14: MariaDB Catalogs preview containers available
- Song Zhao, Alibaba: 2025-05-10: Reviewing the Internals of MariaDB’s Vector Index
- Song Zhao, Alibaba: 2025-05-26: Reviewing the Internals of MariaDB’s Vector Index 2
Replication and Binary Log
Important: MariaDB and MySQL replication have diverged much now!
- Mats Kindahl, 2012-06-05: Binary Log Group Commit in MySQL 5.6
- Preetam Jinka, 2017-01-04: Faster MySQL replication with group commit and delay
- Scott Noyes, 2017-07-11: On slave_parallel_workers and the logical clock
- Vitor Oliveira, Oracle/MySQL, 2015-10-27: Multi-threaded Replication Performance in MySQL 5.7
- Stephane Combaudon, Percona, 2016-02-10: Estimating potential for MySQL 5.7 parallel replication
- Jean-François Gagné, Booking.com Infrastructure, 2016-09-27: Evaluating MySQL Parallel Replication Part 4: More Benchmarks in Production
- Vitor Oliveira, Oracle/MySQL: 2017-04-24: Improving the Parallel Applier with Writeset-based Dependency Tracking
- Tibor Korocz, Percona, 2018-10-17: Can MySQL Parallel Replication Help My Slave?
- Yves Trudeau, Francisco Bordenave, Percona, 2022-03-24: A Dive Into MySQL Multi-Threaded Replication
- Przemysław Malkowski, Percona, 2022-05-26: Is MySQL Statement-Based / Mixed Replication Really Safe?
- Daniel Nichter, 2024-11-21: Replica Preserve Commit Order and Measuring Lag
- Kristian Nielsen, MariaDB Foundation, 2024-11-25: Talk: The implementation of MariaDB parallel replication
- Yunus Uyanik, Percona, 2024-12-12: MySQL with Diagrams Part One: Replication Architecture
- Daniel Nichter, 2024-12-28: Monitoring Multi-threaded Replication Lag With Performance Schema
- Marc Reilly, Amazon Aurora/MySQL AWS, 2025-04-28: (Yet another) blog on monitoring Multi-threaded replication in MySQL
- Jean-François Gagné, 2025-05-26: Interesting Binary Logging Optimization in MariaDB
- Jean-François Gagné, 2025-06-04: Interesting Troubleshooting of a MySQL Crash : filling then freeing the disk
- Marcelo Altmann, on Medium, 2025-05-13: A Brief History of MySQL Replication
- Brandon Nesterenko, MariaDB plc, 2025-06-18: A New, Consistent Way to Monitor Replication Lag in MariaDB Community Server 11.8 LTS Release
Operations
Upgrade
Here some ideas why you should carefully test also your minor upgrades:
Security
Migration
- Vadim Tkachenko, Percona, 2016-04-07: MySQL 5.7 sysbench OLTP read-only results: is MySQL 5.7 really faster?
- Daoke, Morningking, Alibaba Cloud, 2023-09-26: Code Explanation of MySQL 8.0.23 Hypergraph Join Optimizer
- Mark Callaghan, Small Datum LLC, 2024-10-06: How to run MySQL with text in huge pages
- Markus Winand, 2024-12-10: Automatic Rewrite of Date and Time Ranges
- Mark Callaghan, Small Datum LLC, 2025-01-12: Evaluating vector indexes in MariaDB and pgvector: part 1
- Benjamin Dicken, PlanetScale, 2025-13-03: IO devices and latency
- Mark Callaghan, Small Datum LLC, 2025-03-16: At what level of concurrency do MySQL 5.7 and 8.0 become faster than 5.6?
- Mydbops, 2025-03-25: MariaDB Memory Optimization
- Daniel Nichter, 2025-04-21: An Efficient Path to Learning MySQL Performance
- Vinicius Grippa, 2025-04-25: Benchmarking MySQL Server With mysqlslap: Estimating Capacity, Not Absolute Limits
- Federico Razzoli, Vettabase: 2025-06-05: Query Optimisation: Using indexes for WHERE with multiple conditions
- Frederic Descamps, Oracle, 2025-05-21: MySQL Hypergraph Optimizer
- Ajo Robert, Oracle, 2025-05-09: Improving Semi-join Performance in MySQL
- Jonathan Miller, Oracle/MySQL, 2025-10-05: Performance Framework Autobench3’s Profiler Runner – MySQL Benchmarking Series #5
- Mark Callaghan, 2025-10-20: Determine how much concurrency to use on a benchmark for small, medium and large servers
Training / Education
Development
- Brian Morrison II, PlanetScale, 2024-03-19: The Problem with Using a UUID Primary Key in MySQL
- Sylvain Arbaudie, ArBauDie.IT, 2025-01: Embrace simplicity
- MinervaDB, 2025-02: Writing User Defined Functions for MariaDB in Go
- Peter Gulutzan, Ocelot, 2025-03-27: MySQL and MariaDB client .so libraries on Linux
- Diego Dupin, MariaDB plc, 2025-06-17: Building AI Applications using frameworks with MariaDB Vector Store
- Anna Widenius, MariaDB foundation, 2025-07-04: Bringing Oracle’s Associative Arrays to MariaDB
- Federico Razzoli, Vettabase, 2025-07-06: To BLOB or not to BLOB? The image storage dilemma
- Elena Stepanova, MariaDB foundation, 2025-08-08: Do they even test this?!
- Mark Callaghan, Small Datum LLC, 2025-10-14: Is it time for TPC-BLOB?
Branches and Forks
PeterZ is getting an inventory of MySQL Forks. Here is his Spreadsheet
- MariaDB Community Server
- MariaDB Enterprise Server
- MySQL Community Server
- MySQL Enterprise Server
- MySQL Heatwave
- Codership MySQL Galera Cluster
- Percona Server
- Percona XtraDB Cluster
- Drizzel (discontinued)
- go-mysql-server
- Amazon RDS for MySQL
- Amazon Aurora for MySQL
- Alibaba: What is ApsaraDB RDS?, ApsaraDB RDS
- PolarDB (from Alibaba)?
- AliSQL
- PlanetScale MySQL Fork
- WeScale: WeSQL https://wesql.io/docs/architecture https://github.com/wesql/wesql
- PingCap: TiDB
- Microsoft Azure MySQL Fork
- Google Cloud Platform (GCP) MySQL Fork
- Huawei RDS for MySQL
- Huawei GaussDB for MySQL
- VillageSQL
- WebScaleSQL / Vitess
- Facebook MySQL Fork
- MySQL RP
- Enhanced MySQL
- GreatSQL
- ShannonBase
- Parallel Query for Percona Server for MySQL
- PulbDB
- MyDB