欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mysql分區(qū)創(chuàng)建與刪除方式

 更新時間:2025年02月11日 09:34:22   作者:Donnedaen  
本文詳細(xì)介紹了如何在MySQL中創(chuàng)建和刪除分區(qū)的實例代碼,通過實際操作示例,幫助讀者理解分區(qū)的創(chuàng)建與管理方法,從而更好地優(yōu)化數(shù)據(jù)庫性能

Mysql分區(qū)創(chuàng)建與刪除

實例代碼

CREATE PROCEDURE `add_table_partition`() 
	COMMENT '增加表分區(qū)' 
BEGIN
	/******************************************************************
	*	Creator:	    Donne
	*	Create Date:	2019-05-29
	*	Description:	增加所有表的分區(qū),分區(qū)類型為p_date_20190529
                        每月最后一天執(zhí)行,生成下一個月所有分區(qū)
	******************************************************************/
   DECLARE  v_table_name varchar(50);
   DECLARE  v_par_name varchar(20);
   DECLARE i int DEFAULT 0; 
   DECLARE no_more int DEFAULT 0;
   ##將表名和分區(qū)名放入游標(biāo)
   DECLARE cursor_employee CURSOR FOR
   SELECT table_name,max(partition_name)
	 FROM information_schema.partitions 
	WHERE table_schema='test' and partition_name is not null and partition_name<>'p_date_min'
    GROUP BY table_name;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more= 1;
  ##打開游標(biāo)
  OPEN cursor_employee;
  FETCH cursor_employee INTO v_table_name,v_par_name;
  ##循環(huán) 1:ture, 0:false,!0:ture,!1:false
  ##select 1 from where !0
  WHILE !no_more DO
      my_loop: LOOP
         ##從當(dāng)前開始
         SET @j:= DATE_ADD(curdate(),INTERVAL i DAY);
         ##下個月最后一天
         SET @end_date:= last_day(DATE_ADD(last_day(curdate()),INTERVAL 1 DAY));
         IF @j > @end_date THEN           
            LEAVE my_loop;
         END IF;
         #計數(shù)
         SET i=i+1;
         #分區(qū)使用values less than,所以+1 
         SET @par_value:= UNIX_TIMESTAMP(DATE_ADD(curdate(),INTERVAL i DAY));
         SET @par_name:= concat('p_date_',date_format(@j,'%Y%m%d'));
         #如果新建分區(qū)大于已有分區(qū),則創(chuàng)建
         IF @par_name>v_par_name THEN
             SET @add_par:= concat('ALTER TABLE ',v_table_name,' ADD PARTITION(PARTITION ',@par_name,' VALUES LESS THAN (',@par_value,'));');
             PREPARE stmt from @add_par;
             EXECUTE stmt;
             DEALLOCATE PREPARE stmt;
         END IF;
      END LOOP;
      #重新計數(shù)
      SET i= 0;
      #從游標(biāo)中取出下一條數(shù)據(jù)
      FETCH cursor_employee INTO v_table_name,v_par_name;
  END WHILE;
  CLOSE cursor_employee;
END 
CREATE PROCEDURE `drop table partition`(
		in start_date date ,
		in end_date date 
) 
	COMMENT '刪除分區(qū)' 
BEGIN
	/******************************************************************
	*	Creator:	    Donne
	*	Create Date:	2019-05-29
	*	Description:	刪除表分區(qū)
	******************************************************************/
   DECLARE  v_table_name varchar(50);
   DECLARE  v_par_name varchar(20);
   DECLARE i int DEFAULT 0; 
   DECLARE no_more int DEFAULT 0;
   ##將表名和分區(qū)名放入游標(biāo)
   DECLARE cursor_employee CURSOR FOR
   SELECT table_name,partition_name
	 FROM information_schema.partitions 
	WHERE table_schema='test' and partition_name is not null and partition_name<>'p_date_min'
      AND partition_name>=concat('p_date_',date_format(end_date,'%Y%m%d'))
      AND partition_name<=concat('p_date_',date_format(end_date,'%Y%m%d'));
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more= 1;
  ##打開游標(biāo)
  OPEN cursor_employee;
  FETCH cursor_employee INTO v_table_name,v_par_name;
  ##循環(huán)
  WHILE !no_more DO
      SET @drop_par:= concat('ALTER TABLE ',v_table_name,' DROP PARTITION ',v_par_name,';');
      PREPARE stmt from @drop_par;
      EXECUTE stmt;
      DEALLOCATE PREPARE stmt;
      FETCH cursor_employee INTO v_table_name,v_par_name;
  END WHILE;
  CLOSE cursor_employee;
