<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/inner-join-oleg-smirnov-on-parallel-query-execution-bbkvxx9dh" -->

---
title: Inner Join: Oleg Smirnov on parallel query execution
description: MariaDB has run every query on a single thread since it began, and that is changing. In an interview, Optimizer team engineer Oleg Smirnov describes work...
canonical: https://daily.dev/posts/inner-join-oleg-smirnov-on-parallel-query-execution-bbkvxx9dh
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Inner Join: Oleg Smirnov on parallel query execution | daily.dev
og:description: MariaDB has run every query on a single thread since it began, and that is changing. In an interview, Optimizer team engineer Oleg Smirnov describes work...
og:url: https://daily.dev/posts/inner-join-oleg-smirnov-on-parallel-query-execution-bbkvxx9dh
og:image: https://api.daily.dev/og/posts/BbKvxx9Dh.png
og:image:alt: Inner Join: Oleg Smirnov on parallel query execution
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Inner Join: Oleg Smirnov on parallel query execution

**[MariaDB.org](https://daily.dev/sources/mariadb-foundation)** · 11 min read · 0 upvotes · 0 comments

## Summary

MariaDB has run every query on a single thread since it began, and that is changing. In an interview, Optimizer team engineer Oleg Smirnov describes work underway to parallelize query execution for InnoDB, splitting tables into chunks processed by multiple workers. On a 100-million-row aggregation query, two workers nearly halved the 20-second serial runtime, with diminishing but real gains up to eight workers. TPC-H tests showed some queries running five to seven times faster, with Q3 and Q6 singled out as especially promising, while others like Q7 and Q8 saw only modest gains. Plain table scans don't benefit, but joins, filtering and aggregation do. No ship date is set; Smirnov hopes a first stable phase lands in 2027.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://mariadb.org/inner-join-oleg-smirnov-on-parallel-query-execution>

## Questions this post answers

### Does MariaDB support parallel query execution across multiple CPU cores?

Not yet in a released version; MariaDB has historically run every query on a single thread. The Optimizer team began implementing parallel execution for InnoDB, splitting tables into chunks processed by multiple workers for joins, filtering and aggregation. It is still in development, with no shipped release or committed date, though a first stable phase is hoped for in 2027.

_Track this kind of database performance work as it evolves by following MariaDB updates on daily.dev._

### What kind of SQL queries benefit most from parallel execution in a database like MariaDB?

Aggregation queries benefit the most, along with joins and filtering, since they involve heavy CPU work across many rows. Plain table scans see almost no benefit because sequential memory reads are already fast, and splitting them causes random access and cache eviction. In MariaDB's tests, an aggregation query over 100 million rows nearly halved in time with two workers.

_Developers tuning analytical queries can follow this parallel-execution progress on daily.dev._

### How does MariaDB split an InnoDB table into chunks for parallel processing?

MariaDB reads the root page of the table's clustered B-tree index and creates one chunk per entry in that page, typically one to two hundred chunks. Workers pull chunks from a queue and re-split any chunk that is too coarse by descending one tree level, which balances load when there are more workers than initial chunks or an uneven remainder.

_Engineers evaluating InnoDB internals can keep up with implementation details like this via daily.dev._

## Similar posts on daily.dev

- [MySQL 9.7 Community Edition: Smarter Join Planning with the Hypergraph Optimizer](https://daily.dev/posts/mysql-9-7-community-edition-smarter-join-planning-with-the-hypergraph-optimizer-ista0aar3) · Planet MySQL · 4 upvotes · 0 comments
- [Parallelizing MySQL Snapshots](https://daily.dev/posts/parallelizing-mysql-snapshots-ntjvrxuao) · Materialize · 0 upvotes · 0 comments
- [How ClickHouse became fast at joins](https://daily.dev/posts/how-clickhouse-became-fast-at-joins-lcg879zkp) · ClickHouse · 0 upvotes · 0 comments
- [How MariaDB 11.8 became about 3× faster on some in-memory workloads, fixing a regression dating back to 10.5](https://daily.dev/posts/how-mariadb-11-8-became-about-3-faster-on-some-in-memory-workloads-fixing-a-regression-dating-back-stp7ehb2j) · MariaDB.org · 1 upvotes · 0 comments

---

Tags: [#infrastructure](https://daily.dev/tags/infrastructure), [#database](https://daily.dev/tags/database)

[View this post on daily.dev](https://daily.dev/posts/inner-join-oleg-smirnov-on-parallel-query-execution-bbkvxx9dh)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Inner Join: Oleg Smirnov on parallel query execution","url":"https://daily.dev/posts/inner-join-oleg-smirnov-on-parallel-query-execution-bbkvxx9dh","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/inner-join-oleg-smirnov-on-parallel-query-execution-bbkvxx9dh"},"datePublished":"2026-10-29T12:59:02.541Z","dateModified":"2026-10-29T12:59:33.656Z","description":"MariaDB has run every query on a single thread since it began, and that is changing. In an interview, Optimizer team engineer Oleg Smirnov describes work...","image":"https://media.daily.dev/image/upload/s--HRgLpUt6--/f_auto/v1722860399/public/Placeholder%2003","thumbnailUrl":"https://media.daily.dev/image/upload/s--HRgLpUt6--/f_auto/v1722860399/public/Placeholder%2003","isAccessibleForFree":true,"articleSection":"MariaDB.org","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"MariaDB.org","logo":"https://media.daily.dev/image/upload/s--onniydaR--/f_auto,q_auto/v1787487510/logos/mariadb-foundation?_a=BAMAMicg0","url":"https://daily.dev/sources/mariadb-foundation"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/inner-join-oleg-smirnov-on-parallel-query-execution-bbkvxx9dh","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"infrastructure,database","timeRequired":"PT11M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"MariaDB.org","item":"https://daily.dev/sources/mariadb-foundation"},{"@type":"ListItem","position":3,"name":"Inner Join: Oleg Smirnov on parallel query execution"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/inner-join-oleg-smirnov-on-parallel-query-execution-bbkvxx9dh#faq","mainEntity":[{"@type":"Question","name":"Does MariaDB support parallel query execution across multiple CPU cores?","acceptedAnswer":{"@type":"Answer","text":"Not yet in a released version; MariaDB has historically run every query on a single thread. The Optimizer team began implementing parallel execution for InnoDB, splitting tables into chunks processed by multiple workers for joins, filtering and aggregation. It is still in development, with no shipped release or committed date, though a first stable phase is hoped for in 2027. Track this kind of database performance work as it evolves by following MariaDB updates on daily.dev."}},{"@type":"Question","name":"What kind of SQL queries benefit most from parallel execution in a database like MariaDB?","acceptedAnswer":{"@type":"Answer","text":"Aggregation queries benefit the most, along with joins and filtering, since they involve heavy CPU work across many rows. Plain table scans see almost no benefit because sequential memory reads are already fast, and splitting them causes random access and cache eviction. In MariaDB's tests, an aggregation query over 100 million rows nearly halved in time with two workers. Developers tuning analytical queries can follow this parallel-execution progress on daily.dev."}},{"@type":"Question","name":"How does MariaDB split an InnoDB table into chunks for parallel processing?","acceptedAnswer":{"@type":"Answer","text":"MariaDB reads the root page of the table's clustered B-tree index and creates one chunk per entry in that page, typically one to two hundred chunks. Workers pull chunks from a queue and re-split any chunk that is too coarse by descending one tree level, which balances load when there are more workers than initial chunks or an uneven remainder. Engineers evaluating InnoDB internals can keep up with implementation details like this via daily.dev."}}]}
```

