MySQL 是一款流行的开源关系型数据库,它以表的形式存储数据并使用 SQL。它采用可插拔的**存储引擎(storage engine)**架构,你所选的引擎决定了行如何存储、加锁和恢复。
InnoDB(默认引擎)
自 MySQL 5.5 起,InnoDB 成为默认引擎,也几乎是所有场景下的正确选择:
- 事务 — 支持完整的 ACID,可用
COMMIT/。
ROLLBACK-- 引擎是按表选择的;查看你当前用的是什么:
SELECT table_name, engine
FROM information_schema.tables
WHERE table_schema = 'shop';
-- +------------+--------+
-- | orders | InnoDB | -- 事务型,行锁
-- | old_logs | MyISAM | -- 遗留,表锁
-- +------------+--------+
CREATE TABLE orders (id INT PRIMARY KEY) ENGINE = InnoDB; -- 显式指定
选择引擎就是在选择你的正确性和并发性保证。对于任何写入数据、需要事务或外键的应用,都应使用 InnoDB;如今还去选用 MyISAM,通常意味着白白继承了表级锁、缺少崩溃安全性,却换不来任何实际好处。