Omar shares how he got started with MySQL, his experience at the contributor summit, and his enthusiasm for replication performance, extensibility, and data interoperability.
The latest from the MySQL community
Ideas, releases, practical guides, and perspectives from the people building with MySQL.
In Part 1 we ran analytical reports in DuckDB on a DBTrail copy instead of on MySQL. This time I want to look at a different question: what if the application does not need to know the copy exists?
Most MySQL servers have a few queries that make someone wait. The monthly report that aggregates a whole table. Page 5,000 of a sorted list. The screen that reads years of history. MySQL is built for many small reads and writes, and these queries are a different kind of work.
So what happens to them with DBTrail next to the server? The same 14 reports ran for a day on a Percona Server for MySQL replica and on the copy of the same database that DBTrail keeps.
Short answer: twelve were faster on the copy, and the slowest went from 225 seconds to 7.94 seconds.
Not …
[Read more]In transactional database systems, the latency gap between memory access (tens to hundreds of nanoseconds) and persistent storage access (tens to hundreds of microseconds for local NVMe devices and milliseconds for remote cloud block storage such as Amazon EBS) spans multiple orders of magnitude. Once a workload exhausts available memory and begins interacting heavily with storage, query response times can deteriorate rapidly.
However, storage-related performance problems in MySQL are rarely solved by simply adding IOPS. In many production incidents, latency originates within the database engine itself:
- Redo-log checkpoint advancement falling behind incoming write velocity, forcing foreground transactions to participate in synchronous flushing activity ("sync flush").
- Doublewrite buffering increasing write amplification, contributing to storage-pressure events and …
A plugin started the fire, the M-ecosystem picked it up, the hyperscalers went native, and now the benchmark wars have begun.
Not long ago, if you asked about vector search in MySQL, you got
a polite smile and a link to pgvector. Even after MySQL 9 added a
VECTOR column type, the obvious next questions had
no answer. Where is the index? Where is the distance function?
For a while the honest answer was “use something else.”
This week the MySQL Contributor Summit (Nov 4–5, online) opened its technical program with vector search. The first discussion block, AI & Cloud, had four vector and AI proposals back to back from Oracle, Google, Percona and Intel. It was the clearest sign yet of how far vector search in MySQL has come.
Looking back, vector …
[Read more]This week, we're highlighting ProxySQL. As applications grow, so do the demands on MySQL. ProxySQL helps developers and DBAs manage database traffic through connection pooling, query routing, and load balancing, providing greater control over how applications connect to MySQL.
High-concurrency database workloads rarely fail because of simple CPU or disk capacity limits. Instead, performance collapses occur when transactions serialize on shared internal database resources: metadata locks, data dictionary latches, group communication certification queues, and network buffers.
When contention occurs, external monitoring dashboards often show deceptive metrics such as near-zero CPU and disk activity alongside a massive surge in active connections and application timeouts. MySQL exposes these internal contention points through Performance Schema wait events.
This article—the first in a four-part deep dive—covers the foundational mechanics of Performance Schema wait telemetry, the governance of instrumentation overhead in high-throughput environments, and the diagnosis of Critical System Blocks: Metadata Locks (MDL), Data Dictionary latch serialization, and Group Replication Flow-Control stalls.
…
[Read more]MySQL and DuckDB
Unlike row-oriented databases, which store data for a single record sequentially on disk, favoring single-row lookups, columnar databases store all the values from a column contiguously in storage, allowing only the selected column to be read from disk.
The default MySQL engine is InnoDB, which is ACID-compliant and great for OLTP (Online Transaction Processing) workloads. That said, OLAP (Online Analytical Processing) queries are built differently; they scan, group, and summarize millions or billions of rows to produce reports. In these cases, the InnoDB engine can be slow to process such queries. This has been a debt in MySQL over the years; it was common to setup ETL/CDC pipelines to export or stream the data to another engine, usually a columnar database system, to run reporting and BI queries on it.
DuckDB is a portable analytical database system, designed to be fast and reliable, similar to SQLite. …
[Read more]Welcome back to Village News, our curated roundup of MySQL and database news. This week, AWS contributed a fix for large-transaction binlog stalls to community MySQL, and MariaDB launched Enterprise Platform 2027.
If you want to get these updates, just subscribe to the blog.
Enjoy!
MySQL News
Note: Aggregated MySQL news can be found at Planet for MySQL Community and Planet MySQL (Oracle curated)
AWS contributes a large-transaction binary log
optimization to MySQL
AWS Database Blog
TL;DR …
[Read more]Jonathan shares how he discovered MySQL through building websites and WordPress, his experience at the EU Summit for the MySQL Community, and the challenges of balancing backwards compatibility with modern MySQL features.
MySQL's null-safe equality operator helps you write SQL queries that correctly match NULL values and retrieve records that ordinary equality comparisons miss. See how to filter assigned and unassigned support tickets using null-safe comparisons, and explore the operator's syntax and behavior in the MySQL Reference Manual: https://dev.mysql.com/doc/refman/9.7/...
Learn how the MySQL null-safe equality operator handles NULL values in SQL queries and helps retrieve records that standard equality comparisons can miss. This demo explains the difference between ordinary equality (=) and null-safe equality, showing how each operator evaluates NULL values and affects query results.