最近对公司数据库性能方面改造。现已初建成效。

公司原先数据库问题颇多,简单列举下:

1.数据表文档缺失。

2.数据库900多张表,接近一半都是备份和一些报表,没有分库处理

3.大数量的表按照年份人工导出创建历史库

4.字段类型存在滥用,毫无数据库优化

如果有哪位兄弟不幸同命相连 ,说的寒心点,这基本就是个烂摊子。好在天下难事必作于细,一步一步优化。

我的优化步骤是分析业务代码->补全数据库文档->改造业务系统->优化数据库->改造业务系统

由于业务太过复杂,不易重做,所以还是采取比较悲催的做法。

经过此次也算是个学习与实践的过程吧。

使用表分区的场景:

其实公司的数据量真不多,每年最多的数据就百来万,和上家根本没法比。但是由于数据库设计实在糟糕,查询性能简直不忍直视啊。

除了建索引外,我还对对日期进行的分区处理。

以下是用到的命令, 记录下备用

--========================================
-- 创建文件组

选中数据库->属性->文件组->新建

--========================================
-- 创建表分区函数
create partition function fnPartition (int) as Range right
for values(100,200,300)

select * from sys.partition_functions
--========================================
-- 创建表分区架构
create partition scheme schemaforpartition
as partition fnPartition
to ([primary],[primary],[primary],[primary])
select * from sys.partition_schemes

--========================================
-- 修改表分区
alter table Base_User drop constraint PK_Base_User_UserID--删除现有表的主键(对有全文索引的只能再管理器中去除主键)
ALTER TABLE [dbo].Base_User WITH NOCHECK ADD
CONSTRAINT PK_Base_User_ID PRIMARY KEY CLUSTERED
(
[UserID]--注意ID这里是你原来的那些主键组成的列
) ON schemaforpartition ([UserID])--将主键创建到ps_Product_Scheme_mTb分区函数上

SELECT *, $PARTITION.fnPartition([UserID]) AS PF FROM Base_User
--=============================================
-- 分割后多出来的分区存在在哪个文件组
alter partition scheme schemaforpartition next Used 'primary'
--添加分割点
alter partition function fnPartition() split range (400)
--=============================================
--合并分割点
alter partition function fnPartition() merge range (100)

参考:

http://kb.cnblogs.com/page/73921/

http://www.cnblogs.com/sienpower/archive/2011/12/31/2308741.html

sqlserver-表分区的更多相关文章

  1. sqlserver表分区

    参考:http://www.cnblogs.com/knowledgesea/p/3696912.html 及百度搜索sqlserver表分区 create partition function sg ...

  2. sqlserver表分区与调优与行列转换

    转自: http://www.cnblogs.com/knowledgesea/p/3696912.html http://www.open-open.com/lib/view/open1418462 ...

  3. (转)SQLSERVER表分区的介绍(一)

    下面进入正题吧,很多时候当单张数据表的数据量比较大的时候比如千万级别条记录.上亿级别记录,如果不做优化,那么查询的效率大家清楚. 有经验的人会通过各种手段做优化,其中表分区就是其中一种手段. 个人对表 ...

  4. sqlserver表分区小结

    为什么要表分区?  当一个表的数据量太大的时候,我们最想做的一件事是什么?将这个表一分为二或者更多分,但是表还是这个表,只是将其内容存储分开,这样读取就快了N倍了 原理:表数据是无法放在文件中的,但是 ...

  5. (转)SQLSERVER表分区的介绍(二)

    分区函数和分区方案的创建和使用方法 具体设计过程如下: (1)首先创建一个名为partionTest的数据库.然后分别为数据库partionTest添加四个文件组,文件组名依次为FileGroup00 ...

  6. 优化SQLServer——表和分区索引(二)

    简介     之前一篇简单的介绍了语法和一些基本的概念,隔了一段时间,觉得有必要细致的通过实例来总结一下这部分内容.如之前所说,分区就是讲大型的对象(表)分成更小的块来管理,基本单位是行.这也就产生了 ...

  7. 优化SQLServer——表和分区索引

    概念: 简单地说,分区是将大型的对象(如表)分成更小的且易于管理的小块.分区的基本单位是行,需要注意的是与分区视图不同的地方时,分区必须位于同一个数据库内. 分区的原因:            对于非 ...

  8. 第十三章——表和索引分区(1)——使用Range Left进行表分区

    原文:第十三章--表和索引分区(1)--使用Range Left进行表分区 前言: 如果数据表的数据持续增长,并且表中的数据量已经达到数十亿甚至更多,数据的查询和操作将非常困难,面对非常庞大的表,几时 ...

  9. 如何在大型的并且有表分区的数据库中进行DBCC CHECKDB操作

    如何在大型的并且有表分区的数据库中进行DBCC CHECKDB操作 其实这个问题已经在<SQLSERVER企业级平台管理实践>里徐老师已经讲过了,不过我想用自己的语言再讲详细一些 笔记链接 ...

  10. SqlServer 自动化分区方案

    本文是我关于数据库分区的方案的一些想法,或许有些问题.仅供大家讨论.SqlServer (SqlServer 2005\SqlServer 2008)实现分区需要在企业版下进行. SqlServer的 ...

