码迷,mamicode.com
首页 > 数据库 > 详细

mysql 分表策略

时间:2015-10-07 18:47:27      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

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号定时执行。

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

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

 

mysql 分表策略

标签:

原文地址:http://www.cnblogs.com/tankaixiong/p/4858971.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!