快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

太阳集团www0638vom:Asp.Net 网站优化系列 数据库优化 分字诀 分表(纵向拆分,横向分区)



上篇谈了分库,这一篇我们来分表

1. 纵向分表

纵向分表是指将一个有20列的表根据列拆分成两个表一个表10列一个表11列,这样单个表的容量就会削减很多,可以前进查询的机能,并在必然程度上削减锁行,锁表带来的机能损耗。

纵向分太阳集团www0638vom表的原则是什么呢,应该如何拆分呢?谜底是根据营业逻辑的必要来拆分,对付一张表假如营业上分两次造访某一张表此中一部分数据,那么就可以根据每次造访列的不合来做拆分; 别的还可以根据列更新的频率来拆分,例如某些列天天要更新3次,有些列从创建开始基础上很少更新。

举例:

假定场景,我有一张用户表,这张表包孕列:

ID, UserName, Password, RealName, Gender, Email, 太阳集团www0638vomIsEmailValid, Birthday, Count太阳集团www0638vomry, City, Address, Mobile, Phone, ZipCode, Hometown, OfficePhone, Company, Position, Industry, LatestLoginTime, LatestLoginIP, LoginTimes,OnlineMinutes

假定现在我们的登录呈现了机能问题,用户登录常常呈现数据库超时的征象。我们盘算用拆表的措施办理这个问题。先看下涉及到登录的字段有:UserName,Password,LatestLoginTime,LatestLoginIP,LoginTimes;那么我们就可以以此为依据将原表拆分为:UserLogin和UserBase 两个表,后者包孕除了登录信息的其他列信息;两张表都要包孕主键ID。

2. 横向分区

横向分区是将表从行的角度拆分,例如将创建光阴在05年之前的数据放在一个分区上,将05年到08年之间的数据放到另一个分区上,以此类推。横向分区所根据的列必须在凑集索引上,平日会根据光阴,主键id等进行划分。

横向分区将数据划分为不合的区,在根据分区列前提进行查询时可以缩小查询的范围,从而前进查询的机能;别的假如数据库办事器有多个cpu,则可以经由过程并行操作得到更好的机能。

到底要根据太阳集团www0638vom那个列进行横向的分区和查询有关系,我们在建表的时刻必要阐发,会根据那个列进行查询。

举例:

1. 订单是一个实效性很强的实体,我们很少查询几年前的订单数据,我们就可以在订单的创建光阴列上创建分区函数来做分区。

2. 比如帖子平日环境下只有在首页保举的最新的帖子被造访次数很多,而几年前的帖子被造访的几率较小,这时刻我们可以根据帖子的主键id来做分区,id小于300w的在一个分太阳集团www0638vom区上,id在300到600w之间的在一个分区上。

有关分区的更多信息,请参考高机能网站扶植之 MS Sql Server数据库分区

有关若何进行分区,请参考Sql Server 分区练习训练

转自:http://www.cnblogs.com/yukaizhao/archive/2010/05/31/sql-server-table-split-partition.html

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: