本文主要是介绍日常工作优化数据较大数据、提升表分区,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
作者官方网站:http://www.wxl568.cn
##查询自己表分区情况
select
partition_name part,
partition_expression expr,
partition_description descr,
table_rows
from information_schema.partitions where
table_schema = schema()
and table_name='tt_clock_log_partition';
CREATE TABLE `tt_clock_log_partition` (
`ID` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`EMP_CODE` VARCHAR(20) NOT NULL COMMENT '工号',
`EQUIPMENT_NO` VARCHAR(255) NOT NULL COMMENT '设备编码',
`MAC_ADDRESS` VARCHAR(50) NULL DEFAULT NULL COMMENT 'MAC地址(IOS丰声无法获取)',
`CLOCK_TIME` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '打卡时间',
`LONGITUDE` DOUBLE NOT NULL COMMENT '经度',
`LATITUDE` DOUBLE NOT NULL COMMENT '纬度',
`ADDRESS_ID` BIGINT(20) NULL DEFAULT NULL COMMENT '打卡物理地点ID(外勤打卡的情况下为空)',
`STATUS` TINYINT(4) NOT NULL DEFAULT '1' COMMENT '状态1、成功 2、待审核 3、已提交ECP 4、失败',
`PERSON_TYPE` TINYINT(4) NOT NULL DEFAULT '1' COMMENT '1为SAP,2为PMP',
`REMARK` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注',
`OUTSIDE_CLOCK_ADDRESS` VARCHAR(255) NULL DEFAULT NULL COMMENT '外勤打卡地址',
`SYNC_STATUS` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '是否已经同步,0为未同步,1为同步成功,2为同步失败,3为准备同步,4为同步中',
`SYNC_TM` DATETIME NULL DEFAULT NULL COMMENT '同步时间',
`mobile_Root` INT(1) NULL DEFAULT NULL COMMENT '是否越狱/root权限 0代表正常/1代表root/2代表没有获取到',
`phone_Mode` INT(1) NULL DEFAULT NULL COMMENT '0代表安卓/1代表ios',
`RUN_ID` VARCHAR(50) NULL DEFAULT NULL COMMENT 'ECP流程_RUN_ID',
`ECP_STATUS` VARCHAR(10) NULL DEFAULT NULL COMMENT 'ECP回调状态 2(归档)、4(撤销)、5(驳回到发起节点)、10(删除)',
`SYNC_FAIL_NUM` TINYINT(4) NULL DEFAULT '0' COMMENT '同步失败次数',
`CREATE_TM` DATETIME NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`BRAND_TYPE` VARCHAR(100) NULL DEFAULT NULL,
`RESERVE1` VARCHAR(100) NULL DEFAULT NULL,
`RESERVE2` VARCHAR(100) NULL DEFAULT NULL,
`RESERVE3` VARCHAR(100) NULL DEFAULT NULL,
`sapEtl` INT(4) NULL DEFAULT '0',
`RESERVE4` VARCHAR(100) NULL DEFAULT NULL COMMENT '备用4状态',
`partition_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`ID`,`partition_date`),
INDEX `IDX_TT_CLOCK_LOG_TIME_EMP` (`CLOCK_TIME`, `EMP_CODE`),
INDEX `IDX_TT_CLOCK_LOG_EMP` (`EMP_CODE`, `CLOCK_TIME`) USING BTREE
)
COMMENT='GPS打卡记录表'
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=1750125
/*!50100 PARTITION BY RANGE (to_days(partition_date))
(PARTITION p20190607 VALUES LESS THAN (737509) ENGINE = InnoDB,
PARTITION p20190608 VALUES LESS THAN (737510) ENGINE = InnoDB,
PARTITION p20190609 VALUES LESS THAN (737511) ENGINE = InnoDB,
PARTITION p_tt_clock_log_par20190610 VALUES LESS THAN (737573) ENGINE = InnoDB) */;
计算表分区当前分区
ALTER TABLE tt_clock_log_par ADD PARTITION (PARTITION p_tt_clock_log_par20190611 VALUES LESS THAN (TO_DAYS ('2019-06-13')));
-------------最好创建10天以上的分区
BEGIN
-- sql 执行打卡同步归档数据储过程
set @c_table='tt_clock_log_par';
set @c_day=DATE_SUB(curdate(),INTERVAL -2 DAY);
set @p_c_day=DATE_FORMAT(DATE_SUB(curdate(),INTERVAL -1 DAY),'%Y%m%d');
set @p_name=concat('p_',@c_table,@p_c_day);
set @p_sql=concat('ALTER TABLE ',@c_table,' ADD PARTITION (PARTITION ',@p_name,' VALUES LESS THAN (TO_DAYS ("',@c_day,'")))');
select @p_sql;
PREPARE auto_create_partion from @p_sql;
execute auto_create_partion;
END
这篇关于日常工作优化数据较大数据、提升表分区的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!