1.1.分库分表是什么
分库分表就是为了解决由于数据量过大而导致数据库性能降低的问题,将原来独立的数据库拆分成若干数据库组成,将数据大表拆分成若干数据表组成,使单一数据库、单一数据表的数据量变小,从而达到提升数据库性能的目的。
1.2.分库分表的方式
分库分表包括分库和分表两个部分,在生产环境中通常包括:垂直分库、水平分库、垂直分表、水平分表四种方式。
垂直分表定义:将一个表按照字段分成多表,每个表存储其中一部分字段 带来的提升是:
a:为了避免IO争抢并减少锁表的几率,查看详情的用户与商品信息浏览互不影响
b:充分发挥热门数据的操作效率,商品信息的操作的高效率不会被商品秒速的低效率锁拖累垂直分库定义:按照业务将表进行分类,分布到不同的数据库上面,每个库可以凡在不同的服务器上,它的核心理念是专库专用 带来的提升是:
a:解决业务层面的耦合,业务清晰
b:能对不同业务的数据进行分级管理、维护、监控、扩展等
c:高并发场景下,垂直分库一定程度的提升IO、数据库连接数、降低单机硬件资源的瓶颈水平分库定义:是把同一个表的数据按一定规则拆到不同的数据库中,每个库可以放在不同的服务器上对比:垂直分库是把不同表拆到不同数据库中,它是对数据行的拆分,不影响表结构
带来的提升是:
a:解决了单库大数据,高并发的性能瓶颈
b:提高了系统的稳定性及可用性
c:当一个应用难以再细粒度的垂直切分或切分后数据量行数巨大,存在单库读写、存储性能瓶颈,这时候就需要进行水平分库了水平分表定义:在同一个数据库内,把同一个表的数据按一定规则拆到多个表中 带来的提升是:
a:优化单一表数据量过大而产生的性能问题
b:避免IO争抢并减少锁表的几率