当前位置:首页 > 域名

MySQL关于数据字典的一个疑问

今天看着MySQL的关个疑数据字典,突然想到一个问题:为什么MySQL数据字典 information_schema中的于数表名是大写,而performance_schema和其他库中的据字是小写?

带着这个问题,我开始了一些猜测和自我论证。关个疑

首先大小写的于数这个情况是相对不兼容的。

比如在performance_schema中,据字根据关键字user可以找到两个相关的关个疑表。 

mysql> show tables  like user%;  +--------------------------------------+  | Tables_in_performance_schema (user%) |  +--------------------------------------+  | user_variables_by_thread             |  | users                                |  +--------------------------------------+  2 rows in set (0.00 sec)

但是于数如果我改做大写,是站群服务器据字不能识别的,这在其他的关个疑数据库里也是类似的处理方式。 

mysql> desc USERS;  ERROR 1146 (42S02): Table performance_schema.USERS doesnt exist  mysql> select database();  +--------------------+  | database()         |  +--------------------+  | performance_schema |  +--------------------+  1 row in set (0.00 sec)

而在information_schema中,于数则是据字相对兼容的。 

mysql> select count(*)from tables; select count(*)from TABLES;  +----------+  | count(*) |  +----------+  |      383 |  +----------+  1 row in set (0.01 sec)  +----------+  | count(*) |  +----------+  |      383 |  +----------+  1 row in set (0.00 sec)

如果从物理文件的关个疑角度来看,你会发现在MySQL中information_schema这个数据库和其他数据库不同,于数没有一个指定的据字目录存在。 

[root@dev01 mysql]# ll  total 188796  -rw-r----- 1 mysql mysql       56 Jan  2 12:37 auto.cnf  -rw-r----- 1 mysql mysql        5 Mar 13 14:26 dev01.pid  drwxr-x--- 2 mysql mysql    12288 Mar  9 10:44 devopsdb  drwxr-x--- 2 mysql mysql     4096 Jan  2 12:38 dms_metadata  -rw-r----- 1 mysql mysql     1292 Jan 26 19:44 ib_buffer_pool  -rw-r----- 1 mysql mysql 79691776 Mar 13 23:27 ibdata1  -rw-r----- 1 mysql mysql 50331648 Mar 13 23:27 ib_logfile0  -rw-r----- 1 mysql mysql 50331648 Mar 13 23:27 ib_logfile1  -rw-r----- 1 mysql mysql 12582912 Mar 13 23:36 ibtmp1  drwxr-x--- 2 mysql mysql     4096 Jan 24 19:04 kmp  drwxr-x--- 2 mysql mysql     4096 Jan  2 12:37 mysql  -rw-r----- 1 mysql mysql   324407 Mar 13 21:54 mysqld.log  drwxr-x--- 2 mysql mysql     4096 Jan  2 12:37 performance_schema  drwxr-x--- 2 mysql mysql    12288 Jan  2 12:37 sys  drwxr-x--- 2 mysql mysql     4096 Mar 13 23:27 test

这个数据的存储就好比Oracle里面的系统表空间,云服务器所以information_schema是名副其实的数据字典库。

而performance_schema则是一个内存库,它的存储引擎是特别的一种,不是InnoDB也不是MyISAM,Memory,而是performance_schema

带着疑问我继续切换到了information_schema中,可以很明显的发现information_schema中的数据字典大多是Memory存储引擎。 

mysql> show create table tables \G  云南idc服务商

分享到:

滇ICP备2023006006号-16