0

mssql按月分表如何划分,网上好多讲的水平分表和垂直分表,至今没有区分开它们到底有什么区别?mssql分表用存储过程分表应该是可以的吧(存储过程不会,哈哈),如果是写在代码中是否还要加一个定时任务?

thinkwei 420
8月21日提问
2 个回答
0

已采纳
所谓的水平分表可以看成横着切,垂直分表可以看成竖着切。
水平分表如下图:

图片描述

垂直分表如下图:

图片描述

总结:水平分表,能够降低单表的数据量,一定程度上可以缓解查询性能瓶颈。但本质上这些表还保存在同一个库中,所以库级

别还是会有 IO 瓶颈。所以,一般不建议采用这种做法。在字段很多的情况下,拆分开确实更便于开发和维护(笔者曾见

过某个遗留系统中,一个大表中包含 100 多列的)。某种意义上也能避免“跨页”的问题(MySQL、MSSQL 底层都是通

过“数据页”来存储的,“跨页”问题可能会造成额外的性能开销,这里不展开,感兴趣的朋友可以自行查阅相关资料进行研

究)。

1

mssql没玩过,但所有的分表,目的一般都是为了避免在一个表内有过多的数据(这个多,是指真的很多)从而影响插入或查询的效率。

所以,真实场景下的分表策略,是根据业务来决定的,如果记录的增加是时间维度比较线性的(增长比较均匀,且随时间推进冷却),那就适合按时间分(再根据量按年按月或按日)。

至于垂直分,就是将一个表的字段分多个表,这简单的例子:一个用户表,可以保存很多用户资料,比如用户帐号密码、积分等级等等,从业务逻辑角度或者数据冷热的角度,帐号密码和积分等级是可以“分表”的。

撰写答案

推广链接