对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 ...
随机推荐
- 【Zookeeper】源码分析之网络通信(二)
一.前言 前面介绍了ServerCnxn,下面开始学习NIOServerCnxn. 二.NIOServerCnxn源码分析 2.1 类的继承关系 public class NIOServerCnxn ...
- everything 快速搜索有代价
我在一台电脑上运行过everything后,把它拷贝到另一台电脑上运行,前一台电脑上的搜索结果记录居然还,包括文件类型,标题,大小,位置.天呐··· 虽然看不到内容,但对于一个社工来说,一个标题完全足 ...
- angularjs+ionic注册页面表单验证(手机号、确认密码、60s后重发验证码)
在已建立tabs和路由的注册页面html: 功能: 进行了手机号.密码格式验证,两次密码输入是否相同的判断,都正确且复选框勾选后才可点击注册,进入tabs.mypage页面. 未进行验证码真正发送.获 ...
- Python入门教程(1)
人生苦短,我用Python! Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于19 ...
- 使用postfix在debian上配置邮件服务器
如果debian中安装了exim4,先卸载exim4: apt-get remove exim4 安装postfix apt-get install postfix 安装完成后就可以测试下,PHP代码 ...
- Linked List Cycle && Linked List Cycle II
Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Note ...
- 读书笔记 effective c++ Item 32 确保public继承建立“is-a”模型
1. 何为public继承的”is-a”关系 在C++面向对象准则中最重要的准则是:public继承意味着“is-a”.记住这个准则. 如果你实现一个类D(derived)public继承自类B(ba ...
- python 接口自动化测试--代码实现(八)
用例读入数据库: #! /usr/bin/python # coding:utf-8 import sys,os from Engine import DataEngine reload(sys) s ...
- velocity中使用枚举
版权声明:本文为博主原创文章,转载请注明出处,欢迎使劲喷 一.为什么要在velocity中使用枚举 1.目前接触到的系统,枚举通常用来在程序中定义数据字典. 举个支付的例子,比如一个字段用来标识一条记 ...
- JavaScript数据结构——队列的实现
前面楼主简单介绍了JavaScript数据结构栈的实现,http://www.cnblogs.com/qq503665965/p/6537894.html,本次将介绍队列的实现. 队列是一种特殊的线性 ...