公众号merlinsea
背景
1、单台数据库是最容易产⽣性能瓶颈的服务组件。数据库连接数资源捉襟⻅肘和数据库因为表多、数据多造成的性能问题。
2、单⼀服务中⼼的数据访问压⼒也必然会达到单机数据库的承载上限,所以在进⾏服务化改造的同⼀时间段内,需要对数据库能⼒做扩展的⼯作
3、Mysql默认的最⼤连接数为100.这个连接连接数可以修改,⽽mysql服务允许的最⼤连接数为16384
三个概念——分库、分表、分区
分库就是将原本由一个数据库承载的数据分摊到多个数据库中,常见的有水平分库和垂直分库。
分表就是将原本由一个表承载的数据分摊到多个表中,常见的有水平分表和垂直分表。
分区是把⼀张表的数据分成N多个区块,这些区块可以在同⼀个磁盘上,也可以在不同的磁盘上。物理上多表存储,但是逻辑上单表操作。分区通常是数据库可以自己完成。
垂直分库和水平分库
垂直分库:垂直分库针对的是⼀个系统中的【不同业务领域】进⾏拆分, 数据库的连接资源⽐较宝贵且单机处理能⼒也有限,在⾼并发场景下,垂直分库⼀定程度上能够突破IO、连接数及单机硬件资源的瓶颈。
⽔平分库:将单张表的数据切分到多个数据库服务器上去,每个服务器具有相应的库与表,只是表中数据集合不同。⽔平分库能够有效的缓 解单机和单库的性能瓶颈和压⼒,突破IO、连接数、硬件资源等的瓶颈。
垂直分表和水平分表
垂直分表:也就是“⼤表拆⼩表”,基于【列字段】进⾏的。⼀般是表中的字段较多,将不常⽤的, 数据较⼤,⻓度较⻓(⽐如text类型字段) 的拆分到“扩展表“。垂直分表的核心在于不要让一个表的字段数量过多。
⽔平分表:针对数据量巨⼤的单张表(⽐如订单表),按照某种规则(RANGE,HASH取模等),切分到多张表⾥⾯去。但是这些表还是在同 ⼀个库中,所以库级别的数据库操作还是有IO瓶颈。水平分表的核心在于不要让一个表的记录数过多。
关于leetcode算法训练营:
加我微信号私聊参加训练营~
本人用c++刷了800道左右的算法,java语言刷了600道左右的算法题,并对这些题做了详细的个人总结。本科期间系统学习了数据结构与算法课程,同时考研过程中写完了率辉主编的《2020年数据结构高分笔记》和《数据结构1000题》,看完的视频包括《mooc浙大数据结构国家精品课程》和《王道考研408数据结构课程》,《王道2019年算法题讲解视频》,最终以初试专业第三名进入了北理工软件工程专业。熟悉并掌握常见的数据结构,比如链表、数组、树、图、队列、堆栈等等,精通数据结构教材中的所有算法,比如常见的遍历算法、动态规划,递归,回溯,剪枝,并查集,最短路径,拓扑排序等等,所以快加入训练营吧,我们一起进步
奔跑的小梁,公众号:梁霖编程工具库算法训练营,快来参加