• mysql系统数据库


    mysql系统数据库主要存储了一些存储MySQL服务的系统信息表。一般情况下mysql库的表都是MYASIM引擎,除非个别情况。mysql库的表的作用大致可以分为以下几类:
    (1)授权系统表
    (2)系统对象信息系统表
    (3)日志系统表
    (4)服务器端辅助系统表
    (5)time zone系统表
    (6)复制相关系统表
    (7)optimizer相关系统表
    (8)其他系统表,下面详细看一看
    下面详细讲:
    一:授权系统表(Grant System Tables)
    授权的一些表主要有以下几个:
    user: User accounts, global privileges, and other non-privilege columns.
    db: Database-level privileges.
    tables_priv: Table-level privileges.
    columns_priv: Column-level privileges.
    procs_priv: Stored procedure and function privileges.
    proxies_priv: Proxy-user privileges.
    基本上没一个系统表都会包含有权限列和范围列,也就包含一些授权的主要信息表。
    user表控制了用户是否能够连接,如果可以连接,则会指出此用户的权限的信息,这个表适用于实例上的所有的数据库。
    db表范围列决定哪些用户可以访问哪些数据库从哪个主机。权限列决定允许的操作。在数据库级别授予的权限适用于数据库和数据库中的所有对象,如表和存储程序。
    tables_priv和columns_priv表控制的权限就更为细致了,到了表级别和列级别。
    procs_priv 表适用于存储例程(过程和函数)。在常规级别授予的权限只适用于一个单一的过程或函数。
    proxies_priv 指出那个用户可以作为代理,或者是用户是否有权限给别的用户代理权限。
    二:系统对象信息系统表
    event: event的系统表,每一次系统启动都会重新load一遍,除非指定 --skip-grant-tables参数启动,不然都是要load的
    func: 存放关于用户定义的方法,除非指定 --skip-grant-tables参数启动,不然每一次系统启动都会重新load一遍。
    plugin: 存放有关服务器插件的相关信息,除非指定 --skip-grant-tables参数启动,不然每一次系统启动都会重新load一遍。默认的存储引擎是INNODB
    proc:存放存储过程和方法的系统表。
    三:日志系统表,一般情况下我看了看都是NULL的
    general_log: The general query log table.
    slow_log: The slow query log table.
    四:服务器端辅助系统表
    help_category: Information about help categories.
    help_keyword: Keywords associated with help topics.
    help_relation: Mappings between help keywords and topics.
    help_topic: Help topic contents.
    这些表存储了mysql帮助的基本信息,我们都可以用HELP +列 来查看具体的帮助信息。
    例如:
    五:time zone的相关系统表
    time_zone: Time zone IDs and whether they use leap seconds.
    time_zone_leap_second: When leap seconds occur.
    time_zone_name: Mappings between time zone IDs and names.
    time_zone_transition, time_zone_transition_type: Time zone descriptions.
    设置时区用以下方式:SET GLOBAL time_zone = timezone;
    可以用以下方式查看:SELECT @@global.time_zone, @@session.time_zone;
    六:复制相关的表
    gtid_executed: 存储了复制执行的GTID的信息。
    ndb_binlog_index:
    slave_master_info, slave_relay_log_info, slave_worker_info: 只有mysql作为slave的时候才会存储相关信息
    七:optimizer相关系统表
    innodb_index_stats, innodb_table_stats: 显示的是索引的信息
    Table 15.3 Columns of innodb_table_stats
    Column name Description
    database_name Database name
    table_name Table name, partition name, or subpartition name
    last_update A timestamp indicating the last time that InnoDB updated this row
    n_rows The number of rows in the table
    clustered_index_size The size of the primary index, in pages
    sum_of_other_index_sizes The total size of other (non-primary) indexes, in pages
    Table 15.4 Columns of innodb_index_stats
    Column name Description
    database_name Database name
    table_name Table name, partition name, or subpartition name
    index_name Index name
    last_update A timestamp indicating the last time that InnoDB updated this row
    stat_name The name of the statistic, whose value is reported in the stat_value column
    stat_value The value of the statistic that is named in stat_name column
    sample_size The number of pages sampled for the estimate provided in the stat_value column
    stat_description Description of the statistic that is named in the stat_name column
    两个表的last_update 这列都记录了最后一次索引更改的时间。而且这两张表都是可以手动进行更新的,修改这两个表可以强制某个查询的执行计划,或者测试替代计划,优点是不需要修改数据库相关信息。更新统计信息需要使用FLUSH TABLE tbl_name来更新统计信息。可以查询某张表的索引信息:
    SELECT SUM(stat_value) pages, index_name, SUM(stat_value)*@@innodb_page_size size FROM mysql.innodb_index_stats WHERE table_name='t1' AND stat_name = 'size' GROUP BY index_name;
    SELECT index_name, stat_name, stat_value, stat_description FROM mysql.innodb_index_stats WHERE table_name like 't1';
    SELECT index_name, stat_name, stat_value, stat_description FROM mysql.innodb_index_stats WHERE table_name like 't1' AND stat_name LIKE 'n_diff%';
    server_cost:服务器操作的成本估算信息
    engine_cost: 指定存储引擎的成本估算信息
    FLUSH OPTIMIZER_COSTS命令可以重新开始读取记录信息。
    八:其他的一些系统表
    audit_log_filter, audit_log_user: 这两个表提供的是mysql审计相关的信息,如果没有安装的话是没有这两个表的。
    firewall_users, firewall_whitelist: 要安装mysql企业防火墙才可以使用。
    servers: 主要是 FEDERATED 引擎使用。不做介绍了。
     
    这是一个mysql系统库的大概介绍,感觉比较需要我们掌握的就是关于授权,系统表,日志表,优化表和复制相关的表。后面可以看一看mysql的日志类型等和优化相关的方面深入了解一下。
     
  • 相关阅读:
    .Net2.0 中 Page 页面的事件触发顺序
    vs 中自带的代码混淆器 Dotfuscator (图)
    SqlHelper 中文注释版(值得收藏)
    (原创)用重载实现 treeview 的无限分类递归调用(图)
    通过前置代码指定嵌套中的 Repeater 事件!
    vs2008 中提高开发效率的一些快捷键
    强内聚,弱耦合
    也谈 SQL 注入攻击。
    ASP.NET 页面中动态加载用户控件
    ASP 调用存储过程,同时返回记录集和输出参数
  • 原文地址:https://www.cnblogs.com/shengdimaya/p/5950030.html
Copyright © 2020-2023  润新知