大数据&云计算|作为数据库核心成员,如何让淘宝不卡顿?( 四 )
本文插图
拆分表的数据访问——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的区别 。
推荐阅读
- 穿搭|只有极简风能穿出高级?你错了,"设计感穿搭"也能出彩,来试试
- 万州微视界|打工女皇——吴士宏,用12年做到年薪1亿"穷"不是枷锁女儿当自强发愤图强
- 王诗龄 |6年过去了,穷养的森碟成了"网球达人",而富养的王诗龄会啥?
- 中型SUV|日产受欢迎B级车,兼具动力和舒适,楼兰可以"C"位出圈吗?
- 旅游与摄影media|闽越三大名山之一,朱熹曾在此创办书院,号称"海上仙都"
- 旅游与摄影media|世界三大千岛湖之一,中国江湖优质水之首,誉为"天下第一秀水"
- |半岁宝宝''感冒''被忽视 鼻窦发炎眼内脓肿险失明
- |10.10干眼关爱日,爱尔眼科重磅发布国人干眼大数据报告
- 伊秀海报时尚|丹媚&赤尾搞事情?国庆云打卡成功掀起线上旅游热潮!
- 汽车|当越野遇上摇滚会绽放出怎样绚丽的烟火 哈弗H9&面孔乐队自驾之旅