MySql 实战大数据查询-(表分区实现)

一 mysql分区

分区是将单个表按照某种规则划分成多个子集,每个子集称为一个分区。常见的分区策略包括按照时间范围、范围值、列表等进行分区。

优点:

  • 查询性能更好,涉及分区键的查询,数据库引擎可以只扫描特定分区,而不是整个表。
  • 管理数据相对简单,特别是对于自动创建新分区的情况,可以方便地处理历史数据和新数据。

二 mysql分区实战

首先抽查看我们线上系统一张报文表保存时间为最近一个月的数据量,3.8亿条如下图:

这里我们按时间作为分区,设置成每个月4亿条数据作为一个区域。

sql 复制代码
ALTER TABLE ali_hex_log
PARTITION BY RANGE (YEAR(ctime)*100 + MONTH(ctime)) (
    PARTITION p202403 VALUES LESS THAN (202403),
    PARTITION p202404 VALUES LESS THAN (202404),
    PARTITION p202405 VALUES LESS THAN (202405),
    PARTITION p202406 VALUES LESS THAN (202406),
    PARTITION p202407 VALUES LESS THAN (202407),
    PARTITION p202408 VALUES LESS THAN (202408),
    PARTITION p202409 VALUES LESS THAN (202409),
    PARTITION p202410 VALUES LESS THAN (202410),
    PARTITION p202411 VALUES LESS THAN (202411),
    PARTITION p202412 VALUES LESS THAN (202412),
    PARTITION p202501 VALUES LESS THAN MAXVALUE
);

执行上面sql后查看分区效果,如下图:

sql 复制代码
SHOW CREATE TABLE ali_hex_log;

删除分区

sql 复制代码
 ALTER TABLE ali_hex_log
DROP PARTITION p202501;

增加分区

sql 复制代码
ALTER TABLE ali_hex_log
ADD PARTITION (
    PARTITION p202501 VALUES LESS THAN (202501)
);

查询看一下速度:

在使用分区后,百亿条数据表查询只花了0.014秒,和查询普通表没有什么区别,这个比分表好多了,至少不用去改应用。

相关推荐
我要见SA姐12 小时前
告别 Copilot?Codex 本地化部署指南
运维·数据库·机器学习·oracle·回归
xcLeigh3 小时前
聊聊国产化替换:好用数据迁移工具KDMS怎么帮咱们搞定评估难
数据库·sql·数据迁移·kes·kdms
Elastic 中国社区官方博客3 小时前
列式存储并不等同于列式数据库。Columnar 模式为 Elasticsearch 带来了什么
大数据·运维·数据库·elasticsearch·搜索引擎
我要见SA姐14 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整实践指南
数据库·ide·vscode·oracle·编辑器
Nturmoils5 小时前
一份 KDMS 评估报告,怎样排出迁移先后顺序
数据库
这个DBA有点耶5 小时前
异构数据集成怎么做?5 种同步方案对比 + 金融级 CDC 实战解析
数据库·oracle·架构
独泪了无痕5 小时前
SQL函数实战:GREATEST与LEAST的技巧
数据库·sql·mysql
麻辣布丁5 小时前
MySQL篇面试题模拟
mysql
码少女6 小时前
Linux--多路转接之select
java·服务器·数据库
梁辰兴6 小时前
软件工程:软件维护的副作用
数据库·软件工程·梁辰兴·控制方法·软件维护的副作用·副作用类型·副作用原因