⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

撤销表空间:单独管理与回收UNDO日志

详解MySQL 8.0中undo表空间的分离配置、自动截断机制及如何监控undo膨胀,避免长事务导致磁盘爆满。 · 难度:入门 · +10XP

撤销表空间(Undo Tablespace)调优

MySQL 8.0默认将undo日志存储在单独的undo表空间(undo_001、undo_002),而非系统表空间。通过innodb_undo_tablespaces和innodb_undo_log_truncate可控制数量与自动回收。长事务或频繁更新会导致undo膨胀,需监控INFORMATION_SCHEMA.INNODB_METRICS中的undo_truncation相关指标,并合理设置innodb_max_undo_log_size。

-- 查看undo表空间状态
SELECT tablespace_name, file_name, status, size FROM INFORMATION_SCHEMA.FILES WHERE tablespace_name LIKE '%undo%';

-- 手动立即截断(需要先禁用在线的截断) SET GLOBAL innodb_undo_log_truncate = 0; ALTER UNDO TABLESPACE innodb_undo_001 DEACTIVATE; -- 等待purge完成后再激活 ALTER UNDO TABLESPACE innodb_undo_001 ACTIVATE; SET GLOBAL innodb_undo_log_truncate = 1;

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 68 篇
0 完成
🔥 0