MySQL組み込みデータベース


MySQL組み込みデータベース

自己完結型データベースの紹介

mysql には、mysql、information_schema、performance_schema、sys の 4 つの組み込みデータベースがあります。

データベース 説明
mysql MySQLサーバーの通常動作に必要な各種情報(タイムゾーン、マスター/スレーブ、ユーザー、権限など)を格納
情報スキーマ データベース、テーブル、フィールド タイプ、アクセス権などのデータベース メタデータにアクセスするためのさまざまなテーブルとビューを提供します。
パフォーマンススキーマ MySQL サーバーのランタイム ステータスの基礎となる監視機能を提供します。主にデータベース サーバーのパフォーマンス パラメーターを収集するために使用されます。
システム DBA や開発者がパフォーマンスのチューニングと診断にパフォーマンス データベースの Performance_schema を使用するのに便利な一連のビューが含まれています。

1.mysql

MySQL サーバーの通常の動作に必要なさまざまな情報を保存します。含む:

  • データディクショナリテーブル

    文字セット、照合順序、列、イベント、外部キー、インデックス、パラメータ、テーブル、トリガーなどが含まれます。

    これらのテーブルには、データ ディクショナリ (データベース オブジェクトに関するメタデータが含まれます) が含まれています。

    データディクショナリテーブルは表示されません。これらは SELECT では読み取ることができず、SHOW TABLES の出力には表示されず、INFORMATION_SCHEMA.TABLES テーブルにもリストされません。

    ただし、ほとんどの場合、対応する information_schema テーブルをクエリできます。概念的には、information_schema は、MySQL がデータ ディクショナリ メタデータを公開するためのビューを提供します。

  • 助成金システムテーブル

    user、db、tables_priv、columns_priv、procs_priv などが含まれます。これには、ユーザー アカウントとユーザーが持つ権限に関する情報が含まれます。

  • オブジェクト情報システムテーブル

    コンポーネント、ロード可能な関数、サーバー側プラグインに関する情報が含まれています。

  • ログシステムテーブル

    一般クエリ ログ テーブル (general_log) とスロー クエリ ログ テーブル (slow_log) が含まれます。

  • サーバー側のヘルプ システムテーブル

    これらのシステム テーブルには、サーバー側のヘルプ情報が含まれています。

  • タイムゾーンシステムテーブル

    これらのシステム テーブルにはタイム ゾーン情報が含まれています。

  • レプリケーションシステムテーブル

    ndb_binlog_index、slave_master_info、slave_relay_log_info、slave_worker_info などが含まれます。サーバーはこれらのシステム テーブルを使用してレプリケーションをサポートします。

  • オプティマイザー システムテーブル

    innodb_index_stats、innodb_table_stats、server_cost、engine_cost が含まれます。これらのシステム テーブルはオプティマイザによって使用されます。

  • その他のシステムテーブル

    firewall_group_allowlist、innodb_dynamic_metadata などが含まれます。自己増加カウンタの値を記録します。

2. 情報スキーマ

information_schema は、データベースのメタデータ、統計情報、および MySQL Server に関する情報 (例: データベース名またはテーブル名、フィールドのデータ型とアクセス権など) へのアクセスを提供します。このライブラリに格納される情報は、MySQL のデータ ディクショナリまたはシステム カタログと呼ばれることもあります。information_schema は、SHOW ステートメントの代わりに使用できます。

information_schema データベースには複数の読み取り専用テーブル (一時テーブル) が含まれているため、ディスク上のデータ ディレクトリには対応する関連ファイルがなく、これらのテーブルにトリガーを設定できません。USE ステートメントを使用して、クエリ時にデフォルトのデータベースを information_schema として設定できますが、このデータベース内のすべてのテーブルは読み取り専用であり、INSERT、UPDATE、DELETE などのデータ変更操作は実行できません。

