百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> mysql表垂直分割的原则及优缺点
分享文章到:

mysql表垂直分割的原则及优缺点

发布时间:01/15 来源: 浏览: 关键词:
mysql表垂直分割的原则这个对于各位做数据优化的朋友来讲还是非常的有用的,下面我们一起来看一些相关的例子,希望文章能够对大家带来帮助。

当mysql中一个表的字段过多,而且数据量过大的时候,为了提高性能,就得考虑对表进行垂直分割了。

所谓的垂直分割,其实就是把一个原先有很多列(字段)的表拆分开来,解决表的宽度问题。

而分割也是讲究原则的,更好的分割可以更多的提交性能和效率,那么我们通常可以按照以下原则进行:

1. 把不常用的字段单独放一个表中;

2. 最好把大字段独立放一个表中;

3. 把经常一起使用的字段放到一个表中;

4. 把经常需要参与筛选条件的字段放到主表中。


数据的切分(Sharding)模式


一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切可以称之为数据的垂直(纵向)切分;另外一种则是根据表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库(主机)上面,这种切分称之为数据的水平(横向)切分。

垂直切分:

一个架构设计较好的应用系统,其总体功能肯定是由很多个功能模块所组成的,而每一个功能模块所需要的数据对应到数据库中就是一个或者多个表。而在架构设计中,各个功能模块相互之间的交互点越统一越少,系统的耦合度就越低,系统各个模块的维护性以及扩展性也就越好。这样的系统,实现数据的垂直切分也就越容易。

一般来说,如果是一个负载相对不是很大的系统,而且表关联又非常的频繁,那可能数据库让步,将几个相关模块合并在一起减少应用程序的工作的方案可以减少较多的工作量,这是一个可行的方案。一个垂直拆分的例子:

1.用户模块表:user,user_profile,user_group,user_photo_album
2.群组讨论表:groups,group_message,group_message_content,top_message
3.相册相关表:photo,photo_album,photo_album_relation,photo_comment
4.事件信息表:event

群组讨论模块和用户模块之间主要存在通过用户或者是群组关系来进行关联。一般关联的时候都会是通过用户的id或者nick_name以及group的id来进行关联,通过模块之间的接口实现不会带来太多麻烦;
相册模块仅仅与用户模块存在通过用户的关联。这两个模块之间的关联基本就有通过用户id关联的内容,简单清晰,接口明确;
事件模块与各个模块可能都有关联,但是都只关注其各个模块中对象的ID信息,同样可以做到很容易分拆。


垂直切分的优点

数据库的拆分简单明了,拆分规则明确;
应用程序模块清晰明确,整合容易;
数据维护方便易行,容易定位;

垂直切分的缺点

部分表关联无法在数据库级别完成,需要在程序中完成;
对于访问极其频繁且数据量超大的表仍然存在性能瓶颈,不一定能满足要求;
事务处理相对更为复杂;
切分达到一定程度之后,扩展性会遇到限制;
过读切分可能会带来系统过渡复杂而难以维护。

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有8人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板