问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

大数据量最近的存储分表常见算法

发布网友 发布时间:2022-04-30 03:10

我来回答

1个回答

热心网友 时间:2022-04-10 04:11

大数据量最近的存储分表常见算法
当一个应用的数据量大的时候,我们用单表和单库来存储会严重影响操作速度,如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.分表算法的选择.
首先,分表适合于没有大的列表的应用来使用,要不然,会为这部分做好多额外的工作,如果你的应用数据量不是特别大的话,最好别用分表。7.针对每秒插入数据500+的设想为什么要copy这个呢,因为很多数据库在数据上千万级别后,每秒插入数据的数度不是很快了,所以500/秒的速度够呛,解决方案设想:建立数据总表及两个缓冲表,结构完全相同,将数据先插入其中一个缓冲表中,等到一定时间(插入效率降低之前),转向插入另一个缓冲表,同时启动一个后台进程将第
一个缓冲表的的数据转入总表,转入总表后删除第一个缓冲表中的数据; 再等到一定时间(还是插入效率降低之前),转向插入第一个缓冲表,这时启动一个后台进程将第
二个缓冲表的的数据转入总表,转入总表后删除第二个缓冲表中的数据; 如此循环往复...

如果后台进程处理的时间超过两个缓冲表的循环周期的话,甚至可以考虑建立三个乃至四个缓冲表。

这仅仅是解决插入效率,查询什么的问题也大。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...二极管 电动车的电瓶因为出于成本考虑,将新旧电瓶混用,因为旧电池内 ... 两个不同容量的蓄电池并联后怎么防止大容量电池向小容量电池放电 工伤后小孩有抚养费吗,会给多少钱 南京工伤死亡子女抚养费标准 邵阳车管所疫情上班吗 2023年验车推迟吗,2023年检车线什么时候上班 全面复工包括黔江车管所不 江宁车管所什么时候复工 疫情期间交警几点下班? 3d和值多少算中奖? 怎样将EXCEL里的每个sheet转化成PDF文档后,让文档按SHEET分页。Adobe Acrobat XI Pro mysql数据库分库分表后要是有跨表的查询怎么处理,分页的时候怎么... 数据库在进行水平分表之后,sql查询分页该怎么进行 咳嗽的症状是怎样的? 如何区分咳嗽类别? 什么是热咳什么是寒咳,症状有哪些 咳嗽中的痰分为哪几种它们的症状分别是什么? 寒咳和热咳的症状分别是什么 怎样判断咳嗽的类型? 咳嗽分那些类型?如何辨证论治? 咳嗽的症状有哪些? 不同类型咳嗽的症状 漏电开关在打雷时为什么跳闸?? 为什么打雷漏电开关就跳闸?谢谢 肯德基鸡块什么牌子? 急需 肯德基 KFC 历年产品的品种! 肯德基的骨肉相连现在多少钱? 肯德基套餐都有些什么呢 肯德基新出的跟全家桶似的叫啥来着? 肯德基推出的15款新品有什么? 数据透视表加报表页筛选 怎么能让分页出来的表没有切换筛选的功能? excel中 如何将大量的数据,自动均等的分成几个表!比如1到100 一张表 100-200一张表 excel中如何将分表数据填充到总表对应的单元格中 sql 大量数据分表查询 3D下载2016好还是2018好 苹果手机怎样下载旧版软件 有隋唐演义旧版下载地址吗/?? 96年的 为证明人类可以与猩猩“结合”,女科学家是怎么以身试险的? 大猩猩是否能和人类结合?女科学为试验“献身”,后来怎样了? 第一个去非洲探险的女科学家是谁,与大猩猩生活了13年 人类跟猩猩基因近似,女科学家为验证能否有后代,不惜参与实验!结果怎样? 有一个英国女科学家为了研究大猩猩而和猩猩交配,她叫什么名字?? 20世纪80年代,有一位美国的女博士,独自从事了8年多对大猩猩生活习性的野外考察 一只上过大学的猩猩,自认为也是人,但被人关了30年,现在怎样? 科学家曾做过实验,验证人和猩猩是否产生后代,结果怎么样? 西格妮·韦弗的人物生活 有一位研究黑猩猩的科学家他叫什么名字 人和黑猩猩一起能产生后代吗? 在非洲森林的那个一直在观察大猩猩的那个女科学家是? 苏联科学家曾经找女性和大猩猩杂交,最后实验结果怎样?