IT老齐架构300讲笔记(003) 大厂数据垂直分表

目录

什么是水平分表?

什么是垂直分表?

为什么要垂直分表?

InnoDB处理引擎

InnoDB1.0后新特性,压缩页

垂直分页分析

垂直分表条件

字段放大小表的依据


什么是水平分表?

为单位对数据进行拆分范围法,hash法)。特点:所有的表结构完全相同。用于解决数据量大的存储问题

什么是垂直分表?

将表拆分成2张以上的小表通过主外键关联获取数据

IT老齐架构300讲笔记(003) 大厂数据垂直分表

IT老齐架构300讲笔记(003) 大厂数据垂直分表
IT老齐架构300讲笔记(003) 大厂数据垂直分表

为什么要垂直分表?

IT老齐架构300讲笔记(003) 大厂数据垂直分表

InnoDB处理引擎

需要了解mysql的InnoDB处理引擎。
行数据称为:row
管理数据基本单位称为页:page;每一页的默认大小:16k
保存页的单位称为区:Extent。
关系:区由连续页组成,页由连续行组成。1024/16=64(即:一个1M的区有64个页)

InnoDB1.0后新特性,压缩页

压缩页:对数据底层进行压缩,使实际大小小于逻辑大小
在跨页检索数据的过程中,压缩和解压缩的效率低。在表设计时,尽可能在页内多存储行数据,减少跨页检索,增加页内检索


垂直分页分析

1行数据为1K,1页16K,即1页16条数据,1亿的数据需要625万页
垂直分页后,1行数据为64字节(1K=1024字节),即1页256条数据,1亿的数据需要39万页。分页后的数据根据id等关系进行快速提取。

通过将重要字段单独剥离成小表,让每页容纳更多行数据,页减少后,缩小数据扫描范围,达到提高执行效率的目的

IT老齐架构300讲笔记(003) 大厂数据垂直分表

IT老齐架构300讲笔记(003) 大厂数据垂直分表

IT老齐架构300讲笔记(003) 大厂数据垂直分表

在没有索引或者索引失效的情况下,全表扫描的效率提高了几十倍

IT老齐架构300讲笔记(003) 大厂数据垂直分表

 垂直分表条件

1.单表数据达千万
2.字段超20个,且包含vachar,CLOB,BLOB等字段

字段放大小表的依据

小表:数据查询、排序时需要的字段高频访问的小字段
大表:低频访问字段大字段

小表IT老齐架构300讲笔记(003) 大厂数据垂直分表

大表

IT老齐架构300讲笔记(003) 大厂数据垂直分表

 

 

 

上一篇:C++ new 和 malloc 的区别


下一篇:[问题已处理]-安装centos7报错::dev:root does not exist 问题处理过程