第一步: 创建分区的 表
引用
DROP TABLE IF EXISTS `t_jy0`;
CREATE TABLE `t_jy0` (
`id` bigint(50) NOT NULL AUTO_INCREMENT,
`creatortime` datetime(6) NOT NULL COMMENT '速度设定',
`P2101002001` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '挤压数量',
`P2101002002` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '主缸位移',
`P2101002003` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '主缸压力',
`P2101002004` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '成品长度',
`P2101002005` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '运行信号',
`P2101002006` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
PRIMARY KEY (`f_sn`, `f_creatortime`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 367470 CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic
PARTITION BY RANGE COLUMNS(f_creatortime) (PARTITION d_plc620201101 VALUES LESS THAN ('2019-12-01 08:00:00'))
第二步:定时事件添加分区过程
引用
CREATE DEFINER=`root`@`%` PROCEDURE `createPartition`(tableName varchar(50))
begin
-- 计算下下个月1日的日期表达式(每个月1日做下下个月的分区)
set @pName = concat(year(adddate(now(),interval 2 month)),'-',right(concat('0',month(adddate(now(),interval 2 month))),2),'-01 01:00:00');
set @pMonth = concat(year(adddate(now(),interval 2 month)),right(concat('0',month(adddate(now(),interval 2 month))),2));
set @sqlStr = concat("alter table ",tableName," add partition ( partition ",tableName,"_",@pMonth," values less than('",@pName,"'));");
PREPARE create_stmt from @sqlStr;
EXECUTE create_stmt;
-- select @sqlStr;
end
----------------------------------------------
优化清理
引用
show table status like 'table_name';
查询结果中:
Index_length 代表索引的数量
Data_free 代表碎片数量
然后执行下面命令进行优化整理:
引用
mysql > optimize table table_name
-------------------------------------------------
查看数据库连接:
引用
show processlist;
------------------------------------------------
分享到:
相关推荐
- **分区功能增强**:增强了表分区功能,支持更多类型的分区策略,有助于大型数据表的管理和查询性能提升。 - **性能提升**:包括更快的查询解析、优化的索引处理和内存管理,以及对多核处理器更好的支持。 - **...
2. **分区功能增强**:MySQL 5.1支持更多的分区类型,如线性哈希、范围、列表等,这有助于大型数据集的管理和查询性能提升。 3. **复制功能改进**:添加了半同步复制(Semi-Synchronous Replication),确保至少一...
5. **定期维护**:定期进行数据库维护,如重建索引,清理无用数据,避免数据碎片。 6. **负载均衡与分区策略**:对于大型系统,可以考虑使用读写分离、数据库分片等技术来分散负载,降低单个数据库服务器的压力。 ...
定期执行OPTIMIZE TABLE命令整理表碎片,提高磁盘空间利用率。清理不再需要的临时表和日志,以释放资源。定期分析并更新统计信息,帮助MySQL做出更好的查询计划。 七、分区与分表 对于大数据量的表,可以考虑使用...
- **定期重建索引**:清理碎片,恢复索引性能。 - **分析表统计信息**:使用ANALYZE TABLE更新统计信息,帮助优化器做出更好的决策。 - **删除无用的数据和备份**:保持数据库整洁,减少不必要的资源占用。 7. *...
7. **定期维护**:执行定期的数据库维护任务,如ANALYZE TABLE更新统计信息,OPTIMIZE TABLE整理碎片,以及定期清理无用的数据和日志。 8. **慢查询日志**:开启慢查询日志,记录执行时间过长的查询,以便分析和...
5. **定期维护**:定期执行OPTIMIZE TABLE,清理碎片,保持表的最佳状态。 6. **监控与分析**:使用MySQL内置的Performance Schema或第三方工具进行性能监控和分析。 7. **主从复制**:通过读写分离,减轻主库负担,...
5. 数据库分区:对于大数据量的表,可以采用分区策略来分散I/O负载。 6. 使用慢查询日志:记录执行时间过长的查询,便于分析优化。 7. 定期维护:定期执行analyze table,更新统计信息;清理无用的临时表和日志。 ...
包括清理无用的记录,分析表统计信息,以及重建索引以消除碎片。还可以通过慢查询日志来识别并优化运行缓慢的查询。 综上所述,MySQL性能优化是一个综合性的任务,涉及到索引设计、查询优化、架构调整、参数配置和...
2. 分区与分表:对于非常大的表,可以考虑分区或分表策略,将数据分散到多个物理存储上,提高I/O效率。 三、存储引擎优化 1. 选择合适的存储引擎:InnoDB引擎支持事务处理,适合需要高并发读写的情况;MyISAM则适合...
15. **定期分析与优化表**:ANALYZE TABLE和OPTIMIZE TABLE可帮助收集统计信息,调整分区和碎片。 16. **合理设置数据库参数**:如innodb_buffer_pool_size、max_connections等,根据服务器硬件和业务需求进行调整...
7. **适当分区**:对大数据表进行水平或垂直分区,可以提高查询速度和管理效率。 8. **合理设置缓存**:增大innodb_buffer_pool_size以缓存数据和索引,减少磁盘I/O。 9. **限制连接数**:调整max_connections,...
3. 使用分区策略,将大表分为多个逻辑部分,便于管理和清理。 4. 设置合理的记录版本和事务保留时间,减少InnoDB的undo空间占用。 在日常维护中,定期监控数据库的大小和性能,配合自动化脚本进行定期备份和清理,...
当执行`OPTIMIZE TABLE`命令时,如果MySQL发现表没有任何需要优化的地方,例如表未曾被修改、没有碎片、所有索引都已经是最优状态,那么就会返回“Table is already up to date”的信息。 以下是一些可能导致...
9. **定期维护**:定期进行OPTIMIZE TABLE操作,清理碎片,保持表的良好状态。 深入学习官方文档,你将能掌握MySQL的更多高级特性,如物化视图、触发器、存储过程等,以及如何在特定场景下有效地应用它们。此外,...
- 定期清理不再需要的临时表和日志文件,释放磁盘空间。 9. **查询缓存** - 开启查询缓存(`query_cache_type`),对于不变的查询,可以显著提升响应速度。 - 注意,查询缓存可能并不适合所有情况,对于频繁更新...
- 清理无用的临时表和日志,释放被占用的内存。 8. **使用InnoDB存储引擎**: - InnoDB存储引擎在内存管理上更为高效,它使用内存池来缓存数据和索引,而且支持事务处理和行级锁定,可能更适合资源有限的环境。 ...
18. **使用分区表**:对于大数据量的表,考虑使用分区策略,可以提高数据的读取速度。 19. **维护适当的统计信息**:定期更新统计信息,使MySQL能够做出更准确的查询计划。 20. **定期清理无用数据**:定期删除...
同时,如果`Qcache_free_blocks`较大,可能存在大量的缓冲区碎片,可能需要调整`query_cache_size`并考虑定期清理。可以通过设置`query_cache_type`来开启或关闭查询缓存。 再者,`table_cache`参数用于设置表高速...
25. **使用分区表**:对于大数据量的表,可以提高查询速度。 26. **限制连接数**:过多的连接可能导致资源耗尽,合理设置最大连接数。 27. **避免过度依赖临时表**:使用临时表时要考虑其内存和磁盘空间的影响。 ...