首先明确表分区和分库分表的概念。

  • 表分区:在不破坏原本表结构的基础上,对单个大表进行切割,分成不同文件,存储在不用文件或硬盘。
  • 分库分表:这里涉及到垂直切分及水平切分(引用网上的文章:https://www.cnblogs.com/zr520/p/5449748.html)。

垂直切分:垂直拆分就是要把表按模块划分到不同数据库表中(当然原则还是不破坏第三范式),这种拆分在大型网站的演变过程中是很常见的。当一个网站还在很小的时候,只有小量的人来开发和维护,各模块和表都在一起,当网站不断丰富和壮大的时候,也会变成多个子系统来支撑,这时就有按模块和功能把表划分出来的需求。其实,相对于垂直切分更进一步的是服务化改造,说得简单就是要把原来强耦合的系统拆分成多个弱耦合的服务,通过服务间的调用来满足业务需求看,因此表拆出来后要通过服务的形式暴露出去,而不是直接调用不同模块的表,淘宝在架构不断演变过程,最重要的一环就是服务化改造,把用户、交易、店铺、宝贝这些核心的概念抽取成独立的服务,也非常有利于进行局部的优化和治理,保障核心模块的稳定性。

水平切分:上面谈到垂直切分只是把表按模块划分到不同数据库,但没有解决单表大数据量的问题,而水平切分就是要把一个表按照某种规则把数据划分到不同表或数据库里。例如像计费系统,通过按时间来划分表就比较合适,因为系统都是处理某一时间段的数据。而像SaaS应用,通过按用户维度来划分数据比较合适,因为用户与用户之间的隔离的,一般不存在处理多个用户数据的情况,简单的按user_id范围来水平切分

这里我们指讨论表分区。

1.首先明确系统中对此表的查询情况

如果系统比较复杂可以借助“SQL Server Profiler”对生产环境进行抓取。并分析此表的查询情况,比如:如果是行业类型的新闻,可能以行业来查询的情况比较多,笔者之前维护过一个系统,属于行业资讯类,单表大概几百万,对行业ID建立索引后,列表页查询(Row_number)大概在200ms左右。利用行业ID进行表分区后,稳定表现在50ms左右。因为sqlserver优化器会根据表分区的函数定位到该分区,不对其他分区进行查询,所以提高比较明显。总的来说就是先判断要以哪个字段作为分区依据。

如果存在多个可进行分区的字段,那么如果他们之间是有关联的,比如:类别1,类别1的2级类别,类别1的3级类别,但是又是有互相关系的,可以对基础字段进行分区,及类别1。如果需要查询“类别1的2级类别”,可以把类别1加上,这样依然会定位对应的分区从而提高速度。

2.创建文件组

  • 一种利用sqlserver的管理器进行创建:

  • 利用命令进行创建,
alter database <数据库名> add filegroup <文件组名>

如果打算分10区就得添加10个文件组。

3.创建文件(真实的文件名)

alter database <数据库名称> add file <数据标识> to filegroup <文件组名称>--<数据标识> (name:文件名,fliename:物理路径文件名,size:文件初始大小kb/mb/gb/tb,filegrowth:文件自动增量kb/mb/gb/tb/%,maxsize:文件可以增加到的最大大小kb/mb/gb/tb/unlimited)

4.创建表分区

在这里设置分区的项目,PRIMARY则是默认的DB文件。一般先存储到分区,最后剩下的数据存储在PRIMARY。完成后生成脚本。

数据库Sql server 表分区相关推荐

  1. SQL Server 表分区实战系列(文章索引)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 前言(Introduction) 实战说明(In Action) 表分区逻辑结构图(Construction) 表分区学 ...

  2. SQL Server表分区【转】

    转自:http://www.cnblogs.com/knowledgesea/p/3696912.html SQL Server表分区 什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在一个 ...

  3. 52. SQL Server -- 表分区实战系列(文章索引)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 前言(Introduction) 实战说明(In Action) 表分区逻辑结构图(Construction) 表分区学 ...

  4. SQL Server表分区-水平分区

    SQL Server表分区,sql server水平分区 转自:http://www.cnblogs.com/knowledgesea/p/3696912.html  根据时间的,直接上T-SQL代码 ...

  5. sql server表分区_介绍分区表SQL Server增量统计信息

    sql server表分区 If you are maintaining a very large database, you might be well aware of the pain to p ...

  6. sql server表分区_SQL Server 2016增强功能– SQL截断表和表分区

    sql server表分区 The idea behind this article is to discuss the importance and the implication of SQL P ...

  7. SQL Server 表分区注意事项(转载)

    在园子里看到 听风吹雨 关于SQL Server 表分区注意事项 ,总结的太好了.备忘,方便以后查询! http://www.cnblogs.com/gaizai/archive/2011/05/31 ...

  8. SQL Server表分区的NULL值问题

    原文:SQL Server表分区的NULL值问题 SQL Server表分区的NULL值问题 SQL Server表分区只支持range分区这一种类型,往往会被大家吐槽 人家MySQL支持四种类型:R ...

  9. sql server表分区_SQL Server中的FORCESCAN和分区表

    sql server表分区 I would like to share one curios case that I recently came across. 我想分享一下我最近遇到的一个古玩案例. ...

最新文章

  1. C语言程序设计 搜集C/C++编译器
  2. 记录下UIButton的图文妙用和子控件的优先显示
  3. Eclipse中activiti插件的安装
  4. 排序算法(二)--选择排序法
  5. 单向关系中的JoinColumn
  6. hdu--1077--Catching Fish
  7. 中石油acm4985: Going Dutch 还钱问题(状压dp)
  8. VS2015产品激活密钥
  9. 反向题在测试问卷信效度_调查问卷的信效度分析
  10. 如何在和010editor中粘贴hex
  11. ant design vue 修改 table 的默认分页的pageSize
  12. WSL2迁移与硬盘读写测试
  13. 9999*9999这样的命令在python中无法运行_智慧树形势与政策2018章节答案
  14. 第二、三范式与BC范式的区别
  15. java qq协议 php_PHP使用SMTP协议发送邮件
  16. [Unity][UGUI][NGUI]地图指示UI屏幕边缘显示
  17. 【时序异常检测翻译】3.A Deep Neural Network for Unsupervised Anomaly Detection and Diagnosis in Multivariate T
  18. 这些年正Android - 身在他乡
  19. 国科大学习资料--模式识别与机器学习(黄庆明)--期末复习题3(含答案)
  20. python计算圆的体积_[宜配屋]听图阁

热门文章

  1. SharePoint Online 定制工作流表单
  2. Python :格式化日期
  3. java形参列表怎么理解_关于Java中形参与实参的理解
  4. c语言 static结构体,C语言实现动态结构体数组
  5. 程序员该如何爱惜身体?
  6. 香港中文大学计算机科学如何,香港中文大学「计算机科学」硕士研究生offer来了!...
  7. LDR伪指令和LDR指令及MOV指令的区别
  8. cherry-pick解决冲突
  9. 【树莓派】智能垃圾分类项目
  10. 微信将于12日退出苹果iOS系统?腾讯官方回复了...