假设需要记录日志,每天10万条记录,需要保存10年。
我现在的做法是每个月建立一个表,即每个表大概保存300万条记录。系统最大有120张表。
我想问问如果是用分区表呢?单独增加一列int类型的数据,保存日志的日期,格式为201110,即2011年10月。以此为list分区依据。然后把所有数据保存在同一张表里面。请问前者和后者在读、写上,有没有什么不一样的地方?如果是30年、50年、甚至100年的数据呢?非常感谢!!!

解决方案 »

  1.   

    没什么不一样。但关键是你的查询。 如果你的查询可以通过条件约束在一个月,或者几个月中,则查询的效率比较好。 如果你只是 select * from xxxx 没有任何WHERE,或者WHERE中的条件无法利用分区信息,则会导致全表扫描。
      

  2.   

    回复楼上的:
    1、30年我只是举例子,为了形如数据量而已。
    2、查询条件里面肯定带了类似: where Date=201110
      

  3.   

    假设需要记录日志,每天10万条记录,需要保存10年。
    我现在的做法是每个月建立一个表,即每个表大概保存300万条记录。系统最大有120张表。业务需求
    1.用户查询的话,分日期段;
    2.统计分析,只统计某个段的;建议:
    采用分区表,以你描述的数据量,可以考虑1年为一张表,并且创建12个分区的方式;1.方便统计分析;
    2.方便查询;
    3.方便程序访问,以及数据的清楚;
    #****************************************#
    MySQL技术及运维自动化网:www.mysqlops.com新浪微博账号:http://weibo.com/mysqlops
    #****************************************#