始创于2000年 股票代码:831685
咨询热线:0371-60135900 注册有礼 登录
  • 挂牌上市企业
  • 60秒人工响应
  • 99.99%连通率
  • 7*24h人工
  • 故障100倍补偿
您的位置: 网站首页 > 帮助中心>文章内容

MySQL5.5 自动分区脚本

发布时间:  2012/7/10 17:52:58

一、使用说明:

1.此脚本为分区后,定时自动增加分区.(被自动分区的表,一定要先手动分几个区)

2.每隔15天,定时器会执行一个存储过程,对分区日期最后的那天再往后新增15个分区.

3.Script里面Auto_partitions.sql 为存储过程

4.Script里面Timer_event.sql 为定时事件脚本
 

5.MySQL5.5默认并没有开启EVENT机制,需要在my.cnf文件中添加[mysqld] event_scheduler= ON

7.增加打开文件上线.这个很重要.open_files_limit = 5000

二、分区脚本

1.DELIMITER || 
2.DROP PROCEDURE IF EXISTS create_Partition ||  3.CREATE PROCEDURE create_Partition (IN databaseName VARCHAR(50),IN tableName VARCHAR(50))  4.L_END:BEGIN       5.     DECLARE MAX_PARTITION_DESCRIPTION VARCHAR(255) DEFAULT 0;  6.     DECLARE P_NAME VARCHAR(255) DEFAULT 0;         7.     DECLARE P_DESCRIPTION VARCHAR(255) DEFAULT 0;     8.     DECLARE i INT DEFAULT 1;  9.     DECLARE ISEXIST_PARTITION VARCHAR(255) DEFAULT 0;   10.     SELECT PARTITION_NAME INTO ISEXIST_PARTITION FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = databaseName AND TABLE_NAME = tableName  LIMIT 1 ;  11.       
12.     IF ISEXIST_PARTITION <=> "" THEN  13.       SELECT "Partition table not is exist" AS "*****ERROR*****";  14.       LEAVE  L_END; 
15.     END IF;  16.  
17.     SELECT partition_description INTO MAX_PARTITION_DESCRIPTION  FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = databaseName AND TABLE_NAME = tableName ORDER BY partition_description DESC LIMIT 1;  18.        
19.        
20.     IF MAX_PARTITION_DESCRIPTION <=> "" THEN  21.       SELECT "Partition table is error" AS "*****ERROR*****";  22.       LEAVE  L_END; 
23.     END IF;  24. 
25.       
26.    SET MAX_PARTITION_DESCRIPTION = REPLACE(MAX_PARTITION_DESCRIPTION, '\'', '');  27.    WHILE i <= 15 DO 
28.           SET P_DESCRIPTION = adddate(MAX_PARTITION_DESCRIPTION, INTERVAL i day);  29.           SET P_NAME = REPLACE(P_DESCRIPTION, '-', '');  30.           SET @S=CONCAT('ALTER TABLE ',tableName,' ADD PARTITION  (PARTITION p',P_NAME,' VALUES LESS THAN (\'',P_DESCRIPTION,'\'))');  31.           SELECT @S;  32.           PREPARE stmt2 FROM @S;  33.           EXECUTE stmt2;  34.           DEALLOCATE PREPARE stmt2;  35.           SET i = i + 1 ;  36.    END WHILE;            37.END L_END;||  38.DELIMITER ; 


# 其中传入参数databaseName为数据库名,参数tableName为表名.

三、添加事件处理  

1.DELIMITER || 
2.CREATE EVENT auto_set_partitions  3.          ON SCHEDULE  4.          EVERY 15 DAY   5.          DO 
6.      BEGIN  7.          CALL create_Partition('database_name','table_name');  8.         /* 如果需要向多个表分区,可以写多个 CALL 调用   
9.          CALL create_Partition('database_name','table_name');  10.        */ 
11. END ||  12.DELIMITER ; 


这个事件每隔15天执行一次


本文出自:亿恩科技【www.enkj.com】

服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]

  • 您可能在找
  • 亿恩北京公司:
  • 经营性ICP/ISP证:京B2-20150015
  • 亿恩郑州公司:
  • 经营性ICP/ISP/IDC证:豫B1.B2-20060070
  • 亿恩南昌公司:
  • 经营性ICP/ISP证:赣B2-20080012
  • 服务器/云主机 24小时售后服务电话:0371-60135900
  • 虚拟主机/智能建站 24小时售后服务电话:0371-60135900
  • 专注服务器托管17年
    扫扫关注-微信公众号
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 亿恩科技 版权所有  地址:郑州市高新区翠竹街1号总部企业基地亿恩大厦  法律顾问:河南亚太人律师事务所郝建锋、杜慧月律师   京公网安备41019702002023号
      0
     
     
     
     

    0371-60135900
    7*24小时客服服务热线