代码改变世界

随笔分类 - 00.SQL Server 表分区

SQL Server 大数据搬迁之文件组备份还原实战

2014-03-05 11:15 by 听风吹雨, 14546 阅读, 收藏, 编辑
摘要: 有一个数据库大概在700G左右,需要从服务器A搬迁到服务器B,两台服务器网络传输速度可以达到8MB/s,怎么做才能更快的搬迁并且宕机时间最短呢?   数据库业务逻辑概述:这个数据库只会插入数据,每天大概有300W条数据,不会对数据进行修改,只有一个表比较大,并且这个表是以自增ID作为分区依据列的,文件组会被重用,数据库为简单恢复模式,我定时会对表数据进行交换分区删除数据;三.解决方案(Solution)之前我也写过关于搬迁数据库的一些文章: 阅读全文

SQL Server 批量主分区备份(Multiple Jobs)

2014-02-11 11:21 by 听风吹雨, 3009 阅读, 收藏, 编辑
摘要: 在公司的内网有台数据库的测试服务器,这台服务器是提供给开发人员使用的,在上面有很多的数据库,有些是临时系统用到的数据库,这些数据库有一个共同点:数据库表结构比较重要,数据库只有一些测试数据,也就是说这些数据库都很小,而整台服务器的数据库又非常多;   现在有这样一个需求,希望间隔一段时间就备份所有数据库,所以这里写了这篇文章,这也是另外一篇文章SQL Server 批量备份数据库(主分区)的基础; 阅读全文

SQL Server 批量主分区备份(One Job)

2014-01-28 12:18 by 听风吹雨, 3230 阅读, 收藏, 编辑
摘要: 一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents)背景(Contexts)案例分析(Case)实现代码(SQL Codes)主分区完整、差异还原(Primary Backup And Restore)参考文献(References)二.背景(Contexts) 在我的数据库实例中,有很多下图所示的数据库,这些数据库的名称是有规律的,每个数据库包含的表都是相同的,其中2个表是类似流水记录的表,表的数据量会比较大,占用的空间有几十G到上百G不等,这2个表相对于其它的配置表来说是比较不重要的 阅读全文

SQL Server 解读【已分区索引的特殊指导原则】(3) - 非聚集索引分区

2013-07-26 15:01 by 听风吹雨, 2684 阅读, 收藏, 编辑
摘要: 一、前言在MSDN上看到一篇关于SQL Server 表分区的文档:已分区索引的特殊指导原则,如果你对表分区没有实战经验的话是比较难理解文档里面描述的意思。这里我就里面的一些概念进行讲解,方便大家的交流。SQL Server 解读【已分区索引的特殊指导原则】(1)- 索引对齐SQL Server 解读【已分区索引的特殊指导原则】(2)- 唯一索引分区二、解读【对非聚集索引进行分区】“对唯一的非聚集索引进行分区时,索引键必须包含分区依据列。对非唯一的非聚集索引进行分区时 阅读全文

SQL Server 解读【已分区索引的特殊指导原则】(2)- 唯一索引分区

2013-07-26 14:52 by 听风吹雨, 2112 阅读, 收藏, 编辑
摘要: 一、前言在MSDN上看到一篇关于SQL Server 表分区的文档:已分区索引的特殊指导原则,如果你对表分区没有实战经验的话是比较难理解文档里面描述的意思。这里我就里面的一些概念进行讲解,方便大家的交流。SQL Server 解读【已分区索引的特殊指导原则】(1)二、解读【对唯一索引进行分区】“对唯一索引(聚集或非聚集)进行分区时,必须从唯一索引键使用的分区依据列中选择分区依据列。此限制将使 SQL Server 只调查单个分区,以确保表中不存在重复的新键值。 阅读全文

SQL Server 解读【已分区索引的特殊指导原则】(1)- 索引对齐