さまざまな MySQL バージョンの information_schema:

  • MySQL 5.6 バージョン:

    10 個の MyISAM エンジン一時テーブル (データ ディクショナリ テーブル) と 49 個のメモリ エンジン一時テーブル (統計情報と一部の一時情報の保存) を含む、合計 59 個のテーブルがあります。

  • MySQL 5.7 バージョン:

    10 個の InnoDB ストレージ エンジン一時テーブル (データ ディクショナリ テーブル) と 51 個のメモリ エンジン一時テーブルを含む、合計 61 個のテーブルがあります。

  • MySQL 8.0 バージョン:

    データ ディクショナリ テーブル (元のメモリ エンジンの一部の一時テーブルを含む) は mysql スキーマに移行されており、これらのデータ ディクショナリ テーブルは mysql スキーマの下に隠されており、直接アクセスできません。information_schema の下にある同じ名前のテーブルを介してアクセスする必要があります (統計情報テーブルは information_schema の下に残り、メモリ エンジンのままです)。

information_schema の下のすべてのテーブルは、Memory および InnoDB ストレージ エンジンを使用しており、永続テーブルではなく一時テーブルです。データベースが再起動されると、これらのデータは失われます。4 つの MySQL システム ライブラリの中で、ファイル システム上にライブラリ テーブルに対応するディレクトリとファイルを持たない唯一のシステム ライブラリです。

テーブルの目的に応じて、information_schema の下のテーブルは次のカテゴリに分類できます。

サーバ層統計情報ディクショナリテーブル

テーブル名 効果 説明
コラム 列情報をテーブルに格納する
KEY_COLUMN_USAGE インデックス列を格納するための制約 テーブル内の情報には、主キー、一意のインデックス、外部キーなどの制約に関する情報が含まれます。
REFERENTIAL_CONSTRAINTS 外部キー制約に関する情報を保存する
統計 ストアインデックス統計 インデックスはレコードの行に対応します
TABLE_CONSTRAINTS テーブル関連の制約情報を格納する
ファイル データ表領域ファイルに関連する情報を格納します InnoDB ストレージ エンジンおよび NDB ストレージ エンジンに関連するデータ ファイル情報が含まれます
エンジン MySQL Server がサポートするエンジンに関連する情報を格納します。
テーブルスペース アクティブなテーブルスペースに関する情報を保存する この表には、InnoDB ストレージ エンジンのテーブルスペースに関する情報は記載されていません。InnoDB テーブルスペースのメタデータ情報については、INNODB_SYS_TABLESPACES テーブルと INNODB_SYS_DATAFILES テーブルをクエリします。さらに、MySQL 5.7.8 以降、INFORMATION_SCHEMA.FILES テーブルは、InnoDB テーブル スペースをクエリするためのメタデータ情報も提供します。
スキーマ データベースリスト情報をMySQLサーバーに保存する スキーマはデータベースを表します

サーバー層テーブルレベルのオブジェクトディクショナリテーブル

テーブル名 効果 説明
ビュー ストアビュー関連情報 テーブルをクエリするアカウントには表示ビュー権限が必要です
トリガー トリガー関連情報を保存する テーブルをクエリするアカウントにはトリガー権限が必要です
テーブル テーブルに関する基本情報を保存する
ルーティン ストアド プロシージャとストアド関数に関する情報 この表の情報は、ユーザー定義関数UDFを除き、「mysql.proc」に記録されている情報に相当します。
パーティション パーティションテーブル情報を保存する
イベント スケジュールされたタスクイベントに関連する情報を保存します
パラメーター ストアドプロシージャおよびストアドファンクションのパラメータ情報

サーバ層その他情報辞書テーブル