END 

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mysql 表空間及索引的查看方法

    mysql 表空間及索引的查看方法

    mysql 表空間及索引的查看方法,需要的朋友可以參考下。
    2011-07-07
  • MySQL數(shù)據(jù)庫遷移data文件夾位置詳細(xì)步驟

    MySQL數(shù)據(jù)庫遷移data文件夾位置詳細(xì)步驟

    這篇文章主要介紹了MySQL數(shù)據(jù)庫遷移data文件夾詳細(xì)步驟,需要的朋友可以參考下
    2014-03-03
  • MySQL四種日志binlog/redolog/relaylog/undolog詳解

    MySQL四種日志binlog/redolog/relaylog/undolog詳解

    undo?log主要存儲的也是邏輯日志,比如我們要insert一條數(shù)據(jù)了,那undo?log會記錄的一條對應(yīng)的delete日志,我們要update一條記錄時,它會記錄一條對應(yīng)相反的update記錄,這篇文章主要介紹了MySQL四種日志binlog/redolog/relaylog/undolog,需要的朋友可以參考下
    2024-08-08
  • MySQL中count(*)、count(1)和count(col)的區(qū)別匯總

    MySQL中count(*)、count(1)和count(col)的區(qū)別匯總

    count()函數(shù)是用來統(tǒng)計表中記錄的一個函數(shù),返回匹配條件的行數(shù),下面這篇文章主要給大家總結(jié)介紹了關(guān)于MySQL中count(*)、count(1)和count(col)的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2018-03-03
  • 淺談MySQL在cmd和python下的常用操作

    淺談MySQL在cmd和python下的常用操作

    下面小編就為大家?guī)硪黄獪\談MySQL在cmd和python下的常用操作。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • MySQL數(shù)據(jù)庫服務(wù)器端核心參數(shù)詳解和推薦配置

    MySQL數(shù)據(jù)庫服務(wù)器端核心參數(shù)詳解和推薦配置

    MySQL手冊上也有服務(wù)器端參數(shù)的解釋,以及參數(shù)值的相關(guān)說明信息,現(xiàn)針對我們大家重點需要注意、需要修改或影響性能 的服務(wù)器端參數(shù),作其用處的解釋和如何配置參數(shù)值的推薦,此事情拖了不少時間,為方便大家?guī)兔m錯
    2011-12-12
  • 詳解MySQL數(shù)據(jù)庫優(yōu)化的八種方式(經(jīng)典必看)

    詳解MySQL數(shù)據(jù)庫優(yōu)化的八種方式(經(jīng)典必看)

    關(guān)于數(shù)據(jù)庫優(yōu)化,網(wǎng)上有不少資料和方法,但是不少質(zhì)量參差不齊,有些總結(jié)的不夠到位,內(nèi)容冗雜。今天給大家分享一篇文章關(guān)于mysql數(shù)據(jù)庫優(yōu)化的八種方式,非常經(jīng)典,需要的的朋友參考下
    2017-03-03
  • 安裝mysql 8.0.17并配置遠(yuǎn)程訪問的方法

    安裝mysql 8.0.17并配置遠(yuǎn)程訪問的方法

    這篇文章主要介紹了安裝mysql 8.0.17并配置遠(yuǎn)程訪問的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • mysql 8.0.11 安裝配置方法圖文教程(win10)

    mysql 8.0.11 安裝配置方法圖文教程(win10)

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.11 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Mysql ID生成策略的三種方法選擇及優(yōu)缺點

    Mysql ID生成策略的三種方法選擇及優(yōu)缺點

    mysql ID生成策略一般常用的有三種,包括自增、UUID 以及雪花算法,本文主要介紹了Mysql ID生成策略的三種方法選擇及優(yōu)缺點,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06

最新評論