2013-07-25 16:51 by 听风吹雨, 4506 阅读, 收藏, 编辑
摘要: 一、前言在MSDN上看到一篇关于SQL Server 表分区的文档:已分区索引的特殊指导原则,如果你对表分区没有实战经验的话是比较难理解文档里面描述的意思。这里我就里面的一些概念进行讲解,方便大家的交流。(Figure0:索引与基表对齐)二、解读“索引要与其基表对齐,并不需要与基表参与相同的命名分区函数。但是,索引和基表的分区函数在实质上必须相同,即:1) 分区函数的参数具有相同的数据类型;2) 分区函数定义了相同数目的分区;3) 分区函数为分区定义了相同的边界值。 阅读全文

SQL Server 磁盘空间告急(磁盘扩容)

2012-11-27 10:00 by 听风吹雨, 15649 阅读, 收藏, 编辑
摘要: 一、背景在线上系统中,如果我们发现存放数据库文件的磁盘空间不够,我们应该怎么办呢?新买一个硬盘挂载上去可以嘛?(linux下可以直接挂载硬盘进行扩容),但是我们的SQL Server是运行在Windows下的,有什么办法可以解决这燃眉之急呢?有两种方法可以解决上面的问题:第一种就是把数据库磁盘转换为【动态磁盘】,新增新的磁盘就可以解决了;第二种就是我今天要讲述的,使用SQL Server在其它磁盘(或者逻辑分区)中添加新的文件,添加完成后,SQL Server马上就能进新的数据了 阅读全文

SQL Server 当表分区遇上唯一约束

