2020-08-13 20:51:26
MySQL数据库中系统表和用户表的核心区别在于功能定位、存储机制、访问权限和使用场景,具体如下:
1. 功能与用途系统表
存储元数据:记录数据库运行状态、结构信息、权限配置等底层数据。
关键系统库:
mysql:存储用户账户、权限、角色等安全信息(如mysql.user表)。
information_schema:提供数据库元数据的只读视图(如表名、列类型、索引等)。
performance_schema:监控数据库性能,记录SQL执行、锁等待等运行时信息。
sys:基于performance_schema的简化视图,便于快速分析性能问题。
用途:权限管理、性能监控、数据库结构查询,通常由系统自动维护,不建议手动修改。
用户表
存储业务数据:如订单、用户资料、商品信息等应用核心数据。
用途:支持日常业务操作(增删改查),通过表结构设计满足业务需求。
系统表
特殊存储机制:
information_schema中的表为虚拟表,数据动态生成,不实际存储。
mysql系统库中的表(如user、db)早期使用MyISAM,MySQL 8.0后改为InnoDB。
performance_schema使用专用内存引擎,数据不持久化,重启后清空。
修改限制:通常需高级权限(如SUPER),直接修改可能导致数据库不稳定。
用户表
通用存储引擎:常用InnoDB(支持事务、外键、崩溃恢复)或MyISAM。
可修改性:用户可自由创建、修改表结构及数据,支持持久化存储。
系统表
严格限制:
普通用户默认仅能读取部分系统表(如information_schema)。
修改mysql.user等权限表需SUPER或SYSTEM_VARIABLES_ADMIN等高级权限。
直接写入系统表可能引发安全漏洞或数据库崩溃。
用户表
灵活分配:权限由DBA或创建者设置,支持SELECT、INSERT、UPDATE、DELETE等操作权限的精细控制。
系统表
典型操作:
查询数据库结构:SELECT * FROM information_schema.tables WHERE table_schema = 'test';
排查性能问题:SELECT * FROM performance_schema.events_statements_history;
管理用户权限:通过mysql.user表控制登录和操作权限。
用户表
典型操作:
增删改查业务数据:INSERT INTO orders (id, amount) VALUES (1, 100);UPDATE users SET email = 'new@example.com' WHERE id = 1;
建立索引优化查询:CREATE INDEX idx_name ON users(name);
设计表结构满足业务需求(如添加字段、调整数据类型)。
理解这些区别有助于更安全、高效地管理MySQL数据库,避免因误操作系统表导致数据损坏或安全风险。