美文网首页半栈工程师
(十五)Spider功能函数说明

(十五)Spider功能函数说明

作者: 紫狐挽诗 | 来源:发表于2020-07-08 20:27 被阅读0次

    Spider Functions

    Spider 存储引擎提供了以下 4 个 UDF 函数,是与 Spider 存储引擎一起安装的 UDF:

    SPIDER_DIRECT_SQL:在远程服务器中执行 sql(Execute SQL on the remote server)
    SPIDER_BG_DIRECT_SQL:后台 SQL 执行(Background SQL execution)
    SPIDER_COPY_TABLES:(复制表数据)Copy table data
    SPIDER_FLUSH_TABLE_MON_CACHE:(刷新 Spider 监视服务器信息)Refreshing Spider monitoring server information

    (UDF:User-Defined Functions,用户定义函数,随着 Spider 存储引擎的安装一并安装,是一种用新函数扩展 MariaDB 的方式,该新函数的工作方式类似于本机(内置)MariaDB 函数)

    本节中,没有特殊说明,一般都是在 spider server 中执行的语句

    SPIDER_DIRECT_SQL

    语法:

    SPIDER_DIRECT_SQL('sql', 'tmp_table_list', 'parameters')
    

    说明:

    一个与 Spider Storage Engine 一起安装的 UDF,此功能用于在远程服务器上执行 SQL 字符串 sql,如参数中所定义。 如果返回任何结果集,它们将存储在 tmp_table_list 中。

    如果 SQL 成功执行,则该函数返回 1;如果失败,则返回 0。

    示例:

    -- 创建一个临时表
    CREATE TEMPORARY TABLE test.res
    (
      id int(10) unsigned NOT NULL,
      accountName varchar(20) NOT NULL DEFAULT '',
      name varchar(128) NOT NULL DEFAULT ''
    ) ENGINE=MEMORY;
    
    -- 执行SPIDER_DIRECT_SQL语句
    SELECT SPIDER_DIRECT_SQL('SELECT * FROM test.opportunities', 'res', 'srv "backend1", port "3306"');
    

    执行SPIDER_DIRECT_SQL
    -- 查询执行结果
    SELECT * FROM test.res;
    

    执行SPIDER_DIRECT_SQL结果

    SPIDER_BG_DIRECT_SQL

    语法:

    SPIDER_BG_DIRECT_SQL('sql', 'tmp_table_list', 'parameters')
    

    描述:

    在远程服务器上后台执行给定的, 如参数列表中所定义的 SQL 语句;

    如果查询返回结果集,则将结果存储在给定的临时表中。

    当给定的 SQL 语句执行成功时,此函数返回被调用的 UDF 的数目。当给定的 SQL 语句失败时,它返回 0。

    示例:

    准备操作,在 backend2 的远程主机 MariaDB 上,给 test.opportunities 表添加一条数据:

    INSERT INTO test.opportunities
    (id, accountName, name, owner, amount, closeDate, stageName)
    VALUES(1, 'ubut18test', 'spider', 'spider', 30, '2020-02-28', 'halo');
    

    在 spider server 本机的 MariaDB 的 test 数据库新建一个临时表 res2:

    -- 创建一个临时表
    CREATE TEMPORARY TABLE if not exists test.res2
    (
      id int(10) unsigned NOT NULL,
      accountName varchar(20) NOT NULL DEFAULT '',
      name varchar(128) NOT NULL DEFAULT ''
    ) ENGINE=MEMORY;
    

    执行 SPIDER_BG_DIRECT_SQL 示例语句:

    SELECT SPIDER_BG_DIRECT_SQL('SELECT * FROM test.opportunities', 'test.res2', 'srv "backend2", port "3307"')
    AS "Direct Query";
    

    执行 SPIDER_BG_DIRECT_SQL示例语句

    查看结果,就是刚刚 backend2 新加的那条数据:

    SELECT * FROM test.res2;
    

    SPIDER_BG_DIRECT_SQL执行结果

    SPIDER_COPY_TABLES(无果)

    语法:

    SPIDER_COPY_TABLES(spider_table_name, source_link_id, destination_link_id_list [,parameters])
    

    说明:

    此函数可以在不停止 MariaDB service 的情况下,把表数据从source_link_id复制到destination_link_id_list

    如果 spider 表已被分区,那么表名就需要是table_name#P#partition_name格式。

    (to be honest,这两个 id 还没有研究透彻,测试示例会报错,有了解的可以分享一下,谢谢。)

    SPIDER_FLUSH_TABLE_MON_CACHE

    语法:

    SPIDER_FLUSH_TABLE_MON_CACHE()
    

    描述:

    此函数用于刷新监控服务器(monitoring server)的信息。返回 1。

    示例:

    SELECT SPIDER_FLUSH_TABLE_MON_CACHE();
    

    SPIDER_FLUSH_TABLE_MON_CACHE执行结果

    到这里就简单说完 spider 存储引擎的使用了,主要特点就是处理不同的 MariaDB 实例就像在处理同一个实例一样。

    更多的内容,可以去官网学习了解:
    https://mariadb.com/kb/en/spider/

    补充:查看 MariaDB 使用硬盘空间情况

    安装 DISKS 插件:

    INSTALL SONAME 'disks'
    

    使用:

    SELECT * FROM Information_Schema.DISKS
    

    使用disks插件查看mariadb硬盘占用

    限制:

    • MariaDB 10.1.32 加入;
    • 从 MariaDB 10.4.7,MariaDB 10.3.17,MariaDB 10.2.26 和 MariaDB 10.1.41 开始,它需要 FILE 权限;
    • 该插件仅适用于 Linux。

    相关文章

      网友评论

        本文标题:(十五)Spider功能函数说明

        本文链接:https://www.haomeiwen.com/subject/pgmgxktx.html