zoukankan      html  css  js  c++  java
  • 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号定时执行。

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

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

  • 相关阅读:
    第一阶段冲刺10天 第六天
    第一阶段冲刺10天 第五天
    第一阶段冲刺10天 第四天
    第一阶段冲刺10天 第三天
    第一阶段冲刺10天 第二天
    第一阶段冲刺10天 第一天
    典型用户分析
    第二次小组冲刺训练
    寻找水王代码(找多个字母中出现最多次数的字母)
    冲刺周期第二天
  • 原文地址:https://www.cnblogs.com/tankaixiong/p/4858971.html
Copyright © 2011-2022 走看看