mysql 分表策略

mysql单表数据量巨大时,查询性能会很差,经常遇到的是存储日志相关的数据会每天产生大量的数据。

 

这里提供单表拆分成多表存储的三个思路:

一,固定N张表,ID取模存储

预先创建好N张表,记录按ID取模存储到相应的表中。

优点:简单粗暴

缺点:

受ID模式,预先创建好表的数量,不易扩展和改动。

按ID查询方便,但按时间查询就比较麻烦。

数据量大时迁移会影响性能。

 

例如:表test 拆分到100张表中

INSERT INTO test{$i} SELECT * FROM test WHERE id%100={$i}

 

二,按日期分类

insert into test_YYYYMM (field1,field2....) SELECT field1,field2....FROM test WHERE filed3 >= "YYYYMMDD" and filed3 <= "YYYYMMDD+1";  

优点:按时间好分类统计。

缺点:特定ID查询不方便,数据量大时迁移会影响性能。

 

三,rename 重命名方式

先复制test 表的结构创建一个临时表:
CREATE TABLE test_tmp LIKE test

RENAME TABLE test TO test_yyyyMM,test_tmp TO test;

在RENAME期间表是被锁死的,所以不用担心rename时数据丢失!

注意,按月份存储,则每月1号定时执行。

当然也可以变换拆分的方式,自由发挥了!

优点:快捷,无需数据导入导出。

 

posted @   itank  阅读(1065)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示