超大数据量存储常用数据库分表分库算法总结
当一个应用的数据量大的时候,我们用单表和单库来存储会严重影响操作速度,如mysql的myisam存储,我们经过测试,200w以下的时候,mysql的访问速度都很快,但是如果超过200w以上的数据,他的访问速度会急剧下降,影响到我们webapp的访问速度,而且数据量太大的话,如果用单表存储,就会使得系统相当的不稳定,mysql服务很容易挂掉。所以当数据量超过200w的时候,建议系统工程师还是考虑分表.
以下是几种常见的分表算法。
1.按自然时间来分表/分库;
如一个应用的数据在一年后数据量会达到200w左右,那么我们就可以考虑用一年的数据来做为一个表或者库来存储,例如,表名为app,那么2010年的数据就是app_2010,app_2011;如果数据量在一个月就达到了200w左右,那么我们就可以用月份来分,app_2010_01,app_2010_02.
2.按数字类型hash分表/分库;
如果我们要存储用户的信息,我们应用的注册量很大,我们用单表是不能满足存储需求的,那么我们就可以用用户的编号来进行hash,常见的是用取余操作,如果我们要分30张表来存储用户的信息,那么用户编号为1的用户1%30=1,那么我们就存在user_01表里,如用户的编号为500,那么500%30=20,那么我们就将此用户的信息存储在user_20的表里.
3.按md5值来分表/分库;
我们假设要存储用户上传的文件,如果上传量大的话,也会带来系统的瓶颈问题,我们做过试验,在一个文件夹下如果超过200个文件的话,文件的浏览效率会降低,当然,这个不属于我们本文讨论的范围,这块也要做散列操作.我们可以用文件的用户名来md5或者用文件的md5校验值来做,我们就可以用md5的前5位来做hash,这样最多我们就可以得到5^5=3125个表,每次在存储文件的时候,就可以用文件名的md5值的前5位来确定这个文件该存那张表.
4.实例:某微博的url加密算法和存储策略的猜想.
现在好多微博都用这样的url来访问,如果他们的域名为www.example.com,那么如果你发微博的时候,你会发现你所发的url都变成了http://t.cn/Mx4ja1,这样的形式,他们是怎么进行这样的转换呢?我猜想就是用到了我们上面讲的md5的存储和查找规则,用你发的url来进行md5,得到md5值之后,如我们例子来说,就会用前6位来进行分表.
5.分表所带来的问题.
分表也会带来一系列的问题,如分页的实现,统计的实现,如果我们要做一个所有数据的分页,那么我们得每张表都得遍历一遍,这样访问效率会很低下.之前我尝试过用mysql的代理来实现,最终用tcsql来实现了.
6.分表算法的选择.
如果你的应用数据量不是特别大的话,最好别用分表。
您可能感兴趣的文章:
- 大数据量时提高分页的效率
- 数据库高并发情况下重复值写入的避免 字段组合约束
- 大数据量分页存储过程效率测试附测试代码与结果
- 大数据量,海量数据处理方法总结
- MySQL数据库优化经验详谈(服务器普通配置)
- MySQL数据库十大优化技巧
- SQL Server数据库的高性能优化经验总结
- sql 存储过程分页代码 支持亿万庞大数据量
- 数据库性能优化三:程序操作优化提升性能
- 数据库性能优化二:数据库表优化提升性能
- 数据库性能优化一:数据库自身优化提升性能
- Oracle 数据库优化实战心得总结
- 优化mysql数据库的经验总结
- mysql数据库优化总结(心得)
- 关于数据库优化问题收集汇总
- oracle数据库sql的优化总结
- sql 百万级数据库优化方案分享
- 优化Mysql数据库的8个方法
- mysql数据库sql优化原则(经验总结)
- 针对Sqlserver大数据量插入速度慢或丢失数据的解决方法
- MySQL数据库优化详解
- MySQL中实现高性能高并发计数器方案(例如文章点击数)
- sqlserver数据库优化解析(图文剖析)
- 详解MySQL性能优化(一)
- 详解MySQL性能优化(二)
- 19个MySQL性能优化要点解析
- 大数据量高并发的数据库优化详解
- Android之获取手机上的图片和视频缩略图thumbnails
- 数据库链接字符串查询网站
- DB2实例管理
- DB2实例管理
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- Tomcat端口被占用解决方法(不用重启)
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 动易2006序列号破解算法公布
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- CentOS下DB2数据库安装过程详解
- “传奇”图象数据存储方式
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- sql2008 还原数据库解决方案
- Oracle 数据库自动存储管理-安装配置
- Oracle 数据库 临时数据的处理方法
- 数据库分页查询语句数据库查询