简单需求:最近在做一个数据统计的项目,要求要统计的最小单位是分钟,类似统计网站的PV这样子,后台要求能看到某一天的某个小时或几个小时内每分钟的量的走势...等等,大家做过统计应该是知道的,我现在的设计是利用redis分布顶前端的访问记录存储,然后通过配合mysql持久记录历史数据,现在我的瓶颈在于mysql的设计上

大致的表设计是这样的:表名:test_pv 字段:id day hour minute1 ... minutes60

通过day去利用mysql分区为365个(这里大家建议一下是利用Range,list,hash中的那个比较好?)

还有就是此表的索引和分区上需要注意什么,就是希望高手给与设计上一些实际性的建议,网上的资料我已经通遍了,就是想大家给出一些指正和设计上的合理性的建议

2012-05-09补充: 今天做了一个测试按照我上面的思路建立了两个不同的表,一个是加索引的普通统计表,另一个是利用hash分区的表,两个表都插入了200万条测试数据,测试结果却让我梗咽了,发现我的分区表比未分区的表慢了大约0.4倍,本来我以为会快很多,不知道我的设计那里除了问题,(测试从两个方面,插入10万调数据 和 查询100调数据1000次的时间做的比较)

2011-03-03 07:26:36

1 Answers

这是我一些个人想法,不知道是否合理。选择用哪一个,主要要结合你的统计的需要。
1. 不一定要分为365个,分成这么多分区,访问时去扫描的分区就多了,那会增加IO开销。
2. 如果经常进行环比,比如连续几天,或者连续的某两天进行对比,那range,list好一些,因为相你的分区相对连续,那可以减少IO.
3. 如果是经常进行同比,比如这个月的某天与上个月的某天,那可以用hash,函数可以自己定义,可以将可能同时访问的数据放在同一分区中,减少IO.
4. 另外,不知道统计显示是用什么来做的?...目前我也在做一个类似的监控系统,我用rrd4j 做显示。

另外,用explain将你最常用的查寻打印出来看看,如果每个查询要涉及 的分区 少的话,那分区 有优势,否则就慢了

2011-03-03 09:21:36
您不能回答该问题或者回答已经关闭!

相关文章推荐

  • C#中using指令的几种用法

    using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到

  • C#实例解析适配器设计模式

    将一个类的接口变成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够一起工作

  • C#开发高性能Log Help类设计开发

    项目中要在操作数据库的异常处理中加入写Log日志,对于商业上有要求,写log时对其它操作尽可能影响小,不能因为加入log导致耗时太多

  • 使用托管C++粘合C#和C++代码(二)

    本文实现一下C++代码调用C#代码的过程。我构造一个简单并且直观的例子:通过C++ UI 触发C# UI.

  • Async和Await使异步编程更简单

    C#5.0中async和await两个关键字,这两个关键字简化了异步编程,之所以简化了,还是因为编译器给我们做了更多的工作

  • C#开发中的反射机制

    反射的定义:审查元数据并收集关于它的类型信息的能力。元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等

  • C#运行时相互关系

    C#运行时相互关系,包括运行时类型、对象、线程栈和托管堆之间的相互关系,静态方法、实例方法和虚方法的区别等等

  • C#协变和逆变

    “协变”是指能够使用与原始指定的派生类型相比,派生程度更大的类型,“逆变”则是指能够使用派生程度更小的类型

  • C#基础概念之延迟加载

    延迟加载(lazy load)是Hibernate3关联关系对象默认的加载方式,延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作

  • C#中的索引器的简单理解和用法

    C#中的类成员可以是任意类型,包括数组和集合。当一个类包含了数组和集合成员时,索引器将大大简化对数组或集合成员的存取操作

  • 使用托管C++粘合C#和C++代码(一)

    C#在xml读写,数据库操纵,界面构造等很多方面性能卓越;C++的效率高,是底层开发的必备武器

  • 深入C# 序列化(Serialize)、反序列化(Deserialize)

    C#中的序列化和反序列化,序列化是.NET运行时环境用来支持用户定义类型的流化的机制