MYSQL8.0的基础信息如何存放
一、存储位置与版本差异
1、MySQL 8.0+(事务化存储)
系统表存储:所有元数据(表结构、索引、权限等)统一存储在 mysql 系统库的 InnoDB事务表中(如 mysql.tables、mysql.columns),物理文件为 mysql.ibd。
优势:性能优化:INFORMATION_SCHEMA 改为内存视图,查询效率提升(无需解析文件)。
原子DDL:DDL操作(如建表、删表)完全事务化,失败自动回滚,避免元数据损坏。
2、MySQL 5.7及更早(文件分散存储)表结构:.frm 文件存储表定义(如 user.frm)。
权限信息:mysql.user 等表使用
MyISAM引擎(非事务性,易损坏)。
其他文件:opt:数据库字符集配置;TRG:触发器定义。
二、元数据访问方式
INFORMATION_SCHEMA 视图**(推荐)提供只读元数据视图,兼容所有版本:
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = ‘user’; — 查询表字段定义
SHOW 命令(快速查看)
SHOW CREATE TABLE user; — 建表语句
SHOW GRANTS FOR ‘root’@’localhost’; — 权限详情
直接查询系统表(8.0+,需管理员权限)
SELECT * FROM mysql.tables WHERE name = ‘user’; — 谨慎操作,可能破坏一致性
三、缓存与事务机制(8.0+)
两级缓存:本地缓存:线程独享,存储未提交的元数据变更;
共享缓存:全局缓存(如 Shared_dictionary_cache),减少磁盘访问。
事务安全:元数据操作通过 Redo Log 和 Undo Log 保障崩溃恢复与回滚。
新旧版本对比
元数据类型 MySQL 8.0+ MySQL 5.7及更早
表结构 mysql.ibd(事务性系统表) .frm 文件(易损坏)
用户权限 mysql.user(InnoDB表) mysql.user(MyISAM表)
触发器/存储过程 mysql.ibd(系统表) .TRG/.TRN 文件
崩溃恢复 ✅ 自动修复元数据 ❌ 需手动修复或文件扫描
关键改进:集中化事务存储消除了文件与表混合管理的复杂性。
总结与建议
设计演进:
旧版:元数据分散存储,管理复杂且易损(如 .frm 文件损坏);
新版:事务化系统表实现 原子性、高性能与统一管理。
实践建议:
新项目:优先选 MySQL 8.0+,利用事务化元数据提升稳定性;
旧系统升级:需迁移 .frm 文件并测试语法兼容性;
日常操作:使用 INFORMATION_SCHEMA 或 SHOW 命令,避免直接修改系统表。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
7. 本站有不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!
66源码网 » MYSQL8.0的基础信息如何存放