随机推荐

  1. django复习-3-请求与响应

    一.请求request 前端向后端传递参数有几种方式? 提取URL的特定部分,如/weather/beijing/2018,可以在服务器端的路由中用正则表达式截取: "http://127. ...

  2. ECStore图片云端集群存储实践-又拍云存储

    通过又拍云存储REST API ,为ECStore新增图片存储引擎,从而达到图片数据与主站数据分离.提高网站性能. 图片存储引擎相关文件添加与修改 一共涉及到ECStore 2个APP 的文件添加和修 ...

  3. Python接口自动化--SSL 3

    官方文档参考地址: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings 针对SSL Warnings,u ...

  4. Debian apt-get 用法

    (说明:sudo--使用超级管理员权限进行apt-get ; packagename--代表安装的软件包名) sudo apt-get update —— 在修改/etc/apt/sources.li ...

  5. FreeChart柱状图中如何取消柱子的倒影

    JFreeChart柱状图中如何取消柱子的倒影,让柱子显示为一个平面图 Render 该怎么设置呢? 问题补充:已解决 intervalBarRender.setShadowVisible(false ...

  6. PHPer是草根吗

    以下文字并没有非常多的技术词汇,所以只要对PHP感兴趣的人都可以看看. PHPer是草根吗? 从PHP诞生之日起,PHP就开始在Web应用方面为广大的程序员服务.同时,作为针对Web开发量身定制的脚本 ...

  7. Scala学习之路 (十)Scala的Actor

    一.Scala中的并发编程 1.Java中的并发编程 ①Java中的并发编程基本上满足了事件之间相互独立,但是事件能够同时发生的场景的需要. ②Java中的并发编程是基于共享数据和加锁的一种机制,即会 ...

  8. android camera 摄像头预览画面变形

    问题:最近在处理一下camera的问题,发现在竖屏时预览图像会变形,而横屏时正常.但有的手机则是横竖屏都会变形. 结果:解决了预览变形的问题,同时支持前后摄像头,预览无变形,拍照生成的jpg照片方向正 ...

  9. Python基础(11)——反射、异常处理

    1.反射 以下均是对对象的操作,而不是对类 class Foo(object): def __init__(self): self.name = 'wupeiqi' def func(self): r ...

  10. JS省市区联动效果

    省市区联动下拉效果在WEB中应用非常广泛,尤其在电商网站最为常见.一般使用Ajax实现无刷新下拉联动.利用jQuery,通过读取JSON数据,实现无刷新动态下拉省市二(三)级联动效果. 首先我们可以看 ...