你的位置:

问答吧

-> PHP基础

-> 问题详情

留存率,数据表分表问题

本帖最后由 minoc 于 2013-5-22 15:00 编辑

现在有一个1千多万的数据表,是记录的用户的产品使用记录,

有如下几用查询留存要用到的字段,

id    userid   软件使用时间戳timestamp    应用包名packname    版本号version    发布渠道channel   用户注册时间register   数据入库时间datetime

数据600M多,索引600M多,一共1400万条左右,

此表涉及到留存率这个功能,比如3月注册的用户在4月的留存情况, 还有可能要看3月注册的用户在5月的留存情况,更具体的是,3月在4月中每一天的留存率,

如:3月在4月的留存率,即是(register=3月内 and timestamp=4月内),这个条件内的用户数占3月用户注册总数的比例

产品越来用户越多,数据增加越来越大,如果要分表,当前这个表就要保留最少3 4 5月这3个月的数据,查询了一下,这3个月占了900W多, 如果现在查询一次留存率,把3月在4月的留存缓存了,只需要保留4 5月的数据.也有700W多,数据表还是挺大的,但这不是办法,以后数据更多的时候,一个月有可能就会出现1千万,所以这样分表只是把表缩小了体积,没有多大意义

其实说这么多,我想知道的是,留存率,怎么统计比较好,可以占用空间少,效率又高,注意里面有版本和包名的字段,用处是查询一个包名或者版本3月在4月的留存情况.

作者: minoc

发布时间: 2013-05-22

分去吧 现在都是这样 空间换时间  或者是加个缓存

作者: 弱水寒

发布时间: 2013-05-22

弱水寒 发表于 2013-5-22 15:54

分去吧 现在都是这样 空间换时间  或者是加个缓存

不是说一定要在现在的表基础上分,

而是找到更好的数据存储方式,

刚在又百度了老半天,又找到一个更理想的留存存储方式,不过还不太完善,正在研究中

作者: minoc

发布时间: 2013-05-22

难道你想改变原来的数据存储方式?

作者: 弱水寒

发布时间: 2013-05-22

弱水寒 发表于 2013-5-22 16:03

难道你想改变原来的数据存储方式?

把原来的数据分离出来,

文档已经总结好了, 明天就试验,

这样的话表结构会缩小N多,以后数据量大了也更容易分表,100万用户1天也只有100万条数据,但不可能100万用户会同时在这一天使用

其实吧,我现在的想法是,不要把功能全做在一个表里去,可以把每个功能或多个类似的功能做在单独一个表,相同数据可以在多表中重复浪费磁盘空间(当然有限),但可以提高性能及减少问题复杂性,后期更好维护及分表

作者: minoc

发布时间: 2013-05-22

试下mysql merge吧,每月一个表,如果单独查询某个月可以用子表查询,如果查询三个月可查询主表,这样效率就高了很多,另外可以根据需求来修改主表包含的子表如三个月就包含,3,4,5,如两个月就包含3,4

作者: chouxiaozi

发布时间: 2013-05-23

