字符串与数字转换函数 | 全方位认识 sys 系统库

本文深入探讨了sys库中的函数,包括extract_schema_from_file_name()、extract_table_from_file_name()等,用于从文件路径中提取模式和表名,以及format_bytes()、format_time()等用于转换字节和时间单位。这些函数在处理性能_schema中的文件I/O信息和格式化SQL语句时非常有用。
摘要由CSDN通过智能技术生成

本系列在之前的文章中我们为大家介绍了sys 系统库的快捷视图、函数,本期开始我们将为大家介绍 sys 系统库的函数。

PS:下文中如果函数定义文本较短的会列出部分函数的定义文本,以便大家更直观地学习它们。过长的函数定义文本请自行按照《初相识|全方位认识 sys 系统库》一文中介绍的下载路径下载查看。

 

| extract_schema_from_file_name()

从给定文件的绝对路径中提取schema名称,该函数在sys.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 ;

 

| extract_table_from_file_name()

从给定文件绝对路径名中提取表名,该函数在sys.x$ps_schema_table_statistics_io视图中调用,当然你也可以在自定义视图中调用

  • 该函数在拥有一个数据文件的完整路径时用这个路径作为传入参数提取performance_schema中的文件I/O信息非常实用, 它提供了一种便捷的方式来获取表名,比完整路径名更容易理解,并且该返回的表名称字符串值后续可以用于联结查询

参数:

  • path VARCHAR(512):一个用于提取表名称的完整数据文件路径

返回值:是一个VARCHAR(64)字符串,即表名称字符串

函数定义语句文本

DROP FUNCTION IF EXISTS extract_table_from_file_name;
DELIMITER $$
CREATE DEFINER='root'@'localhost' FUNCTION extract_table_from_file_name (
    path VARCHAR(512)
)
RETURNS VARCHAR(64)
COMMENT '
        Description
        -----------

        Takes a raw file path, and extracts the table name from it.

        Useful for when interacting with Performance Schema data 
        concerning IO statistics, for example.

        Parameters
        -----------

        path (VARCHAR(512)):
          The full file path to a data file to extract the table name from.

        Returns
        -----------

        VARCHAR(64)

        Example
        -----------

        mysql> SELECT sys.extract_table_from_file_name(\'/var/lib/mysql/employees/employee.ibd\');
        +---------------------------------------------------------------------------+
        | sys.extract_table_from_file_name(\'/var/lib/mysql/employees/employee.ibd\') |
        +------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值