最近一直在想一个问题

  MySQL数据量日益庞大,目前单表总记录数有 300W+,导致sql语句执行的速度变慢,如果一直这样增长下去,总有一天会爆炸的。怎么办??怎么办??

第一:想到的必然是 添加索引,可是索引偏偏是把双刃剑,提升了查询的速度,却活生生的影响了插入的效率

     所以索引的话,也只是能做到在一定数据量下,达到查询与插入的最优化,但是遇到持续增长的数据量,也是力不从心。

第二:想到的是 主从复制,想想好像很难弄的样子,会不会出问题?我这么懒,才不想去搞这个。。

第三(YY):首先,我们要思考一下,这些日渐庞大的数据表,它里面的数据都是经常用吗?

   还是说有大部分数据都处于一种很尴尬的处境:(保存着占空间,删除了又怕需要它),通俗点说就是“占着茅坑不拉屎”。。

   如果说是属于第二种情况,那么我们是不是可以尝试这么做:

    每条记录在插入的时候,都带一个“数据年龄”字段,初始值 = 插入时间 了,之后的话,记录被调用(查询,更新)时,它的“数据年龄” = 当前时间,这样那些长时间不被使用的数据就变成 陈年老数据 了,同时在MySQL开启一个定时器,每24小时执行一次,将“数据年龄”超过6个月的数据删除,并将这些删除的数据插入到与原表对应的一个“历史表”中,比如 “订单表” 对应 一个 “订单历史表” 。

    这样一来,“订单表”的数据就都是 数据年龄 小于 6月的数据了,从而阻止了 一个表的数据持续增长的状态

伴随的几个问题以及相应的解决想法:

  1:要如何查询总记录数?

    a) 分别查询 正常表 和 历史表 的总记录数,然后加起来

    b) 在当前数据库 创建一个专门用来记录此数据库中的每个表信息(包括表名称,总记录数等)的 "information表", 类似于 MySQL 的 information_schema数据库中的TABLES表。这种方式想想维护起来还是比较麻烦

    c) 暂时就想到两种

  2:如果我要调用的历史表中的数据怎么办?

    a) 当在 正常表中查询返回没有结果时,就转去 历史表中搜索,如果找到了,那么允许在历史表中执行本次操作,在这之后将 此条记录 重新写入到 正常表中,更新它的 “数据年龄”,并且将它从历史表中删除

    b) 看a

  3:涉及到分页查询所有记录,并按某个条件排序的咋搞?

    a) 比如 按金额倒序 查询前20条:分别 给两个表 按金额倒序 查询前20条,将 两个结果集合 整合 并取其中符合条件的20条。

    b) 想不出来了

  4:暂时没有想到其他问题

 总结:以上都是 我 yy 出来的,并没有实践过,有没有哪个小伙伴 如果看了 觉得可行的,就去试试吧?然后把结果告诉我,哈哈哈