2012-02-23 18:58 by 听风吹雨, 5840 阅读, 收藏, 编辑
摘要: 一、前言我已经在高兴对服务器创建了表分区并且获得良好性能和自动化管理分区切换的时候,某一天,开发人员告诉我,某表的两个字段的数据不唯一,需要为这两个字段创建唯一索引的时候,这一切就变得不完美了。列的唯一,这个实际上是一个唯一索引。使用关键字unique建立。二、背景我有一个表TestUnique,这个表使用分区方案[Sch_TestUnique_Id],它是以Id做为分区依据列的,这个Id也是一个聚集索引,表中其它索引是跟分区对齐的(创建其它非聚集索引的时候使用了分区方案或者不指定-默认就是分区方案),而且我我这个表很大,我需要定时的进行交换分区(SWITCH PARTITION、滑动窗口、切 阅读全文

SQL Server 维护计划备份主分区

2011-10-09 11:52 by 听风吹雨, 12904 阅读, 收藏, 编辑
摘要: 经过一段时间表分区的实践,我们先对表进行分区(形成表分区模板);表数据搬迁模板(迁移数据到新的分区表);分区管理自动化(自动化进行交换分区);详情请见:SQL Server 表分区实战系列(文章索引) 再进一步延伸,我们就需要对这些做了表分区的库进行备份了,之前写过一篇博文:SQL Server 备份和还原全攻略,这里描述了MSSQL的一些备份概念,今天这里虽然没有用到,但是像差异备份在备份比较大的情况下使用就会有很好的效果。 阅读全文

SQL Server 自动化管理分区设计方案(图解)

2011-07-21 14:49 by 听风吹雨, 4958 阅读, 收藏, 编辑
摘要: 一、设计说明设计这个自动化的目的是想要交替、重复地使用固定的几个分区(分区编号01~05)来保存数据,当最后一个分区就是快满的时候,我们会把最旧数据的分区的数据清空出分区,新数据就可以使用老分区空间了。应用这个自动化管理分区的环境是有些限制的,其一:分区的数据是呈现递增的,比如分区字段是自增Id值,或者是以日期作为分区;其二:可以接受历史数据被移除分区表带来的问题。其三:一天进库的数量不应大于分区管理表 阅读全文

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

2011-07-01 15:45 by 听风吹雨, 20242 阅读, 收藏, 编辑
摘要: 前段时间在忙数据库的表分区,经常会去上网找资料,但是在找到都是测试表分区的文章,没有实战经验的,所以在我把表分区运用到实际项目中的时候遇到了很多问题。 比如:如何确认分区字段?分区字段与聚集索引的区别与联系?如何存储分区索引?MSDN说交换分区是以秒计算,但执行40G交换分区超时?如何解决分区不断增长的问题?自动化交换分区的陷阱? 这些问题都只能自己在实战中摸索答案,后来我写了几篇关于这些问题的博文,希望对那些需要实战帮助的童鞋有一点提示和帮助。希望大家拍砖。 阅读全文

SQL Server 表分区注意事项

2011-05-31 17:51 by 听风吹雨, 9347 阅读, 收藏, 编辑
摘要: 一、表分区文章索引SQL Server 合并(删除)分区解惑SQL Server 2005 分区模板与实例SQL Server 动态生成分区脚本SQL Server 2005 自动化删除表分区设计方案二、目的这段时间,在SQL Server的生产环境中尝试了不同方式的表分区,积累了一些这方面的经验,这里就表分区的一些注意事项做些记录。三、注意事项1. 表分区的边界值问题,在使用Left和Right的时候需要注意,特别是在时间分割上需要特别注意,通常情况下,以00:00:00.000是最可靠的 阅读全文

SQL Server 2005 自动化删除表分区设计方案

2011-02-25 17:31 by 听风吹雨, 6686 阅读, 收藏, 编辑
摘要: 一、目的在前面的文章中我已经介绍了SQL Server合并(删除)分区解惑 和SQL Server 2005 分区模板与实例 和SQL Server 动态生成分区脚本,这篇文章就是在上面3篇文章衍生出来的。我们的服务器的数据已经有了800G,并且每天进数据大概有120W条记录(数据空间大概为7G),而服务器现在已经没有太多的磁盘空间了,面对这样的问题,一般都是使用交换表分区来快速删除数据,并使用之前的分区来存放新进的数据,如果每次都人工的话就太麻烦了 阅读全文

SQL Server 动态生成分区脚本

2011-01-14 14:48 by 听风吹雨, 12368 阅读, 收藏, 编辑
摘要: 一、前言前段时间使用表分区比较多,虽然已经写了SQL Server 合并(删除)分区解惑、SQL Server 2005 分区模板与实例,但是在实践中一直感觉修改SQL脚本的时间比较多,一直想抽个时间来把分区脚本进行动态化,今天终于付之于行动了。需要说明的一点,下面的脚本并不能满足所有情况,用户可以根据自己的需要进行相应的调整,应该可以满足你的需求的。在SQL Server 2005中只能通过SQL脚本来创建表分区,而在SQL Server 2008的SSMS中已经提供了操作界面进行表分区 阅读全文

SQL Server 2005 分区模板与实例

2010-12-31 16:23 by 听风吹雨, 7835 阅读, 收藏, 编辑
摘要: 一、场景这一段时间使用SQL Server 2005 对几个系统进行表分区,这几个系统都有一些特点,比如数据库某张表持续增长,给数据库带来了很大的压力。现在假如提供一台新的服务器,那么我们应该如何规划这个数据库呢?应该如何进行最小宕机时间的数据库转移呢?如果规划数据库呢?二、环境准备要搭建一个好的系统,首先要从硬件和操作系统出发,好的设置和好的规划是高性能的前提,下面我就来说说自己的一些看法,欢迎大家提出异议;1) 对磁盘做RAID0(比如3*300G) 阅读全文

SQL Server 合并(删除)分区解惑

2010-11-05 16:33 by 听风吹雨, 13890 阅读, 收藏, 编辑
摘要: 一、准备在SQL Server 2005版本之后就有了表分区的概念与应用,在分区操作里面有一个叫做合并分区的功能,也被称为删除分区。分区所处的文件组和文件是不会被删除的,只会对数据进行转移合并。合并分区时需要注意所带来的IO问题。合并分区常见情景:发现某个分区的数据很少,为了方便管理可以考虑合并分区。需要进行统计、四则运算的时候也可以考虑合并分区,这种情形下并没有对比合并与分区之间的性能,如果某位童鞋有兴趣和环境的话可以提供这方面的数据 阅读全文