zoukankan      html  css  js  c++  java
  • mysql中对数据库的每个表执行优化的存储过程

    说明:此处为《高性能mysql(第二版)》中的示例代码,除了数据库名 其他未经更改。仅供学习及参考

    对数据库的每个表执行优化的存储过程

    CREATE PROCEDURE `inventory`.`optimize_table` (db_name VARCHAR(64))
    BEGIN
     DECLARE t VARCHAR(64);
     DECLARE done INT DEFAULT 0;
     DECLARE c CURSOR FOR
      SELECT table_name FROM INFORMATION_SCHEMA.TABLES
      WHERE TABLE_SCHEMA=db_name AND TABLE_TYPE='BASE TABLE';
     DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
     OPEN c;
     tables_loop:LOOP
      FETCH c INTO t;
      IF done THEN
       CLOSE c;
       LEAVE tables_loop;
      END IF;
      SET @stmt_text:=CONCAT("OPTIMIZE TABLE ",db_name,'.',t);
      PREPARE stmt FROM @stmt_text;
      EXECUTE stmt;
      DEALLOCATE PREPARE stmt;
     END LOOP;
     CLOSE c;
    END

    语句2:

    CREATE PROCEDURE `inventory`.`optimize_tables2` (db_name VARCHAR(64))
    BEGIN
     DECLARE t VARCHAR(64);
     DECLARE done INT DEFAULT 0;
     DECLARE c CURSOR FOR
      SELECT table_name FROM INFORMATION_SCHEMA.TABLES
      WHERE TABLE_SCHEMA=db_name AND TABLE_TYPE='BASE TABLE';
     DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
     OPEN c;
     REPEAT
      FETCH c INTO t;
      IF NOT done THEN
       SET @stmt_text:=CONCAT("OPTIMIZE TABLE ",db_name,'.',t);
       PREPARE stmt FROM @stmt_text;
       EXECUTE stmt;
       DEALLOCATE PREPARE stmt;
      END IF;
     UNTIL done END REPEAT;
     CLOSE c;
    END

    调用时为call optimize_tables2('库名');

    或者

    call optimize_tables('库名');

  • 相关阅读:
    Spring MVC的Controller统一异常处理:HandlerExceptionResolver
    Log4j按级别输出日志到不同文件配置
    Linux top命令用法
    free -m内存使用详解
    Linux运维中遇到的常见问题
    ubuntu16.04 nginx安装
    redis主从配置及主从切换
    Redis持久化配置-AOF
    如何处理消极想法
    libevent安装总结
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3367656.html
Copyright © 2011-2022 走看看