对MySQL数据量日益增长产生的一点小想法的更多相关文章

  1. 最快速的办法解决MySQL数据量增大之后翻页慢问题

    MySQL最易碰到的性能问题就是数据量逐步增大之后的翻页速度变慢的额问题,而且越往后翻页速度越慢,如果用最快速的办法解决,以下就是解决办法,简单方便. 1.问题现状 现有MySQL数据表 event_ ...

  2. Mysql数据量较大时分页查询优化

    据表 collect ( id, title ,info ,vtype) 就这4个字段,其中 title 用定长,info 用text, id 是主键,vtype是int,vtype是索引. 最后co ...

  3. 日均数据量千万级,MySQL、TiDB两种存储方案的落地对比

    http://mp.weixin.qq.com/s?__biz=MzIzNjUxMzk2NQ==&mid=2247484743&idx=1&sn=04337e020d268a9 ...

  4. SQLServer 统计数据量

    做一个项目,第一件事情就是问:“这个数据库多大?” 下面是统计数据库数据量大小的方法 通常我们会使用命令: "sp_helpdb @dbname" 例如,查询数据库"te ...

  5. Linux高级命令及mysql数据安装

    Linux系列--高级命令--mysql数据库安装 数据库是用来组织.存储和管理数据的仓库 1.安装数据库:执行命令yum -y install mysql -server 2.启动数据库:安装完毕, ...

  6. 【MySQL】MySQL中针对大数据量常用技术_创建索引+缓存配置+分库分表+子查询优化(转载)

    原文地址:http://blog.csdn.net/zwan0518/article/details/11972853 目录(?)[-] 一查询优化 1创建索引 2缓存的配置 3slow_query_ ...

  7. MySQL数据库如何解决大数据量存储问题

    利用MySQL数据库如何解决大数据量存储问题? 各位高手您们好,我最近接手公司里一个比较棘手的问题,关于如何利用MySQL存储大数据量的问题,主要是数据库中的两张历史数据表,一张模拟量历史数据和一张开 ...

  8. 总结MySQL大数据量下如何进行优化

    写在建库前: 在确定数据库业务后.建立数据库表格时,就应对一些常见问题有所考虑,以避免在数据增长一段时间后再做应对,可能造成时间及维护成本增加: 数据的月增量,年增量 数据的快速增长点 是否需要触发器 ...

  9. MySQL的表分区详解 - 查看分区数据量,查看全库数据量----转http://blog.csdn.net/xj626852095/article/details/51245844

    查看分区数据量,查看全库数据量 USE information_schema; SELECT PARTITION_NAME,TABLE_ROWS FROM INFORMATION_SCHEMA.PAR ...

随机推荐

  1. MySQL两种引擎的区别

    Innodb引擎 Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别.该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL ...

  2. Android中Handler使用浅析

    1. Handler使用引出 现在作为客户,有这样一个需求,当打开Activity界面时,开始倒计时,倒计时结束后跳转新的界面(思维活跃的朋友可能立马想到如果打开后自动倒计时,就类似于各个APP的欢迎 ...

  3. ORM 实现数据库表的增删改查

    这次通过反射技术来实现一下数据库表的增删改查对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping) 注:引用时约束了以下几点: 数据 ...

  4. Vue开源项目库汇总

    最近做了一个Vue开源项目库汇总,里面集合了OpenDigg 上的优质的Vue开源项目库,方便移动开发人员便捷的找到自己需要的项目工具等,感兴趣的可以到GitHub上给个star. UI组件 elem ...

  5. React组件开发(一)初识React

    *React不属于MVC.MVVM,只是单纯的V层. *React核心是组件(提高代码复用率.降低测试难度.代码复杂度). *自动dom操作,状态对应内容. *React核心js文件:react.js ...

  6. Hibernate学习笔记①

    ---恢复内容开始--- 1.JavaEE的三层结构 WEB层--Service层--DAO层 2.Hibernate版本 Hibernate3.x  4.x  5.x 4版本是过渡版本 不使用  5 ...

  7. CDIF: 基于JSON的SOA软件框架

    通用设备互联框架(CDIF)是一个具备中美知识产权保护的,基于web的连接框架,目前有部分开源实现存放在: GitHub - out4b/cdif: Common device interconnec ...

  8. 基于 Koa平台Node.js开发的KoaHub.js的控制器,模型,帮助方法自动加载

    koahub-loader koahub-loader是基于 Koa平台Node.js开发的KoaHub.js的koahub-loader控制器,模型,帮助方法自动加载 koahub loader I ...

  9. Pydev for eclipse 安装及配置

    1.安装JDK,eclipse 2.打开eclipse->help->install new software,点Add,名称输入:Pydev,更新链接为:http://pydev.org ...

  10. mvp架构解析

    MVP现在已经是目前最火的架构,很多的框架都是以MVP为基础,甚至于Google自己都出一个MVP的开源架构.https://github.com/googlesamples/android-arch ...