テーブル名 効果 説明
GLOBAL_STATUS グローバル状態変数情報を保存する
グローバル変数 グローバル システム変数情報を保存する
セッションステータス セッションレベルの状態変数情報を保存する
セッション変数 セッションレベルのシステム変数情報を保存する
オプティマイザー_トレース Storage Optimizer トレース機能によって生成される情報 跟踪功能默认关闭,使用optimizer_trace系统变量启用跟踪功能。如果开启该功能,则每个会话只能跟踪他自己执行的语句,不能看到其他会话执行的语句,且每个会话只能记录最后一个跟踪的SQL语句
PLUGINS 存储MySQL Server中支持的插件信息
PROCESSLIST 存储线程运行过程中的状态信息
PROFILING 存储语句性能分析的信息 其记录内容对应于SHOW PROFILES和SHOW PROFILE语句产生的信息。该表需要在会话变量 profiling=1时才会记录语句性能分析信息,否则该表不记录。

从MySQL 5.7.2开始,此表不再推荐使用,在未来的MySQL版本中删除。改用performance_schema代替
CHARACTER_SETS 存储MySQL Server支持的可用字符集信息
COLLATIONS 存储MySQL Server支持的可用校对规则信息
COLLATION_CHARACTER_SET_APPLICABILITY 存储MySQL Server字符集适用于的校对规则消息 查询结果集相当于从SHOW COLLATION获得的结果集中的前两个字段值。
SCHEMA_PRIVILEGES 存储库的权限信息 表中的信息来自mysql.db表
TABLE_PRIVILEGES 存储表的权限信息 表中的内容来自mysql.tables_priv表
COLUMN_PRIVILEGES 存储列的权限信息 表中的内容来自mysql.column_priv表
USER_PRIVILEGES 存储用户的权限信息 表中的信息来自mysql.user表

InnoDB层系统字典表

表名 作用 描述
INNODB_SYS_DATAFILES 存储InnoDB file-per-table和常规表空间数据文件的路径信息 等同于InnoDB数据字典中SYS_DATAFILES表中的信息
表中的信息包含InnoDB所有表空间类型的元数据,包括:独立表空间、常规表空间、系统表空间、临时表空间和undo表空间(如果开启了独立表空间的话)
查询该表的用户需要有process权限
INNODB_SYS_VIRTUAL 存储InnoDB虚拟生成列和与之关联的列的元数据信息 等同于InnoDB数据字典内部SYS_VIRTUAL表中的信息。INNODB_SYS_VIRTUAL表中展示的行信息是虚拟生成列相关联列的每个列的信息。
查询该表的用户需要有process权限
INNODB_SYS_INDEXES 存储InnoDB索引的元数据信息 等同于InnoDB数据字典内部SYS_INDEXES表中的信息
查询该表的用户需要有process权限
INNODB_SYS_TABLES 存储InnoDB表的元数据 等同于InnoDB数据字典内部SYS_TABLES表的信息。
查询该表的用户需要有process权限
INNODB_SYS_FIELDS 存储InnoDB索引键列的元数据信息 等同于InnoDB数据字典内部SYS_FIELDS表的信息
查询该表的用户需要有process权限
INNODB_SYS_TABLESPACES 存储InnoDB独立表空间和普通表空间的元数据信息(也包含了全文索引表空间) 等同于InnoDB数据字典内部SYS_TABLESPACES表中的信息
查询该表的用户需要有process权限
INNODB_SYS_FOREIGN_COLS 存储InnoDB外键列的状态信息 等同于InnoDB数据字典内部SYS_FOREIGN_COLS表的信息
查询该表的用户需要有process权限
INNODB_SYS_COLUMNS 存储InnoDB表列的元数据信息 等同于InnoDB数据字典内部SYS_COLUMNS表的信息
查询该表的用户需要具有process权限
INNODB_SYS_FOREIGN 存储InnoDB外键的元数据信息 等同于InnoDB数据字典内部SYS_FOREIGN表的信息
查询该表的用户需要具有process权限
INNODB_SYS_TABLESTATS 存储InnoDB表的较低级别的状态信息 MySQL优化器会使用这些统计信息数据来计算并确定在查询InnoDB表时要使用哪个索引。这些信息保存在内存中的数据结构中,与存储在磁盘上的数据无对应关系。InnoDB内部也无对应的系统表。
查询该表的用户需要具有process权限

