• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >数据库其它 > 超大数据量存储常用数据库分表分库算法总结

超大数据量存储常用数据库分表分库算法总结

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了数据分库,沈阳储备量分库,运动服男套装七分库,zabbix分库,女7分库等相关知识,希望本文的分享对您有所帮助

当一个应用的数据量大的时候,我们用单表和单库来存储会严重影响操作速度,如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.分表算法的选择.

如果你的应用数据量不是特别大的话,最好别用分表。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 超大数据量存储常用数据库分表分库算法总结

相关文章

  • 2017-05-11多条件查询的程序
  • 2017-05-11Mssql,Access的sql经典SQL语句大全
  • 2017-05-11JDBC 数据库常用连接 链接字符串
  • 2017-05-11在PostgreSQL中使用数组时值得注意的一些地方
  • 2017-05-11Redis和Memcache的区别总结
  • 2017-05-11SQL大量数据查询的优化及非用like不可时的处理方案
  • 2017-05-11SQL Server不存在或访问被拒绝问题的解决第1/3页
  • 2017-12-17漫谈16S的前世今生
  • 2017-05-11一条DELETE语句
  • 2017-05-11Sql Server下数据库链接的使用方法

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • PLS-00907: cannot load library unit
    • update 子查询使用介绍
    • 修改插入时间不匹配问题
    • db2数据库常用操作命令大全
    • sqlserver中drop、truncate和delete语句的用法
    • 数据库查询优化(主从表的设计)
    • SQLite不支持Right Join的解决办法GROUP BY
    • telnet连接操作memcache服务器详解
    • 数据库设计技巧[转]
    • 数据库分页查询方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有