MySQL 大表拆分
概述
在实际工作中,在关系数据库(MySQL、PostgreSQL)的单表数据量上亿后,往往会出现查询和分析变慢甚至无法执行统计分析的情况。这时就需要将大表拆分为多个小表,将小表分布在多个数据库上,形成一个数据库集群。这样的话,一条 SQL 统计语句就可以在多台服务器上并发执行,然后将执行结果汇总,实现关系数据库的大数据量分析
数据库三范式
范式是具有最小冗余的表结构,三范式的概念如下所述
第一范式:如果每列都是不可再分的最小数据单元,则满足第一范式,第一范式的目标是确保每列的原子性。例如 Address 列存储地址信息,值为“中国北京市”,违背了第一范式列不可再分的原则,要满足第一范式,就需要将 Address 列拆分为 Country 列和 Ciy 列,分别存储“中国”和“北京市”
第二范式:第二范式在第一范式的基础上,规定表中的非主键列不存在对主键的部分依赖,即第二范式要求每个表都只描述一件事情。例如 Orders 表有“订单编号”,“产品编号”,“订单日期”,“产品价格”列,既包含了订单