【mysql进阶】2-4. mysql 系统库

devtools/2024/10/25 0:08:53/

mysql System Schema (mysql系统库)

Mysql Schema是⼀个系统库,表中存储了MySQL服务器运⾏时所需的信息。⼴义上,mysqlschema包含存储数据库对象元数据的数据字典和⽤于其他操作⽬的的系统表。数据字典表和系统表位于数据⽬录下⼀个名为 mysql.ibd 的表空间⽂件中,使⽤的是InnoDB存储引擎。

1 数据字典

  • MySQL 的数据字典,⽤来存储有关数据库对象⾃⾝的信息,不可以随意修改,否则可能造成服务器⽆法运⾏:以下列出⼏个常⻅的数据字典表:
    • character_sets :有关可⽤字符集的信息
    • check_constraints :有关表上定义的 CHECK 约束的信息
    • collations :每个字符集的排序规则信息
    • column_type_elements :列类型的信息
    • columns :有关表中列的信息
    • indexes : 有关表索引的信息
    • tables :有关数据库中表的信息
    • tablespace_files :有关表空间使⽤的⽂件信息
    • tablespaces :有关活动表空间的信息
    • triggers :有关触发器的信息
  • 数据字典表是受保护的,只能在调试版本中访问,在发⾏版中没有权限访问,如果在发⾏版本中查询表中的数据,出提⽰拒绝访问:

image-20241024214409040

  • INFORMATION_SCHEMA 实现了某些数据字典的视图,可以通过视图查看某些数据字典的内容:
# 通过INFORMATION_SCHEMA中的视图访问可⽤字符集的信息
mysql> SELECT * FROM INFORMATION_SCHEMA.CHARACTER_SETS;

image-20241024214548101

2 系统表

系统表按功能⼤致可以分为以下⼏类:权限授予系统表、对象信息系统表、⽇志系统表、服务器端帮助系统表、时区系统表、复制系统表、优化器系统表、杂项系统表。mysql系统库中的表如下所⽰:

image-20241024214927737

2.1 权限授予系统表

包含有关⽤⼾帐⼾及帐⼾拥有的权限授权信息,主要的表有:

  • user :⽤⼾帐⼾、全局权限和其他列。
  • global_grants :为⽤⼾分配的动态全局权限;
  • db :数据库级权限。
  • tables_priv :表级权限。
  • columns_priv : 列级权限。
  • procs_priv : 存储过程和函数权限。
  • proxies_priv : 代理⽤⼾权限。
  • default_roles :列出了⽤⼾连接和认证后要激活的默认⻆⾊。
  • role_edges : user 表的关联表,区分 user 表中某⼀⾏记录是帐⼾还是⻆⾊
  • password_history :密码更改的信息

2.2 对象信息系统表

包含有关组件、可加载的服务器插件和函数的信息:

component :使⽤ INSTALL COMPONENT 安装的服务器组件,表中列出了在服务器启动期间安装的组件。

func : 使⽤ CREATE FUNCTION 安装的可加载函数,表中列出了在服务器启动期间加载的函数。

plugin :使⽤ INSTALL PLUGIN 安装的服务器插件,表中列出了在服务器启动期间安装的插件。

2.3 ⽇志系统表

服务器使⽤⽇志系统表进⾏⽇志记录:

  • general_log :⼀般查询⽇志表。
  • slow_log :慢查询⽇志表。

⽇志表使⽤ CSV 存储引擎。

2.4 服务器端帮助系统表

包含服务器端帮助信息:

  • help_category :有关帮助类别的信息。
  • help_keyword :与帮助主题关联的关键字。
  • help_relation :帮助关键字和主题之间的映射。
  • help_topic :帮助主题内容。

2.5 时区系统表

包含时区信息:

  • time_zone :时区 ID 以及是否使⽤闰秒。
  • time_zone_leap_second :发⽣闰秒时如何修正。
  • time_zone_name : 时区 ID 和名称之间的映射。
  • time_zone_transition , time_zone_transition_type : 时区说明及偏移量。

2.6 复制系统表

