大数据&云计算|作为数据库核心成员,如何让淘宝不卡顿?( 四 )
【大数据&云计算|作为数据库核心成员,如何让淘宝不卡顿?】
本文插图
拆分表的数据访问——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的区别 。
- 大数据&云计算长飞公司亮相2020中国国际信息通信展览会
- 新华社|新冠检测慢 美政府拿实验室经费开刀
- 金十数据|澳大利亚铁矿石对华出口会受影响吗?,中国1年买超6亿吨!煤炭之后
- 丁祖昱|数据中心成投资新风口“数字地产”受青睐
- 数据|4.9%:三季度经济强劲复苏
- 增长|0.7%,一个标志性数据!
- 证监会网站|最新进展!蚂蚁集团赴港上市获得证监会许可,A+H计划持续推进,对A股资金面影响几何?
- 最高检网站|最高检:多个反映办案质量数据呈现积极变化
- 周到|300+平方米展台,ACCESS集团将携8大国际品牌首次亮相进博会
- 第一财经|中国GDP数据提振市场情绪 美股集体高开