InnoDB层锁、事务、统计信息字典表

表名 作用 描述
INNODB_LOCKS 存储InnoDB引擎事务中正在请求的且并未获得的且同时阻塞了其他事务的锁信息 即没有发生不同事务之间的锁等待的锁信息,在这里是查看不到的。该表中的内容可以用于诊断高并发下的锁争用信息。
查询该表的用户需要具有process权限
INNODB_TRX 存储InnoDB引擎中执行的每个事务(不包括只读事务)的信息 包括事务是否正在等待锁、事务什么时间点开始、以及事务正在执行的SQL语句文本信息等信息
查询该表的用户需要具有process权限
INNODB_BUFFER_PAGE 存储InnoDB buffer pool中的页相关的信息 查询该表的用户需要具有process权限
INNODB_BUFFER_PAGE_LRU 存储缓冲池中的页面信息 与INNODB_BUFFER_PAGE表不同,INNODB_BUFFER_PAGE_LRU表保存有关innodb buffer pool中的页如何进入LRU链表以及在buffer pool不够用时确定需要从缓冲池中逐出哪些页
INNODB_LOCK_WAITS 存储每个被阻塞的InnoDB事务的锁等待记录信息 包括发生锁等带事务所请求的锁和阻止该锁请求被授予的锁
查询该表的用户需要具有process权限
INNODB_TEMP_TABLE_INFO 存储InnoDB实例中当前处于活动状态的用户创建的InnoDB临时表的信息 只包含已建立连接的用户的临时表信息(断开的用户连接对应的临时表会被自动删除)。它不提供查询优化器使用的内部InnoDB临时表的信息查询。INNODB_TEMP_TABLE_INFO表在首次查询时创建。
查询该表的用户需要具有process权限
INNODB_METRICS 存储InnoDB更为详细细致的性能信息 对InnoDB的PERFORMANCE_SCHEMA的补充。通过对该表的查询,可用于检查innodb的整体健康状况。也可用于诊断性能瓶颈、资源短缺和应用程序的问题等。
查询该表的用户需要具有process权限
INNODB_BUFFER_POOL_STATS 存储InnoDB buffer pool中的状态信息 该表中记录的信息与SHOW ENGINE INNODB STATUS输出的信息类似相同,另外,innodb buffer pool的一些状态变量也提供了部分相同的值
查询该表的用户需要具有process权限

InnoDB层全文索引字典表

