-
Notifications
You must be signed in to change notification settings - Fork 111
extract_schema_from_file_name()
xiaoboluo768 edited this page Jun 9, 2020
·
2 revisions
-
从给定文件完整路径中提取schema名称,该函数在x$ps_schema_table_statistics_io视图中调用,当然你也可以在自定义视图中调用
- 此函数假定给定的所有数据文件都位于datadir目录下,因此,如果说表是分区表或者使用了单独的表选项定义了自己的DATA_DIRECTORY路径,那么虽然能够正确返回数据库的名称,但是后续使用这个数据库名称与其他视图联结使用时将无法在datadir下找到相应的表数据文件
- 该函数在拥有一个数据文件的完整路径时用这个路径作为传入参数提取performance_schema中的文件I/O信息非常实用, 它提供了一种便捷的方式来获取schema名,比完整路径名更容易理解,并且该返回的schema名称字符串值后续可以用于联结查询
-
参数:
- path VARCHAR(512):一个用于提取schema名称的完整数据文件路径
-
返回值:是一个VARCHAR(64)字符串,即schema名称字符串
-
定义语句
DROP FUNCTION IF EXISTS extract_schema_from_file_name;
DELIMITER $$
CREATE DEFINER='root'@'localhost' FUNCTION extract_schema_from_file_name (
path VARCHAR(512)
)
RETURNS VARCHAR(64)
COMMENT '
Description
-----------
Takes a raw file path, and attempts to extract the schema name from it.
Useful for when interacting with Performance Schema data
concerning IO statistics, for example.
Currently relies on the fact that a table data file will be within a
specified database directory (will not work with partitions or tables
that specify an individual DATA_DIRECTORY).
Parameters
-----------
path (VARCHAR(512)):
The full file path to a data file to extract the schema name from.
Returns
-----------
VARCHAR(64)
Example
-----------
mysql> SELECT sys.extract_schema_from_file_name(\'/var/lib/mysql/employees/employee.ibd\');
+----------------------------------------------------------------------------+
| sys.extract_schema_from_file_name(\'/var/lib/mysql/employees/employee.ibd\') |
+----------------------------------------------------------------------------+
| employees |
+----------------------------------------------------------------------------+
1 row in set (0.00 sec)
'
SQL SECURITY INVOKER
DETERMINISTIC
NO SQL
BEGIN
RETURN LEFT(SUBSTRING_INDEX(SUBSTRING_INDEX(REPLACE(path, '\\', '/'), '/', -2), '/', 1), 64);
END$$
DELIMITER ;
上一篇: table_exists()存储过程 | 下一篇: extract_table_from_file_name()函数
- 验证、测试、整理:罗小波
- QQ:309969177
- 提示:本系列文章的主体结构遵循Oracle MySQL 官方 5.7 手册中,关于information_schema、mysql schema、performance_schema、sys schema的章节结构体系,并额外添加了一些验证、测试数据。鉴于本人精力和能力有限,难免出现一些纰漏,欢迎大家踊跃指正!