大数据&云计算|作为数据库核心成员,如何让淘宝不卡顿?( 四 )
本文插图
拆分表的数据访问——SQL转发
其中拆分和寻找的算法:怎么知道对应哪个表?即自动路由算法 。 常见的有:固定哈希算法和一致性哈希算法 。
a)固定哈希算法
本文插图
b)一致性哈希算法
一致性哈希算法在1997年由麻省理工学院提出 , 是一种特殊的哈希算法 , 目的是解决分布式缓存的问题 。
一致性哈希算法的优势:
极好的应对了服务器宕机的场景 。
很好的支持后期服务器扩容 。
在引入虚拟节点后:能很好的平衡各节点的数据分布 。
由于一致性哈希算法的优势 , 此算法几乎是所有分布式场景下使用的方案 , 包括mysql的分布式、redis的分布式等 。
本文插图
(2) 结果合并
本文插图
升华:引入fork-Join , 提升操作速度(多线程并发重点场景 , 代码中也很常用哦) 。
任务拆分
多路并行操作
结果合并
本文插图
(3)全局唯一主键
优势:简单高效 。
缺点:无法保证自增顺序 。
例:
表1新增一条数据 , 于是给表1分配1000个主键ID ,直到它用完 。
同理 , 表2、表3在新增数据时 , 也给它们分配1000个主键ID 。 直到它用完 。
当它们的1000个主键ID用完后 , 继续给它们分配1000个即可 。
重复下去 , 可保证各库表上的主键不重叠 , 唯一 。
本文插图
这种产生全局唯一id的方式相当有效 , 保证基本的全局唯一特性和高性能的同时 , 可以对生成id的数据库分机架分机房部署达到容灾的目的 。
4.2.6 分表分库总结
本文插图
架构师角度:
优先考虑缓存降低对数据库的读操作 。
再考虑读写分离 , 降低数据库写操作 。
最后开始数据拆分 , 切分模式:首先垂直(纵向)拆分、再次水平拆分 。
首先考虑按照业务垂直拆分 。
再考虑水平拆分:先分库(设置数据路由规则 , 把数据分配到不同的库中) 。
最后再考虑分表 , 单表拆分到数据1000万以内 。
个人开发角度:
优先使用分表分库框架(直接使用) 。
优先考虑缓存降低对数据库的读操作 。
自己垂直分表 。
自己水平分表 。
之所以先垂直拆分才水平拆分 , 是因为垂直拆分后数据业务清晰而且单一 , 更加方便指定水平的标准 。
4.3 分布式化
分布式化是大潮 , 是大规模服务器最后都要走的一步 。
本文插图
分布式数据库架构演变
4.3.1 读写分离
设计读写分离的数据库 , 有两大意义:
主从只负责各自的写和读 , 极大程度的缓解X锁和S锁的竞争 。
从库可配置myisam引擎 , 提升查询性能以及节约系统开销 。
说明:myisam查询效率高于默认的innodb效率 。 参考:myisam和innodb的区别 。
推荐阅读
- 武则天|他是《红楼梦》背后的男人,靠化妆封神,被誉为"天下第一梳"
- 赵薇|赵薇说所有女演员都难出头,我举手举脚反对,用数据告诉大众真相
- 明星照片|鞠婧祎又"作妖"?拍戏带三个助理撑伞出场,五五分身材暴露无遗
- 明星财产|瘦子献声江静新歌《Won't Deny》,MV已释出!
- 明星八卦|40岁殷桃太高级了,大胆挑战''无痕液体裙''真是男人的心头肉
- |普法剧花旦秦丹跑活动,气质非凡却遭指靠''潜规则'',本人怒回怼
- |油管数据再次更新!王歌手太强啦
- 头条近期图文|杨颖回应''站位事件'',称自己是简单的人,网友:此地无银三百两
- 明星八卦|内地娱乐圈唯一称得上"花瓶"的何晴,56岁依然让人着迷
- |''大衣哥''儿子结婚啦!大衣哥现场连唱四首,数十万网友在线送祝福