特性 | InnoDB | MyISAM |
---|---|---|
事务支持 | ✅ ACID | ❌ |
行级锁 | ✅ | ❌(表锁) |
外键约束 | ✅ | ❌ |
崩溃恢复 | Redo Log | 无 |
存储结构 | 聚集索引 | 堆表 |
适用场景 | OLTP | 读密集型 |
sqlCopy Code-- 创建组合索引示例
CREATE INDEX idx_name_age ON users(name, age);
WHERE name = 123
(name为字符串类型)WHERE YEAR(create_time) = 2023
WHERE name LIKE '%张'
级别 | 脏读 | 不可重复读 | 幻读 | 实现方式 |
---|---|---|---|---|
Read Uncommitted | ✔️ | ✔️ | ✔️ | 无锁 |
Read Committed | ❌ | ✔️ | ✔️ | 语句级快照 |
Repeatable Read | ❌ | ❌ | ✔️ | 事务级快照(InnoDB) |
Serializable | ❌ | ❌ | ❌ | 全表锁 |
SELECT ... LOCK IN SHARE MODE
SELECT ... FOR UPDATE
CodeEXPLAIN SELECT * FROM orders WHERE user_id = 100;
slow_query_log
logCopy CodeLATEST DETECTED DEADLOCK
...
SHOW ENGINE INNODB STATUS
sqlCopy Code-- 低效写法
SELECT * FROM orders LIMIT 1000000, 20;
-- 优化方案
SELECT * FROM orders
WHERE id > (SELECT id FROM orders ORDER BY id LIMIT 1000000, 1)
LIMIT 20;
本文系作者在时代Java发表,未经许可,不得转载。
如有侵权,请联系nowjava@qq.com删除。