服务器使⽤以下系统表来⽀持复制,有关复制的内容我们在主从复制专题中详细介绍

  • gtid_executed :⽤于存储 GTID 的值。
  • ndb_binlog_index :⽤于NDB Cluster 复制的⼆进制⽇志信息。只有在⽀持 NDB CLUSTER 的服务器才会创建此表
  • slave_master_info , slave_relay_log_info , slave_worker_info : ⽤于存储从节点服务器上的复制信息。

以上⼏张表都使⽤ InnoDB 存储引擎。

2.7 优化器系统表

这些系统表供优化器使⽤:

  • innodb_index_stats , innodb_table_stats : ⽤于 InnoDB 的持久优化器统计信息。
  • server_cost , engine_cost :优化器成本模型使⽤的表,包含查询期间发⽣的操作成本估算信息。 server_cost 包含服务器操作的优化器成本估算。 engine_cost 包含对特定存储引擎操作的估计。

2.8 杂项系统表

  • audit_log_filter , audit_log_user : 如果安装了 MySQL Enterprise Audit,存储审计⽇志过滤器定义和⽤⼾帐⼾。
  • firewall_group_allowlist , firewall_groups , firewall_memebership ,firewall_users , firewall_whitelist :如果安装了 MySQL Enterprise Firewall,这些存储表防⽕墙的使⽤信息。
  • servers :由 FEDERATED 存储引擎使⽤。
  • innodb_dynamic_metadata :由 InnoDB 存储引擎⽤来存储快速变化的表元数据,例如⾃动递增计数器值和索引树损坏标志。

http://www.ppmy.cn/devtools/128543.html

相关文章

【MySQL】详解MySQL数据类型

一、数据类型 各类型的数值范围: 在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。 可以通过UNSIGNED来说明某个字段是无符号的。对于int类型可能存放不下的数据,尽量不使用unsigned,unsigned int 同样可…

Rust编程语言变量的所有权(ownership)

文章目录 什么是所有权所有权规则转让所有权变量与数据交互的方式(一):移动变量与数据交互的方式(二):克隆只在栈上的数据:拷贝所有权与函数返回值与作用域引用和借用可变引用悬垂引用(Dangling References)引用的规则什么是所有权 所有权(ownership)是Rust 的核心功能之一…

GISBox vs CesiumLab:哪款GIS工具更适合你的项目?

在地理信息系统(GIS)领域,越来越多的用户开始关注GIS工具箱的选择,其中GISBox和CesiumLab是两款备受推崇的产品。那么,哪一款更适合你的需求呢?本文将从功能、使用体验和应用场景等方面,对GISBo…

怎么快速在ppt中添加文本框?2个常用的ppt使用技巧盘点!

文本是ppt中最基本的元素,也是我们呈现想法和观点最常使用的媒介,想在ppt中添加文本,必然离不开文本框,那ppt如何添加文本框呢? 对于Powerpoint(简称ppt)而言,可以点击菜单栏的 “插…

智慧升级,知识无界:十大搭建知识库软件助你前行

在知识爆炸的时代,如何高效地管理、整合与利用信息,成为了个人与企业发展的核心竞争力。智慧升级,意味着我们不仅要掌握丰富的知识,更要学会运用工具,让知识无界流通,助力个人成长与企业创新。以下是精心挑…

制作sdk

制作 java-sdk 的两种方式_java sdk-CSDN博客 平时maven工程里 pom 中的引用的依赖就是别人开发好的 sdk 包;工作中为了方便一些开发也需要自定义开发 sdk 包, 精华; 一、两种方式 我们平时引用 sdk 有两种方式: pom 依赖引用…

神经网络model训练时loss=nan【原因总结】

一、Loss functions 中含 F.log_softmax()函数 原因: 由于在计算log_softmax(x)时, 出现log(0)的情况。 解决方法: 给log_softmax的参数x添加一个很小的数: out=F.log_softmax(x+1e-10).二、loss_function(x)函数参数中出现nan 原因: 网络的生成features x 中含有nan. 解…

fluent-ffmpeg操作MP3文件深入解析

软考鸭微信小程序 学软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 引言 fluent-ffmpeg是一个功能强大的Node.js库,它为FFmpeg提供了一个流畅的接口。FFmpeg是一个著名的多媒体框架,以处理音频、视频和…