面试题-Mysql数据库优化之垂直分表

Posted 别明天就今天吧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题-Mysql数据库优化之垂直分表相关的知识,希望对你有一定的参考价值。

    在日常的开发工作中,除了JAVA相关的技术,打交道最多的就是mysql数据库,当数据积累到一定程度,比如500W时就会难免出现一些慢sql,对数据库的优化方式有很多,比如通过增加合理的索引,今天我们来说下其中的垂直分表。


    垂直分表:顾名思义就是将一张表纵向拆分成多张表,通过拆分后每行的字段数减少了,空间占用变小,当检索表数据时,一次IO就能从磁盘获取更多的数据到内存中,减少了IO次数,降低了响应时间。


    拆分的一些原则

  1. 可以根据业务进行拆分,比如原表中有些是一些辅助信息字段,此时可以把辅助信息拆分到另一张表中,并增加与数据的关联,比如增加元数据的主键等。

  2. 将核心字段或者经常访问的字段放到一张表中,让表更加原子,清晰,但是以合理为基础,也可以冗余字段,也不要过度拆分。


举个例子:将我们的订单表拆分成订单表和订单扩展信息表,如下

order表


拆分后:

t_order表

t_order_contact表


    订单中的联系人信息是订单的扩展信息,而且不常访问,拆分后原订单表轻量了,更加原子化,效率也提升了。当我们需要同时获取订单与订单扩展信息时,不建议join方式,应分别查询然后通过程序去处理。

以上是关于面试题-Mysql数据库优化之垂直分表的主要内容,如果未能解决你的问题,请参考以下文章

数据库优化之分表

mysql数据库的水平分表与垂直分表实例讲解

大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制

MYSQL优化-分表分库主从复制读写分离

MySQL单机优化---分表分区分库

mysql中的优化, 简单的说了一下垂直分表, 水平分表(有几种模运算),读写分离.