314598340 发表于 2019-1-20 13:22:13

zabbix history分区 or TokuDB

BEGIN  

  
      DECLARE done INT DEFAULT FALSE;
  
      DECLARE drop_part_name VARCHAR(16);
  

  

  
      DECLARE myCursor CURSOR FOR
  
                SELECT partition_name
  
                FROM information_schema.partitions
  
                WHERE table_schema = SCHEMANAME AND TABLE_NAME = TABLENAME AND CAST(SUBSTRING(partition_name FROM 2) AS UNSIGNED) < DELETE_BELOW_PARTITION_DATE;
  
      DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
  

  

  
      SET @alter_header = CONCAT("ALTER TABLE ", SCHEMANAME, ".", TABLENAME, " DROP PARTITION ");
  
      SET @drop_partitions = "";
  

  

  
      OPEN myCursor;
  
      read_loop: LOOP
  
                FETCH myCursor INTO drop_part_name;
  
                IF done THEN
  
                        LEAVE read_loop;
  
                END IF;
  
                SET @drop_partitions = IF(@drop_partitions = "", drop_part_name, CONCAT(@drop_partitions, ",", drop_part_name));
  
      END LOOP;
  
      IF @drop_partitions != "" THEN
  

  
                SET @full_sql = CONCAT(@alter_header, @drop_partitions, ";");
  
                PREPARE STMT FROM @full_sql;
  
                EXECUTE STMT;
  
                DEALLOCATE PREPARE STMT;
  

  
                SELECT CONCAT(SCHEMANAME, ".", TABLENAME) AS `table`, @drop_partitions AS `partitions_deleted`;
  
      ELSE
  

  
                SELECT CONCAT(SCHEMANAME, ".", TABLENAME) AS `table`, "N/A" AS `partitions_deleted`;
  
      END IF;
  
END


页: [1]
查看完整版本: zabbix history分区 or TokuDB