有时我们需要保存大量数据,而这些数据是有时效性的,例如一些日志,在经过一段周期以后,这些数据存在的意义就不大了,除了占用大量的硬盘空间外还可能使数据查询变得缓慢。这些数据需要定时清除。我们可以采用表水平分割的方式(或分库分表)应对这种情况,但是水平分割表更适合具有大量查询或需要长期保存数据的情况。在某些情况下,我们数据的查询量并不大且表数据在单机情况下能满足系统需要,这时候Mysql分区表更适合。
首先创建分区表创建存储过程,并将其命名为:create_log_partition
BEGIN
select replace(partition_name,'device_log_','') into @PName from INFORMATION_SCHEMA. PARTITIONS where table_name = 'device_log' order by partition_ordinal_position desc limit 1;
IF isnull(@PName) THEN
select min(days) into @minDay from device_log;
select max(days) into @maxDays from device_log;
SET @partStr='';
WHILE @minDay <= @maxDays DO
SET @partStr = CONCAT(
@partStr,
'PARTITION device_log_' ,@minDay,
' VALUES in (' ,@minDay,
') ,'
)