
获得徽章 1
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇沸点
#青训营笔记创作活动#
2月15日 打卡day8
今日学习
通过阅读这篇文章,我知道了分库与分表可以从垂直(纵向)和 水平(横向)两种纬度进行拆分。
垂直拆分:
垂直分库一般来说按照业务和功能的维度进行拆分,将不同业务数据分别放到不同的数据库中,核心理念是专库专用。按业务类型对数据分离,剥离为多个数据库,像订单、支付、会员、积分相关等表放在对应的订单库、支付库、会员库、积分库。不同业务禁止跨库直连,获取对方业务数据一律通过API接口交互,这也是微服务拆分的一个重要依据。垂直分库很大程度上取决于业务的划分,但有时候业务间的划分并不是那么清晰,比如:电商中订单数据的拆分,其他很多业务都依赖于订单数据,有时候界线不是很好划分。垂直分库把一个库的压力分摊到多个库,提升了一些数据库性能,但并没有解决由于单表数据量过大导致的性能问题,所以就需要配合后边的分表来解决。
垂直分表针对业务上字段比较多的大表进行的,一般是把业务宽表中比较独立的字段,或者不常用的字段拆分到单独的数据表中,是一种大表拆小表的模式。数据库它是以行为单位将数据加载到内存中,这样拆分以后核心表大多是访问频率较高的字段,而且字段长度也都较短,因而可以加载更多数据到内存中,减少磁盘IO,增加索引查询的命中率,进一步提升数据库性能。
水平拆分:
水平分库是把同一个表按一定规则拆分到不同的数据库中,每个库可以位于不同的服务器上,以此实现水平扩展,是一种常见的提升数据库性能的方式。这种方案往往能解决单库存储量及性能瓶颈问题,但由于同一个表被分配在不同的数据库中,数据的访问需要额外的路由工作,因此系统的复杂度也被提升了。
水平分表是在同一个数据库内,把一张大数据量的表按一定规则,切分成多个结构完全相同表,而每个表只存原表的一部分数据。水平分表尽管拆分了表,但子表都还是在同一个数据库实例中,只是解决了单一表数据量过大的问题,并没有将拆分后的表分散到不同的机器上,还在竞争同一个物理机的CPU、内存、网络IO等。要想进一步提升性能,就需要将拆分后的表分散到不同的数据库中,达到分布式的效果。
2月15日 打卡day8
今日学习
通过阅读这篇文章,我知道了分库与分表可以从垂直(纵向)和 水平(横向)两种纬度进行拆分。
垂直拆分:
垂直分库一般来说按照业务和功能的维度进行拆分,将不同业务数据分别放到不同的数据库中,核心理念是专库专用。按业务类型对数据分离,剥离为多个数据库,像订单、支付、会员、积分相关等表放在对应的订单库、支付库、会员库、积分库。不同业务禁止跨库直连,获取对方业务数据一律通过API接口交互,这也是微服务拆分的一个重要依据。垂直分库很大程度上取决于业务的划分,但有时候业务间的划分并不是那么清晰,比如:电商中订单数据的拆分,其他很多业务都依赖于订单数据,有时候界线不是很好划分。垂直分库把一个库的压力分摊到多个库,提升了一些数据库性能,但并没有解决由于单表数据量过大导致的性能问题,所以就需要配合后边的分表来解决。
垂直分表针对业务上字段比较多的大表进行的,一般是把业务宽表中比较独立的字段,或者不常用的字段拆分到单独的数据表中,是一种大表拆小表的模式。数据库它是以行为单位将数据加载到内存中,这样拆分以后核心表大多是访问频率较高的字段,而且字段长度也都较短,因而可以加载更多数据到内存中,减少磁盘IO,增加索引查询的命中率,进一步提升数据库性能。
水平拆分:
水平分库是把同一个表按一定规则拆分到不同的数据库中,每个库可以位于不同的服务器上,以此实现水平扩展,是一种常见的提升数据库性能的方式。这种方案往往能解决单库存储量及性能瓶颈问题,但由于同一个表被分配在不同的数据库中,数据的访问需要额外的路由工作,因此系统的复杂度也被提升了。
水平分表是在同一个数据库内,把一张大数据量的表按一定规则,切分成多个结构完全相同表,而每个表只存原表的一部分数据。水平分表尽管拆分了表,但子表都还是在同一个数据库实例中,只是解决了单一表数据量过大的问题,并没有将拆分后的表分散到不同的机器上,还在竞争同一个物理机的CPU、内存、网络IO等。要想进一步提升性能,就需要将拆分后的表分散到不同的数据库中,达到分布式的效果。
展开
评论
1
赞了这篇文章
赞了这篇文章
赞了这篇沸点
#青训营笔记创作活动#
2月14日 打卡day7
今日学习
通过阅读这篇文章,我知道了
1.为了系统性能的提升,我们一般都会将部分数据放入缓存中,加速访问,而DB只承担数据落盘工作,最简单的理解就是缓存是挡在 DB 前面的一层,为DB遮风挡雨。
2.读多写少的数据适合放到缓存中。
3.使用缓存后会产生 缓存与数据库双写不一致、缓存雪崩、缓存穿透、缓存并发竞争等问题。
2月14日 打卡day7
今日学习
通过阅读这篇文章,我知道了
1.为了系统性能的提升,我们一般都会将部分数据放入缓存中,加速访问,而DB只承担数据落盘工作,最简单的理解就是缓存是挡在 DB 前面的一层,为DB遮风挡雨。
2.读多写少的数据适合放到缓存中。
3.使用缓存后会产生 缓存与数据库双写不一致、缓存雪崩、缓存穿透、缓存并发竞争等问题。
展开
评论
1
赞了这篇文章
赞了这篇沸点
#青训营笔记创作活动#
2月13日 打卡day6
今日学习
通过阅读这篇文章,我知道了mysql的表锁有元数据锁、意向锁、自增锁、全局锁。
1.元数据锁,也被简称为MDL锁,这是基于表的元数据加锁。
2.意向锁是InnoDB中为了支持多粒度的锁,为了兼容行锁、表锁而设计的。
3.自增锁是专门为了提升自增ID的并发插入性能而设计的。
4.全局锁是基于整个数据库来加锁的,加上全局锁之后,整个数据库只能允许读,不允许做任何写操作,一般全局锁是在对整库做数据备份时使用。
2月13日 打卡day6
今日学习
通过阅读这篇文章,我知道了mysql的表锁有元数据锁、意向锁、自增锁、全局锁。
1.元数据锁,也被简称为MDL锁,这是基于表的元数据加锁。
2.意向锁是InnoDB中为了支持多粒度的锁,为了兼容行锁、表锁而设计的。
3.自增锁是专门为了提升自增ID的并发插入性能而设计的。
4.全局锁是基于整个数据库来加锁的,加上全局锁之后,整个数据库只能允许读,不允许做任何写操作,一般全局锁是在对整库做数据备份时使用。
展开
评论
1