mysql 留存率统计_留存率,数据表分表问题相关推荐

  1. asp.net mysql 读写分离_.NET Core实现分表分库、读写分离的通用 Repository功能

    首先声明这篇文章不是标题党,我说的这个类库是 FreeSql.Repository,它作为扩展库现实了通用仓储层功能,接口规范参考 abp vnext 定义,实现了基础的仓储层(CURD). 安装 d ...

  2. 1亿条数据如何分表100张到Mysql数据库中(PHP)

    来源:http://www.jb51.net/article/70265.htm 这篇文章主要介绍了当数据量猛增的时候如何把一亿条数据分表100张到Mysql数据库中,需要的朋友可以参考下 下面通过创 ...

  3. php 分表 实战,PHP实战:1亿条数据如何分表100张到Mysql数据库中(PHP)

    <PHP实战:1亿条数据如何分表100张到Mysql数据库中(PHP)>要点: 本文介绍了PHP实战:1亿条数据如何分表100张到Mysql数据库中(PHP),希望对您有用.如果有疑问,可 ...

  4. mysql 5000万条数据库_1亿条数据如何分表100张到Mysql数据库中(PHP)

    下面通过创建100张表来演示下1亿条数据的分表过程,具体请看下文代码. 当数据量猛增的时候,大家都会选择库表散列等等方式去优化数据读写速度.笔者做了一个简单的尝试,1亿条数据,分100张表.具体实现过 ...

  5. mysql数据库计算全部女生_使用mysql存储过程-统计某个数据库下的所有表的记录数...

    使用 mysql 存储过程 - 统计某个数据库下的所有表的记录数 其中用到了游标 (cursor) ,循环 (loop) ,动态 SQL 预处理 (prepare) 等技术,特 此记录一下. [sql ...

  6. mysql pdo 插入没效果_MySQL分库分表后用PHP如何来完美操作

    当单表达到几千万时,查询一次要很久,如果有联合查询,有可能会死在那 分库分表主要就是解决这个问题,减小数据库的负担,缩短查询时间分库 1)按功能分 用户类库.商品类库.订单类库.日志类.统计类库... ...

  7. mysql分表全局查询_mysql如何查询多样同样的表/sql分表查询、java项目日志表分表的开发思路/按月分表...

    之前开发的一个监控系统,数据库的日志表是单表,虽然现在数据还不大并且做了查询sql优化,不过以后数据库的日志表数据肯定会越来越庞大,将会导致查询缓慢,所以把日志表改成分表,日志表可以按时间做水平分表, ...

  8. 百亿数据分库分表核心流程详解

    前言 俗话说:面试造火箭,入职拧螺丝.尽管99.99%的业务都不需要用到分库分表,但是分库分表还是频繁出现在大厂的面试中. 分库分表涉及到的内容非常多,有很多细节,如果在面试中被问到了,既是挑战,也是 ...

  9. CNZZ 移动统计_移动数据统计_移动应用分析_ APP统计

    CNZZ 移动统计_移动数据统计_移动应用分析_ APP统计 http://mobile.cnzz.com/help.php?h=Android_SDK_Download_and_Usage_Manu ...

最新文章

  1. 操作系统学习1:操作系统概述
  2. HTMLCanvasElement.toDataURL()
  3. html li 怎么合并,HTML—CSS-case(合并boder / 滑动门 / 去除li边框 /css三角形原理)...
  4. flutter 类似日期选择器控件_一切皆组件的Flutter,安能辨我是雄雌
  5. 基于OpenCV的findContours查找图像连通域,并进行排序
  6. 长沙,企业上市“再加速”
  7. Tomcat服务器环境配置--查看bat文件(解决Neither the JAVA_HOME nor the JRE_HOME environment variable is defined问题)
  8. Sentinel(十七)之启动配置项
  9. 《linux核心应用命令速查》连载七:bg:后台运行命令
  10. Python网络爬虫第一弹《Python网络爬虫相关基础概念》
  11. 网上交易安全-使用JAVA调用U盾进行客户认证
  12. Delphi程序实现多语言功能
  13. python数字黑洞123_演示数字黑洞现象
  14. 如何在win10中迅速打开命令提示符
  15. U-GAT-IT 翻译
  16. 03一般过去时和主谓双宾
  17. Win10怎么删除快速访问中最近使用文件记录
  18. 币圈炒币如何避免被额韭菜?
  19. css预处理全部知识点一文讲清楚
  20. 这,这,是个神人,我喜欢

热门文章

  1. 如何使用Windows File Recovery工具在 Windows 10 上恢复丢失的文件
  2. 软件项目工作量评估方法简述之COSMIC功能点方法
  3. 关于电脑任务栏软件图标变成白色白纸的解决办法
  4. Java基础篇:八大基本数据类型
  5. 查看python下OpenCV版本
  6. linux或者UC/OS
  7. 一个癌症病人的美国求医经历:活人死人如果都得不到尊重,病人也很难被尊重
  8. huffman算法实现文件的压缩与解压
  9. 数据结构之广义表(C语言)
  10. 进程同步(操作系统)