檢視mysql表分割槽語句
select
partition_name part,
partition_expression expr,
partition_description descr,
table_rows
from
information_schema.partitions
where
table_schema = schema()
and table_name=『表名』;
1.2.
3.4.每天定時新增刪除分割槽
參考 裡面日期應該和檔名差一天,有點問題)
下面是我的:
delimiter $$
usemydb
$$
drop procedure if existscreate_partition_3ahuadan
$$
create procedurecreate_partition_3ahuadan
()
begin
/* 事務回滾,其實放這裡沒什麼作用,alter table是隱式提交,回滾不了的。*/
declare exit handler for sqlexception rollback;
start transaction;
/* 到系統表查出這個表的最大分割槽,得到最大分割槽的日期。在建立分割槽的時候,名稱就以日期格式存放,方便後面維護 /
select replace(partition_name,『p』,』』) into @p12_name from information_schema.partitions
where table_name=『vote_record_memory』 order by partition_ordinal_position desc limit 1;
set @max_date= date(date_add(@p12_name+0, interval 1 day))+0;
set @max_date2= date(date_add(@max_date+0, interval 1 day))+0;
/ 修改表,在最大分割槽的後面增加乙個分割槽,時間範圍加1天 /
set @s1=concat(『alter table vote_record_memory add partition (partition p』,@max_date,』 values less than (to_days (』』』,date(@max_date2),』』』)))』);
/ 輸出檢視增加分割槽語句*/
select @s1;
prepare stmt2 from @s1;
execute stmt2;
deallocate prepare stmt2;
/* 取出最小的分割槽的名稱,並刪除掉 。
注意:刪除分割槽會同時刪除分區內的資料,慎重 /
select partition_name into @p0_name from information_schema.partitions
where table_name=『vote_record_memory』 order by partition_ordinal_position limit 1;
set @s=concat('alter table vote_record_memory drop partition ',@p0_name);
prepare stmt1 from @s;
execute stmt1;
deallocate prepare stmt1;
/ 提交 */
commit ;
end$$
delimiter ;
呼叫參考
delimiter ||
create event partition_3ahuadan_event
on schedule
every 1 day starts 『2018-11-08 00:48:00』
dobegin
call mydb.create_partition_3ahuadan
;
end ||
delimiter ;
解釋:從2018-11-08開始,每天在 00:48:00進行一次呼叫。如果再do之前加上on completion not preserve 則只執行一次(on completion not preserve )
使用這個功能之前必須確保event_scheduler已開啟,可執行
set global event_scheduler = 1;
或set global event_scheduler = on;
來開啟,也可以直接在啟動命令加上「–event_scheduler=1」,例如:
mysqld … --event_scheduler=1
要檢視當前是否已開啟事件排程器,可執行如下sql:
show variables like 『event_scheduler』;
或select @@event_scheduler;
或show processlist;
《Mysql 分區分表》
一 分割槽 分表 為了什麼?當mysql單錶的資料量過大時,資料庫的訪問速度會下降,需要處理大量資料,所以需要把資料分散儲存。常用 水平 切分 二 mysql常見的水平切分方案有哪些?分庫分表 分割槽表 三 分庫分表?把乙個很大的庫 表 的資料分到幾個庫 表 中,每個庫 表 的結構都相同,但他們可以...
分區分表 一
1.為什麼要分表和分割槽?日常開發中我們經常會遇到大表的情況,所謂的大表是指儲存了百萬級乃至千萬級條記錄的表。這樣的表過於龐大,導致資料庫在查詢和插入的時候耗時太長,效能低下,如果涉及聯合查詢的情況,效能會更加糟糕。分表和表分割槽的目的就是減少資料庫的負擔,提高資料庫的效率,通常點來講就是提高表的增...
mysql分片 分割槽 mysql分割槽 分片
range分割槽案例 按照日期的年分表,通過year函式獲取分割槽鍵的具體年份,values less 表示少於1991年的放入p0,類推 時間函式,to days和 to seconds 我當前版本5.5支援 可以讓你更精確的分到天甚至秒.partition p3 values less than...