表名 作用 描述
INNODB_FT_CONFIG 存储InnoDB表的FULLTEXT索引和关联的元数据信息
查询该表的用户需要具有process权限
INNODB_FT_BEING_DELETED 存储INNODB_FT_DELETED表的快照数据 该表仅在OPTIMIZE TABLE语句执行维护操作期间作为INNODB_FT_DELETED表的快照数据存放使用。
运行OPTIMIZE TABLE语句时,会先清空INNODB_FT_BEING_DELETED表中的数据,保存INNODB_FT_DELETED表中的快照数据到INNODB_FT_BEING_DELETED表,并从INNODB_FT_DELETED表中删除DOC_ID。由于INNODB_FT_BEING_DELETED表中的内容通常生命周期较短,因此该表中的数据对于监控或者调试来说用处并不大
表中默认不记录数据,需要设置系统配置参数innodb_ft_aux_table=string(string表示db_name.tb_name字符串),并创建好全文索引,设置好停用词等
查询该表的用户需要具有process权限
INNODB_FT_DELETED 存储InnoDB表的FULLTEXT索引中删除的行信息 它的存在是为了避免在InnoDB FULLTEXT索引的DML操作期间进行昂贵的索引重组操作,新删除的全文索引中单词的信息将单独存储在该表中,在执行文本搜索时从中过滤出搜索结果,该表中的信息仅在执行OPTIMIZE TABLE语句时清空。
该表中的信息默认不记录,需要使用innodb_ft_aux_table选项(该选项默认值为空串)指定需要记录哪个innodb引擎表的信息,例如:test/test
查询该表的用户需要具有process权限
INNODB_FT_DEFAULT_STOPWORD 存储默认的全文索引停用词信息 提供查询停用词列表值。启用停用词表需要开启参数innodb_ft_enable_stopword=ON,该参数默认为ON,启用停用词功能之后,如果innodb_ft_user_stopword_table选项(针对指定的innodb引擎表中的全文索引生效)自定义了停用词库表名称值,则停用词功能使用innodb_ft_user_stopword_table选项指定的停用词表,如果innodb_ft_user_stopword_table选项未指定,而innodb_ft_server_stopword_table选项(针对所有的innodb引擎表中的全文索引生效)自定义了停用词库表名称值,则同停用词功能使用innodb_ft_server_stopword_table选项指定的停用词表,如果innodb_ft_server_stopword_table选项也未指定,则使用默认的停用词表,即INNODB_FT_DEFAULT_STOPWORD表。
查询该表的用户需要具有process权限
INNODB_FT_INDEX_TABLE 存储InnoDB表全文索引中用于反向文本查找的倒排索引的分词信息
查询该表的用户需要具有process权限
INNODB_FT_INDEX_CACHE 存储包含FULLTEXT索引的innodb存储引擎表中新插入行的全文索引标记信息 它存在的目的是为了避免在DML操作期间进行昂贵的索引重组,新插入的全文索引的单词的信息被单独存储在该表中,直到对表执行OPTIMIZE TABLE语句时、或者关闭服务器时、或者当高速缓存中存放的信息大小超过了innodb_ft_cache_size或innodb_ft_total_cache_size系统配置参数指定的大小才会执行清理。默认不记录数据,需要使用innodb_ft_aux_table系统配置参数指定需要记录哪个表中的新插入行的全文索引数据。
查询该表的用户需要具有process权限

InnoDB层压缩相关字典表

表名 作用 描述
INNODB_CMP、INNODB_CMP_RESET 存储压缩的InnoDB表页有关的操作的状态信息 表中记录的数据为测量数据库中的InnoDb表压缩的有效性提供参考。
查询该表的用户需要具有process权限
INNODB_CMP_PER_INDEX、INNODB_CMP_PER_INDEX_RESET 存储InnoDB压缩表数据和索引相关的操作状态信息 对数据库、表、索引的每个组合使用不同的统计信息,以便为评估特定表的压缩性能和实用性提供参考数据。
对于InnoDB压缩表,会对表中的数据和所有二级索引都进行压缩。此时表中的数据被视为另一个索引(包含所有数据列的聚集索引)。
查询该表的用户需要具有process权限
INNODB_CMPMEM、INNODB_CMPMEM_RESET 存储InnoDB缓冲池中压缩页上的状态信息 为测量数据库中InnoDB表压缩的有效性提供参考
查询该表的用户需要具有process权限

3. performance_schema

performance_schema用于在低级别监视MySQL服务器执行,提供了一种在运行时检查服务器内部执行的方法。

performance_schema中的表是不使用持久磁盘存储的内存表。内容在服务器启动时重新填充,并在服务器关闭时丢弃。

4. sys

sys主要是通过视图的形式把information_schema和performance_schema结合起来,帮助系统管理员和开发人员监控MySQL的技术性能。

可用于典型的调优和诊断用例。此架数据库中的对象包括:

  • 将performance_schema数据汇总为更易于理解的形式的视图(Views)。
  • 执行诸如performance_schema配置和生成诊断报告等操作的存储过程(Stored procedures)。
  • 查询performance_schema配置并提供格式化服务的存储函数(Stored functions)。

参考文章:
https://blog.csdn.net/herecwh/article/details/124633201

https://zhuanlan.zhihu.com/p/50036309

おすすめ

転載: blog.csdn.net/JokerLJG/article/details/128715462