mysql 創建分區表_Mysql分區表及自動創建分區Partition

Range分區表建表語句如下,其中分區鍵必須和id構成主鍵和唯一鍵

CREATE TABLE `test1` (

`id` char(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ‘自增主鍵(guid)‘,

`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘創建時間‘,

`partition_key` int(8) NOT NULL COMMENT ‘分區鍵(格式:yyyyMMdd)‘,

PRIMARY KEY (`id`,`partition_key`),

UNIQUE KEY `id_UNIQUE` (`id`,`partition_key`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

PARTITION BY RANGE (partition_key)

(PARTITION p0 VALUES LESS THAN (20180619) ENGINE = InnoDB,

PARTITION p20180619 VALUES LESS THAN (20180620) ENGINE = InnoDB,

PARTITION p20180621 VALUES LESS THAN (20180622) ENGINE = InnoDB,

PARTITION p20180622 VALUES LESS THAN (20180623) ENGINE = InnoDB,

PARTITION p20180623 VALUES LESS THAN (20180624) ENGINE = InnoDB);

新增分區

alter TABLE `test1` add PARTITION(

PARTITION p20180629 VALUES LESS THAN (20180630) ENGINE = InnoDB

);

刪除分區

alter table `test1` drop PARTITION p20180629;

Mysql不能自動創建分區,需要使用mysql event事件的方式自動創建分區

1.創建分區的存儲過程如下(每次執行先校驗當前分區是否存在,如果存在則不處理;不存在則創建):

DELIMITER $$

#該表所在數據庫名稱

USE `demo`$$

DROP PROCEDURE IF EXISTS `create_partition_by_day`$$

CREATE PROCEDURE `create_partition_by_day`(IN_SCHEMANAME VARCHAR(64), IN_TABLENAME VARCHAR(64))

BEGIN

#當前日期存在的分區的個數

DECLARE ROWS_CNT INT UNSIGNED;

#目前日期,為當前日期的后一天

DECLARE TARGET_DATE TIMESTAMP;

#分區的名稱,格式為p20180620

DECLARE PARTITIONNAME VARCHAR(9);

#當前分區名稱的分區值上限,即為 PARTITIONNAME + 1

DECLARE PARTITION_ADD_DAY VARCHAR(9);

SET TARGET_DATE = NOW() + INTERVAL 1 DAY;

SET PARTITIONNAME = DATE_FORMAT( TARGET_DATE, ‘p%Y%m%d‘ );

SET TARGET_DATE = TARGET_DATE + INTERVAL 1 DAY;

SET PARTITION_ADD_DAY = DATE_FORMAT( TARGET_DATE, ‘%Y%m%d‘ );

SELECT COUNT(*) INTO ROWS_CNT FROM information_schema.partitions

WHERE table_schema = IN_SCHEMANAME AND table_name = IN_TABLENAME AND partition_name = PARTITIONNAME;

IF ROWS_CNT = 0 THEN

SET @SQL = CONCAT( ‘ALTER TABLE `‘, IN_SCHEMANAME, ‘`.`‘, IN_TABLENAME, ‘`‘,

‘ ADD PARTITION (PARTITION ‘, PARTITIONNAME, " VALUES LESS THAN (",

PARTITION_ADD_DAY ,") ENGINE = InnoDB);" );

PREPARE STMT FROM @SQL;

EXECUTE STMT;

DEALLOCATE PREPARE STMT;

ELSE

SELECT CONCAT("partition `", PARTITIONNAME, "` for table `",IN_SCHEMANAME, ".", IN_TABLENAME, "` already exists") AS result;

END IF;

END$$

DELIMITER ;

2.數據庫定時任務(每小時執行一次)

DELIMITER $$

#該表所在的數據庫名稱

USE `demo`$$

CREATE EVENT IF NOT EXISTS `daily_generate_partition`

ON SCHEDULE EVERY 1 hour #執行周期,還有天、月等等

STARTS ‘2018-06-20 00:00:00‘

ON COMPLETION PRESERVE

ENABLE

COMMENT ‘Creating partitions‘

DO BEGIN

#調用剛才創建的存儲過程,第一個參數是數據庫名稱,第二個參數是表名稱

CALL datacollectcenter.create_partition_by_day(‘demo‘,‘test1‘);

END$$

DELIMITER ;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/542735.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/542735.shtml
英文地址,請注明出處:http://en.pswp.cn/news/542735.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python下載文件暫停恢復_Python關于Threading暫停恢復解決辦法

我們都知道python中可以是threading模塊實現多線程, 但是模塊并沒有提供暫停, 恢復和停止線程的方法, 一旦線程對象調用start方法后, 只能等到對應的方法函數運行完畢. 也就是說一旦start后, 線程就屬于失控狀態. 不過, 我們可以自己實現這些. 一般的方法就是循環地判斷一個標志…

信息系統狀態過程圖_過程狀態圖中使用的重要術語| 操作系統

信息系統狀態過程圖1)上下文切換 (1) Context Switching) Whenever a process is transferred within the system, it moves within different states. These states are known as the process states. When a process goes from one state to another state inside the system…

mysql 吧庫下的表名都加_mysql數據庫表名大小寫問題

mysql數據庫表名大小寫問題mysql數據庫linux版本表名、字段名默認大小寫敏感,即區分大小寫。查看mysql有關大小寫參數:lower_case_file_system是一個只讀參數,無法被修改,這個參數是用來告訴你在當前的系統平臺(linux\windows等)下…

rgb 灰色_金屬+RGB+無線,我要買爆這款海盜船VIRTUOSO鑒賞家游戲耳機

海盜船最近新出的旗艦耳機,VIRTUOSO RGB Wireless SE,中文名叫鑒賞家。耳機一改往日歐美電競風,改走金屬質感高大上簡約風,不過講真,這顏值我吃起來很香。考慮文章過長,我先概括一下入手理由,具…

python 基類 派生類_在Python中具有兩個子(派生)類的繼承示例

python 基類 派生類In this program, we have a parent class named Details and two child classes named Employee and Doctor, we are inheritance the class Details on the classes Employee and Doctor. And, finally creating two objects of Employee and Doctor class…

連接postgresql

# psycopg2enginecreate_engine(postgresqlpsycopg2://scott:tigerlocalhost/mydatabase)#python 連接postgresql使用psycopg2作為默認的DBAPIThe first time a method like Engine.execute()orEngine.connect()is called, the Engine establishes a real DBAPI connection to …

n的階乘程序python_Python程序對N階乘的尾隨零進行計數

n的階乘程序pythonFormula used: 使用的公式: Trailing 0s in N! Count of 5s in prime factors of n! floor(n/5) floor(n/25) floor(n/125) ....Example: 例: Input: N 23Output: 4Factorial of 23 is 25852016738884976640000 which has four …

c mysql使用場景_Mysql 場景

1個SQL題,1個場景題,會有點難度!SQL題該SQL題大量涉及到row_number,case when,group by等高級用法,有一定的實用價值,總結出來,供日后參考Question.1:分組匯總給定篩選條…

以己為壑

2019獨角獸企業重金招聘Python工程師標準>>> 今天把軟件工程里面關于面向對象的設計學完了,使我對面向對象OOA和OOD的思想有了進一步的認識,各科知識千溝萬壑,犬牙交錯,的確是這樣,能蒙住自己眼的永遠是你自己,而不是這個世界,因為美就在那里;裹住自己雙足的的永遠是…

macos安裝vscode_如何使用VSCode進行PostgreSQL開發及調試

Visual Studio Code (VSCode)是一個輕量級但功能強大的源代碼編輯器,可在桌面上運行,適用于Windows,macOS和Linux。 它內置了對JavaScript,TypeScript和Node.js的支持,并具有豐富的其他語言(如C,C&#xff…

最小生成樹 kruskal_使用Kruskal算法求解Java最小生成樹問題

最小生成樹 kruskalIn Electronic Circuit we often required less wiring to connect pins together. We can model this wiring problem with a connected, undirected graph G(V, E), where V is the set of pins, E is the set of possible interconnections between pair …

mysql數據庫面試題 軟件測試_軟件測試數據庫面試題一

前提本次分享只局限于 sql server 和 mysql 這兩種數據庫,其他數據庫暫不總結正文1. 對查詢的字段進行去重(distinct)用法注意:1. distinct【查詢字段】,必須放在要查詢字段的開頭,即放在第一個參數;2. 只能在SELECT 語…

python數碼時鐘代碼_python時鐘的實現

from time importsleepimporttimeimportosclassClock(object):"""數字時鐘""" def __init__(self, hour0, minute0, second0):"""初始化方法 :param hour: 時 :param minute: 分 :param second: 秒"""self._hourh…

PHP頁面跳轉

本文轉載自:http://blog.sina.com.cn/s/blog_9a06890901014ol1.html PHP頁面跳轉一、header()函數 header函數中Location類型的標頭是一種特殊的header調用,常用來實現頁面跳轉 注意:1、location和“:”號間不能有空格,否則不會跳…

如何打印出給定尺寸的方格_打印給定號碼的表格| 8086微處理器

如何打印出給定尺寸的方格Problem statement: 問題陳述: Write an assembly language program in 8086 to print the table of a given integer. 在8086中編寫匯編語言程序以打印給定整數的表。 Assumptions: Suppose the inputted number is at memory location …

python自動更新excel數據_如何更新Excel數據?(刷新所有查詢)

我有一個帶有一些查詢的Excel xlsm文件。目前我每天打開它,點擊“數據”選項卡中的“全部刷新”命令。我希望這件事能自動完成。我用python編寫了一個腳本(我是python新手)。問題是,刷新數據并保存Excel文件后,刷新的數據不可見(我知道刷新工…

mongoDB 使用手冊

2019獨角獸企業重金招聘Python工程師標準>>> 1、基本操作db.AddUser(username,password) 添加用戶db.auth(usrename,password) 設置數據庫連接驗證db.cloneDataBase(fromhost) 從目標服務器克隆一個數據庫db.commandHelp(name) returns the help for the commanddb.…

android搜索框功能實現_巧用 Trie 樹,實現搜索引擎關鍵詞提示功能

來源 | 碼海責編 | Carol封圖 | CSDN 付費下載于視覺中國我們幾乎每天都在用搜索引擎搜索信息,相信大家肯定有注意過這樣一個細節:當輸入某個字符的時候,搜索引框底下會出現多個推薦詞,如下,輸入「python」后,底下會出…

Python | 從用戶輸入數據,保存到文件,讀取并打印

Here, we have to input the data from the user, to read the data from user, we use input() method, and then the input data we have to store in the file by using write() method and then by using read() method we can get the data. 在這里,我們必須從…

python語句print type 1234的輸出結果是_Python語句 print(type(1J))的輸出結果是

【填空題】遍歷輸出文件所有行。 fopen("d:\\r2.txt","r") while True: str print(str,end) if not str: break f.close()【單選題】執行下列 Python語句將產生的結果是( ) i1 if (i): print(True) else: print( False)【單選題】Python語句 print(type(1/…