对MySQL数据量日益增长产生的一点小想法
最近一直在想一个问题
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数据量日益增长产生的一点小想法的更多相关文章
- 最快速的办法解决MySQL数据量增大之后翻页慢问题
MySQL最易碰到的性能问题就是数据量逐步增大之后的翻页速度变慢的额问题,而且越往后翻页速度越慢,如果用最快速的办法解决,以下就是解决办法,简单方便. 1.问题现状 现有MySQL数据表 event_ ...
- Mysql数据量较大时分页查询优化
据表 collect ( id, title ,info ,vtype) 就这4个字段,其中 title 用定长,info 用text, id 是主键,vtype是int,vtype是索引. 最后co ...
- 日均数据量千万级,MySQL、TiDB两种存储方案的落地对比
http://mp.weixin.qq.com/s?__biz=MzIzNjUxMzk2NQ==&mid=2247484743&idx=1&sn=04337e020d268a9 ...
- SQLServer 统计数据量
做一个项目,第一件事情就是问:“这个数据库多大?” 下面是统计数据库数据量大小的方法 通常我们会使用命令: "sp_helpdb @dbname" 例如,查询数据库"te ...
- Linux高级命令及mysql数据安装
Linux系列--高级命令--mysql数据库安装 数据库是用来组织.存储和管理数据的仓库 1.安装数据库:执行命令yum -y install mysql -server 2.启动数据库:安装完毕, ...
- 【MySQL】MySQL中针对大数据量常用技术_创建索引+缓存配置+分库分表+子查询优化(转载)
原文地址:http://blog.csdn.net/zwan0518/article/details/11972853 目录(?)[-] 一查询优化 1创建索引 2缓存的配置 3slow_query_ ...
- MySQL数据库如何解决大数据量存储问题
利用MySQL数据库如何解决大数据量存储问题? 各位高手您们好,我最近接手公司里一个比较棘手的问题,关于如何利用MySQL存储大数据量的问题,主要是数据库中的两张历史数据表,一张模拟量历史数据和一张开 ...
- 总结MySQL大数据量下如何进行优化
写在建库前: 在确定数据库业务后.建立数据库表格时,就应对一些常见问题有所考虑,以避免在数据增长一段时间后再做应对,可能造成时间及维护成本增加: 数据的月增量,年增量 数据的快速增长点 是否需要触发器 ...
- MySQL的表分区详解 - 查看分区数据量,查看全库数据量----转http://blog.csdn.net/xj626852095/article/details/51245844
查看分区数据量,查看全库数据量 USE information_schema; SELECT PARTITION_NAME,TABLE_ROWS FROM INFORMATION_SCHEMA.PAR ...
随机推荐
- 多线程简介及GCD的使用
多线程简介: 对于任意一个iOS应用,程序运行起来后,默认会产生一个主线程(MainThread),主线程专门用来处理UIKit对象的操作,如界面的显示与更新.处理用户事件触发的操作等等.(记忆这点, ...
- 关于c# 基础运算符的应用
运算符 分为5种 1 算数预算符 +,-,*,/,分别为加减乘除 ++为加1,--为减1, 前++ 后++ 的区别 int a = 10, b = a++; Console ...
- 普实软件:MES机器数据维护
概述 机器数据有两个菜单,机器主数据在制造数据模块下,机器MES数据相关的设置在MES模块下,两个菜单查看的内容是一致的,但是机器主数据显示的是普通的机器,可做新增.编辑.删除操作,机器MES数据仅做 ...
- Alamofire源码解读系列(五)之结果封装(Result)
本篇讲解Result的封装 前言 有时候,我们会根据现实中的事物来对程序中的某个业务关系进行抽象,这句话很难理解.在Alamofire中,使用Response来描述请求后的结果.我们都知道Alamof ...
- Vue学习之路---No.1(分享心得,欢迎批评指正)
首先为了打消大家对Vue.js存在的顾虑,先通过大家所熟知的JQ作为对比. 都知道JQ的语法相对简单.清楚.使用方便.功能齐全: 那么Vue.js呢,同样的,Vue.js与JQ在很多地方都是相同之处, ...
- sql查询表说明
一条神奇的sql语句 可以查询到数据库表的说明信息.如下:希望可以帮到大家 SELECT 表名 = case when a.colorder=1 then d.name else '' end, 表说 ...
- 1660: [Usaco2006 Nov]Bad Hair Day 乱发节
1660: [Usaco2006 Nov]Bad Hair Day 乱发节 Time Limit: 2 Sec Memory Limit: 64 MB Submit: 665 Solved: 31 ...
- 1297: [SCOI2009]迷路
1297: [SCOI2009]迷路 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 652 Solved: 442[Submit][Status] ...
- 扩大按钮 btn 响应区域
方法一:类别 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c91b13 } p.p2 { margin: 0 ...
- 关于 jquery html 动态添加的元素绑定事件——On()
Ajax动态生成的数据,动作绑定需要重新执行 $(document).on('click','.btn1',function(){}); 替换: $('btn1').on('click') = fun ...