VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 数据库 > sql语句 >
  • sql语句大全之SQLServer性能优化之---存储优化系列

水平分库分表和垂直分库分表,大家都经常谈,我说下我的理解,看图: 
 
垂直分表就不用说了,基本上会SQLServer的都会。
 
垂直分库就是根据业务需求来分库,比如教育系列的,可以分为资讯,课程,用户(学生,学校)三个数据库。比如电商的可以分为订单,商品,用户(商家,消费者)三个数据库。这边只是举个例子,具体的你得根据你们自己业务的实际情况来分,不是分的越多越好,最好是遇到瓶颈了再去做这些事情(这个过程才能学到很多东西)
 
水平分表主要就两种方法,Hash取余法和时间路由法。我重点说下时间路由的方法,这种方案后期扩容和历史数据抽离【结合列索引更劲爆哦~】比较方便。
 
举个简单的路由表:(时间你可以用传统的格式,我这边用的是时间轴)
 
这个是文章表的时间路由表,每次查询文章的时候根据查询的时间看看 
 
比如我现在准备写入数据,当前时间 2016/11/18 16:37:29 ==》1479458249
 
select RTableName from Route_Article where where 1479458249 between RCreateTime and REndTime
 
就可以知道我应该往哪个表里面写数据:==》Article2
 
同理,想查询某个时间的数据也是可以通过路由表知道该往哪个表里面查询 
 
 
水平分库之前提了一下文件组(http://www.cnblogs.com/dunitian/p/5276431.html)后面还会有一篇文章进行扩展说明(http://www.cnblogs.com/dunitian/p/6078512.html),这边就不说了。
 
其实企业里面用的最多的是复合型的,比如:水平分库分表 ,水平分库+垂直分库+分表
 
真的有了这方面的瓶颈的话水平分表一般只能缓解,并不能真正解决,毕竟还是在一台服务器上。单表的数据量是减少了,但是IO,连接数,带宽之类的瓶颈并不能有多大的改善。
 
水平分库分表可以把IO瓶颈解决一部分,优化效果还是很明显的:
 
 
 
水平分库+垂直分库+分表,这个方案可以利用链接服务器,这样路由表就不用改了,把路由表的表名改成完整的名称(后面会说更好的方法)
 
 
先设置一下链接服务器。我自己摸索的这个方法可能和网上的不太一样,不要慌(没办法,我按照网上的没成功啊+_+)
 
 
 
 
 
 
 
这个感觉挺好的,一般情况下都是没问题的,但是遇到数据库名字或者表改了就蛋疼了,得改多少东西??关键是不太方便,名字那么长。。。===》so,引入了同义词 
create synonym Article for [192.168.1.250].[BigValues].[dbo].[Article]
 
 
再看看效果吧: 
 
是不是感觉特简单
--------------------- 
作者:开发10室刘伟强 
来源:CSDN 
原文:https://blog.csdn.net/qq_34246965/article/details/82191744 
版权声明:本文为博主原创文章,转载请附上博文链接!

相关教程