// Storage Engines

MariaDB Storage Engines

ความสามารถที่โดดเด่นของ MariaDB — ใช้ Storage Engine ที่แตกต่างกันตามลักษณะของข้อมูลและ workload ในฐานข้อมูลเดียว

🗄️ Storage Engine คืออะไร?

Storage Engine คือ component ที่รับผิดชอบการ read/write ข้อมูลจริงบน disk — MariaDB อนุญาตให้แต่ละ table ใช้ engine ที่แตกต่างกัน สร้าง hybrid architecture ที่ยืดหยุ่นสูง

🏛️
InnoDB (XtraDB)
Default Engine · ACID · Row-level locking

Engine หลักของ MariaDB สำหรับ OLTP workloads — รองรับ Transactions, Foreign Keys, Row-level locking และ MVCC (Multi-Version Concurrency Control) MariaDB ใช้ XtraDB ซึ่งเป็น enhanced fork ของ InnoDB ที่มี performance ดีกว่า

ACID Compliant Foreign Keys Row Locking MVCC Crash Recovery Online DDL
🔒
Aria
Crash-safe MyISAM replacement · MariaDB exclusive

Aria เป็น engine ที่ MariaDB พัฒนาขึ้นเองเพื่อแทน MyISAM — เพิ่ม crash-safety ผ่าน write-ahead logging ใช้เป็น internal engine สำหรับ system tables และ temporary tables ใน MariaDB

Crash Safe Full-Text Index Table Locking Read Heavy
📊
MariaDB ColumnStore
OLAP · Analytics · Columnar Storage

ColumnStore เก็บข้อมูลเป็น columns แทน rows — เหมาะกับ analytical queries ที่อ่านข้อมูลจำนวนมาก รองรับ distributed processing และ petabyte-scale datasets สำหรับ data warehouse

OLAP Optimized Columnar Storage High Compression Analytics Only
-- สร้าง ColumnStore table สำหรับ Analytics CREATE TABLE sales_fact ( sale_date DATE, product_id INT, amount DECIMAL(12,2), region VARCHAR(50) ) ENGINE=ColumnStore; -- Analytical query เร็วมากบน ColumnStore SELECT region, SUM(amount) FROM sales_fact WHERE sale_date >= '2024-01-01' GROUP BY region;
🪨
MyRocks
RocksDB-based · High Write Throughput · SSD Optimized

MyRocks ใช้ RocksDB ของ Facebook เป็น storage layer — เหมาะสำหรับ write-heavy workloads บน SSD ใช้ space น้อยกว่า InnoDB 2x ผ่าน LSM-tree structure Facebook ใช้ engine นี้ใน production

Write Optimized Space Efficient SSD Friendly No Foreign Keys
🕷️
Spider
Sharding · Distributed · Federated Tables

Spider engine สร้าง transparent sharding โดยกระจาย data ข้าม MariaDB servers หลายตัว — เสมือนเป็น table เดียวสำหรับ application แต่จริงๆ data อยู่หลาย nodes

Horizontal Sharding Distributed Queries Complex Setup
// เปรียบเทียบ

เลือก Engine ที่ใช่

EngineUse CaseTransactionsFK SupportFull-Text
InnoDBOLTP, General Purpose✅ Yes✅ Yes✅ Yes
AriaRead-heavy, Temp tables❌ No❌ No✅ Yes
ColumnStoreAnalytics, Data Warehouse⚠️ Limited❌ No❌ No
MyRocksWrite-heavy, IoT, Logs✅ Yes❌ No❌ No
SpiderSharding, Distributed⚠️ Partial❌ No❌ No
MEMORYCache, Temp data❌ No❌ No❌ No
CSVImport/Export, Logging❌ No❌ No❌ No
-- ดู Storage Engines ที่ติดตั้ง SHOW ENGINES; -- เปลี่ยน Engine ของ Table ALTER TABLE my_table ENGINE=InnoDB; -- สร้าง Table ด้วย Engine ที่ต้องการ CREATE TABLE logs ( id BIGINT AUTO_INCREMENT PRIMARY KEY, message TEXT, ts DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINE=MyRocks COMMENT='High-write log table';