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

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

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

  • 相关阅读:
    vue-lazy-component
    vue修饰符sync
    vue-router-auto动态生成路由插件
    我的第一个WebAPI程序
    GitHub界面初识
    新闻API接口
    childNodes属性 和 nodeType属性
    接口测试总结
    网站被k
    js声明引入和变量声明和变量类型、变量
  • 原文地址:https://www.cnblogs.com/tankaixiong/p/4858971.html
Copyright © 2011-2022 走看看