对现有的一个表进行创建分区表,并把数据迁移到新表,可以按时间来分区,然后这表不是实时更新,每天有一次插入操作。
时间比较充裕,但是服务器上有其他应用,使用较小资源为主要方式。
操作方式
@1 可以使用ALTER TABLE来进行更改表为分区表,这个操作会创建一个分区表,然后自动进行数据copy然后删除原表,
猜测服务器资源消耗比较大。
类似操作
ALTER TABLE tbl_rtdata PARTITION BY RANGE (Month(fld_date))
(
PARTITION p_Apr VALUES LESS THAN (TO_DAYS('2012-05-01')),
PARTITION p_May VALUES LESS THAN (TO_DAYS('2012-06-01')),
PARTITION p_Dec VALUES LESS THAN MAXVALUE );
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
@2 新建一个和原来表一样的分区表,然后把数据从原表导出,接着倒入新表。
(原来的表主键只有id,而我的分区字段是 stsdate, 这里主键要修改为 id,stsdate 联合主键,分区表要求分区字段要是主键或者是主键的一部分)
操作过程
采用第二种方案。先创建分区表,然后导出原表数据,新表名称改为原表名,然后插入,最后建立普通索引。
建立分区表
CREATE TABLE `apdailysts_p` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`ap_id` INT(11) NOT NULL,
`mac` VARCHAR(17) NOT NULL,
`liveinfo` LONGTEXT NOT NULL,
`livetime` INT(11) NOT NULL,
`stsdate` DATE NOT NULL,
`lastmodified` DATETIME NOT NULL,
PRIMARY KEY (`id`, `stsdate`)
)
PARTITION BY RANGE COLUMNS(stsdate) (
PARTITION p0 VALUES LESS THAN ('2016-06-01'),
PARTITION p1 VALUES LESS THAN ('2016-07-01'),
PARTITION p2 VALUES LESS THAN ('2016-08-01'),
PARTITION p3 VALUES LESS THAN ('2016-09-01'),
PARTITION p4 VALUES LESS THAN ('2016-10-01'),
PARTITION p5 VALUES LESS THAN ('2016-11-01'),
PARTITION p6 VALUES LESS THAN ('2016-12-01'),
PARTITION p7 VALUES LESS THAN ('2017-01-01'),
PARTITION p8 VALUES LESS THAN ('2017-02-01'),
PARTITION p9 VALUES LESS THAN ('2017-03-01'),
PARTITION p10 VALUES LESS THAN ('2017-05-01'),
PARTITION p11 VALUES LESS THAN ('2017-06-01'),
PARTITION p12 VALUES LESS THAN ('2017-07-01'),
PARTITION p13 VALUES LESS THAN ('2017-08-01'),
PARTITION p14 VALUES LESS THAN ('2017-09-01'),
PARTITION p15 VALUES LESS THAN MAXVALUE
);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
导出数据
mysqldump -u dbname -p --no-create-info dbname apdailysts > apdailysts.sql
- 1
- 1
修改表名,导入数据(10分钟就导入完了,200w, 8g多一点数据),测试下ok,删除原来的表。
测试可以正常使用,收工,观察2天。。
– 10.16
通过这两天的观察,页面的查询速度从打不开到基本可以秒开的速度了,这个优化是成立的。
相关推荐
在本篇文章中,我们将讨论如何在MySQL中对已存在的表进行分区操作,特别是新增分区。 首先,尝试直接通过`ALTER TABLE`语句添加分区到非分区表会导致错误,MySQL会返回`ERROR 1505 <HY000>: Partition management ...
在需要对历史数据进行深度分析时,将MySQL的数据同步到ClickHouse可以显著提升查询效率。 **1. 数据同步方案** - **binlog同步**: 利用MySQL的二进制日志(binlog)进行实时数据同步。例如,可以使用`Maxwell`或`...
python3.7.4版本,文件包含excel文件和py文件。 py文件中需要手动设置excel字段在mysql中的类型、index索引及写入时校验的字段...执行py文件,若不存在数据库及表会自动创建,并写入数据(对于指定字段重复的不会写入)
7. **批量操作**:对已有表进行分区调整或对多个表同时进行分区操作。 总之,"数据库表分区工具1.2"是数据库管理员和开发者的实用工具,它通过自动化和简化分区表的创建过程,提升了工作效率,同时也为大规模数据...
5. **分区与分表**:对大表进行分区或分片可以分散I/O负载,提高查询效率。水平分区(分片)是将数据分布在多个物理服务器上,垂直分区是将表的列按功能划分为不同的表。 6. **缓存策略**:MySQL的查询缓存可以缓存...
4. **分区表优化**:8.4.0 可能包含对分区表的改进,提高了查询效率和维护速度,特别是在大型数据集上。 5. **原子DDL**:MySQL 8.x 提供了原子的数据库模式更改,这意味着数据定义语言(DDL)操作现在是事务安全的...
在MySQL数据库中,分区是一种优化查询性能的技术,它将大表的数据分成多个逻辑部分,每个部分对应表的一个或多个分区。通常,分区字段是主键的一部分,以确保数据分布均匀并提高查询效率。然而,问题在于,如果一个...
4. **逆向工程**:Navicat可以从已存在的数据库中生成数据模型,这对于理解现有系统或进行数据库重构非常有用。只需连接到数据库,即可将表、视图和其他对象转换为模型。 5. **模型验证**:Navicat可以检查模型中的...
MySQL数据库在处理并发事务时,可能会出现锁表的问题,这通常发生在多个事务同时访问和修改同一数据时。当一个事务尚未完成,其他事务无法进行相关操作,就会导致锁表现象,影响数据库性能和应用的正常运行。本文将...
7. **数据分区**: 对于非常大的表,可以考虑使用分区策略,如范围分区、列表分区等,以提高数据插入和查询速度。 8. **避免回滚段**: 如果数据导入允许,可以关闭自动提交,减少回滚段的使用,以减少写入开销。 9....
- 升级MySQL:对于已有MySQL环境的用户,需按照官方指南进行平滑升级。 #### 五、MySQL5.6标准兼容性 - **MySQL扩展标准SQL**:MySQL支持标准SQL的同时,也包含了一些扩展功能,这些扩展特性增加了MySQL的灵活性...
2. **分区功能增强**:在 MySQL 5.1 中,用户可以对大表进行分区,以提高查询性能。分区可以基于哈希、范围、列表或线性哈希等多种方式。 3. **复制功能优化**:MySQL 5.1 提供了半同步复制,确保主库上的事务在被...
本文将详细讲解如何使用`mysqlcheck`命令来修复MySQL数据表。 `mysqlcheck`是MySQL提供的一款实用工具,它能够检查、修复、优化、分析数据库中的数据表。在修复数据表时,我们可以使用以下命令: 1. **修复所有...
2. 性能优化:涉及SQL查询优化、内存配置优化、存储引擎选择、分区表策略等,目的是提高数据库的读写效率。 六、备份与恢复 1. 备份:mysqldump工具可以生成SQL脚本或二进制文件作为备份,定期备份是防止数据丢失的...
8. **性能优化**:同步过程中可能需要考虑性能问题,例如在高峰期避开大量写入操作,或者对大表进行分区以加速同步。 9. **数据一致性**:同步不只是结构,还应考虑数据的一致性。在某些场景下,可能需要数据迁移,...
然而,在实际业务中,我们往往需要将已有的MySQL或PostgreSQL数据库的数据迁移到ClickHouse,这时就需要借助特定的工具来实现。sync-master就是这样一款专为数据迁移而设计的开源工具,它使得从关系型数据库到...
MySQL数据库管理系统是一款广泛应用于互联网领域的开源关系型数据库系统,由瑞典MySQL AB公司开发,目前已被Oracle公司收购。它以其高效、稳定和易用性而受到全球开发者和企业的青睐。MySQL基于SQL(Structured ...
7. **性能优化**:包括查询优化(编写高效的 SQL 查询)、分区表、视图、存储过程和触发器等,以及使用缓存(如 Query Cache)和调整参数配置来提升性能。 8. **备份与恢复**:定期备份数据库以防止数据丢失,可以...