> For the complete documentation index, see [llms.txt](https://mariadb.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mariadb.com/docs/server/server-usage/storage-engines/tidesql.md).

# TideSQL

TideSQL is a transactional LSM-tree storage engine for MariaDB, built on TidesDB for high write throughput, with full SQL, MVCC, encryption, and secondary, spatial, full-text, and vector indexes.

{% hint style="info" %}
TideSQL is a community contribution to MariaDB Server. It is a storage engine plugin built on the TidesDB library, which is developed and maintained upstream, outside MariaDB. TideSQL 5.2.1, which links TidesDB v10.2.1, ships at Beta maturity.
{% endhint %}

TideSQL stores a table's data in a TidesDB log-structured merge tree instead of InnoDB, reached through ordinary SQL. Moving a table from InnoDB to TidesDB is usually a change to the `ENGINE` clause and nothing more; see [TideSQL Limitations](/docs/server/server-usage/storage-engines/tidesql/tidesql-limitations.md) for the cases that need more care. The engine favors write throughput, keeps read cost bounded through background compaction, and provides transactions through the library's optimistic multi-version concurrency control, so readers proceed without blocking writers. Through standard SQL it offers primary keys, secondary indexes, foreign keys, auto-increment, virtual and stored generated columns, savepoints, TTL expiration, data-at-rest encryption, full-text, vector and spatial indexes, online DDL, partitioning, and online backup. In `SHOW ENGINES` the engine reports its name as `TidesDB`.

## What TideSQL Is Not

* **Not a fork of InnoDB.** The concurrency model is optimistic MVCC from the library rather than InnoDB's pessimistic row locks, which changes how write contention behaves. Read [TideSQL Transactions and Isolation](/docs/server/server-usage/storage-engines/tidesql/tidesql-transactions-and-isolation.md) before porting a contention-heavy workload.
* **Not a distributed system on its own.** The engine stores data on one node, and clustering comes from the layers above it. Within those layers, TideSQL takes full part in both MariaDB replication and Galera, with engine-level write-set certification and cross-node conflict resolution. See [TideSQL Replication and High Availability](/docs/server/server-usage/storage-engines/tidesql/tidesql-replication-and-ha.md).
* **Not a place to relearn the library.** The on-disk format, compaction, and recovery all belong to TidesDB and are documented in the TidesDB library manual.

## Where the Engine Keeps Its Data

TidesDB data files live in a directory named `tidesdb_data` next to the MariaDB data directory, and the engine manages that layout itself. To override the location, set the read-only [`tidesdb_data_home_dir`](/docs/server/server-usage/storage-engines/tidesql/tidesql-system-variables.md#tidesdb_data_home_dir) system variable.

## TideSQL Pages

{% columns %}
{% column %}
{% content-ref url="/pages/IdncrXaxLHlcIH7fJjLU" %}
[Getting Started with TideSQL](/docs/server/server-usage/storage-engines/tidesql/getting-started-with-tidesql.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Load the plugin, build it with the `install.sh` builder, create your first TidesDB table, and understand the one linkage detail that decides whether the plugin loads at all.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/hrGxbFWqaET8o14r3eVW" %}
[TideSQL Versions and Compatibility](/docs/server/server-usage/storage-engines/tidesql/tidesql-versions-and-compatibility.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
How TideSQL major versions map to the TidesDB library, and which MariaDB Server versions each release is tested against.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/7kL8mVgscHVb9FPLqyWD" %}
[TideSQL Data Model](/docs/server/server-usage/storage-engines/tidesql/tidesql-data-model.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
How TideSQL maps SQL rows and indexes onto TidesDB column families, key namespaces, and the on-disk row format.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/Nvsiv8Ad7chWrHLIRRNN" %}
[TideSQL Transactions and Isolation](/docs/server/server-usage/storage-engines/tidesql/tidesql-transactions-and-isolation.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
The optimistic MVCC model, how the SQL isolation levels map onto the library, and how write contention behaves compared with InnoDB's row locks.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/OpGYYZc4nEPkpw1boh4f" %}
[TideSQL Durability and Sync Modes](/docs/server/server-usage/storage-engines/tidesql/tidesql-durability-and-sync-modes.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
The sync modes that trade durability for throughput, what each one guarantees on a process or machine crash, and what the default `FULL` mode costs.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/8Zj9g4bCXwivcl76mM1d" %}
[TideSQL Table Options](/docs/server/server-usage/storage-engines/tidesql/tidesql-table-options.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
The table options that control compression, encryption, TTL, bloom filters, and other per-table behavior.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/Xae2zeapLuPDAoNY1m9f" %}
[TideSQL System Variables](/docs/server/server-usage/storage-engines/tidesql/tidesql-system-variables.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
A complete reference for TideSQL system variables, for tuning memory, compaction, durability, and other engine behavior.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/4fOZhuSxA7ZDTO5sZCgo" %}
[TideSQL Status Variables](/docs/server/server-usage/storage-engines/tidesql/tidesql-status-variables.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
The status variables that report cache activity, compaction, memtable and flush metrics, and other engine internals.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/6gRMeUG0xZ9scDRZWPRI" %}
[TideSQL Data-at-Rest Encryption](/docs/server/server-usage/storage-engines/tidesql/tidesql-encryption.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Per-row data-at-rest encryption through MariaDB key management, key versions and rotation, and how encryption interacts with compression and indexes.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/0rVLo5biQJUmNksFCShf" %}
[TideSQL Time-to-Live (TTL)](/docs/server/server-usage/storage-engines/tidesql/tidesql-time-to-live.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Table-level, per-row, and per-session row expiration, the order they resolve in, how expired rows are reclaimed during compaction, and how a table rebuild keeps each row's expiry.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/3AuTwfJvYBfUgq22L0lZ" %}
[TideSQL Full-Text Search](/docs/server/server-usage/storage-engines/tidesql/tidesql-full-text-search.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Full-text indexes on TidesDB tables, the supported query syntax, and how the engine builds and maintains the index.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/bN7PQZpHNMA1devhmReF" %}
[TideSQL Vector Search](/docs/server/server-usage/storage-engines/tidesql/tidesql-vector-search.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Vector indexes for approximate nearest-neighbor search, the supported distance functions, and how to run a similarity query.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/qGDxC8EgCy1wPSWQtpDj" %}
[TideSQL Spatial Indexes](/docs/server/server-usage/storage-engines/tidesql/tidesql-spatial-indexes.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Spatial indexes on geometry columns, the supported types, and how spatial predicates are evaluated.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/9HNXE5lHFET0STHqQoW1" %}
[TideSQL Generated Columns and JSON](/docs/server/server-usage/storage-engines/tidesql/tidesql-generated-columns-and-json.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Virtual and stored generated columns, indexing them, and working with JSON documents on TidesDB tables.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/iVXKikbBNfQJZr3Vklnx" %}
[TideSQL Foreign Keys](/docs/server/server-usage/storage-engines/tidesql/tidesql-foreign-keys.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Foreign-key constraints on TidesDB tables, the referential actions the engine enforces, and how they are checked.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/SVbzQlOxTobdjlwzXUE1" %}
[TideSQL Backup and Checkpoint](/docs/server/server-usage/storage-engines/tidesql/tidesql-backup-and-checkpoint.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Taking a consistent online backup or a durable checkpoint, how the two differ, and why `FLUSH TABLES FOR EXPORT` is not a backup.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/nvSbnlOvACbFAVaDKiBp" %}
[TideSQL Table Maintenance](/docs/server/server-usage/storage-engines/tidesql/tidesql-table-maintenance.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
How ANALYZE, OPTIMIZE, CHECK, and REPAIR behave on TidesDB tables, and when to run them.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/G3mShrt2GGEOUYSPcTRr" %}
[TideSQL Monitoring](/docs/server/server-usage/storage-engines/tidesql/tidesql-monitoring.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Reading engine status through status variables and `SHOW ENGINE TidesDB STATUS`, and the metrics that matter for compaction and cache health.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/IpKfJ4CYipgB6Bl8xk4L" %}
[TideSQL Online DDL](/docs/server/server-usage/storage-engines/tidesql/tidesql-online-ddl.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Which schema changes TidesDB performs instantly or in place, which require a table copy, and how ALGORITHM and LOCK clauses apply.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/widw4CiPNvxa2Cq8fjh1" %}
[TideSQL Partitioning](/docs/server/server-usage/storage-engines/tidesql/tidesql-partitioning.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Partitioning TidesDB tables, the supported partition types, and how partitions map onto storage.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/Vhg5rJMy4TIjgogpTTxF" %}
[TideSQL Replication and High Availability](/docs/server/server-usage/storage-engines/tidesql/tidesql-replication-and-ha.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
How TideSQL participates in MariaDB replication and Galera clustering, including engine-level write-set certification and cross-node conflict resolution.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/xh8Zeb1DoNUr1SXFlepu" %}
[TideSQL Storage Internals](/docs/server/server-usage/storage-engines/tidesql/tidesql-storage-internals.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
How rows, indexes, and metadata are laid out in TidesDB column families, and how the row format makes column changes instant.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/gFIqz5rTLNerDHAO5evB" %}
[TideSQL Statistics and the Optimizer](/docs/server/server-usage/storage-engines/tidesql/tidesql-statistics-and-optimizer.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
The statistics the engine gives the optimizer, how index cardinality is sampled, and how scan and range costs are estimated.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/AWNDAup4FTBXJHLpxPK1" %}
[TideSQL Write-Path Optimizations](/docs/server/server-usage/storage-engines/tidesql/tidesql-write-path-optimizations.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Single deletes, tombstone-driven compaction, range deletes, bulk batching, and how the engine handles write backpressure.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/IZnOjoM6L6f0SFIDCCux" %}
[TideSQL Limitations](/docs/server/server-usage/storage-engines/tidesql/tidesql-limitations.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
The current limitations of the engine to know before putting a workload on it.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/V56tPojeln7XOkgrUqLD" %}
[TideSQL Glossary](/docs/server/server-usage/storage-engines/tidesql/tidesql-glossary.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Definitions of the TidesDB and TideSQL terms used throughout these pages.
{% endcolumn %}
{% endcolumns %}

<sub>*This page is licensed: GPLv2*</sub>
