sqlserver-表分区
最近对公司数据库性能方面改造。现已初建成效。
公司原先数据库问题颇多,简单列举下:
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-表分区的更多相关文章
- sqlserver表分区
参考:http://www.cnblogs.com/knowledgesea/p/3696912.html 及百度搜索sqlserver表分区 create partition function sg ...
- sqlserver表分区与调优与行列转换
转自: http://www.cnblogs.com/knowledgesea/p/3696912.html http://www.open-open.com/lib/view/open1418462 ...
- (转)SQLSERVER表分区的介绍(一)
下面进入正题吧,很多时候当单张数据表的数据量比较大的时候比如千万级别条记录.上亿级别记录,如果不做优化,那么查询的效率大家清楚. 有经验的人会通过各种手段做优化,其中表分区就是其中一种手段. 个人对表 ...
- sqlserver表分区小结
为什么要表分区? 当一个表的数据量太大的时候,我们最想做的一件事是什么?将这个表一分为二或者更多分,但是表还是这个表,只是将其内容存储分开,这样读取就快了N倍了 原理:表数据是无法放在文件中的,但是 ...
- (转)SQLSERVER表分区的介绍(二)
分区函数和分区方案的创建和使用方法 具体设计过程如下: (1)首先创建一个名为partionTest的数据库.然后分别为数据库partionTest添加四个文件组,文件组名依次为FileGroup00 ...
- 优化SQLServer——表和分区索引(二)
简介 之前一篇简单的介绍了语法和一些基本的概念,隔了一段时间,觉得有必要细致的通过实例来总结一下这部分内容.如之前所说,分区就是讲大型的对象(表)分成更小的块来管理,基本单位是行.这也就产生了 ...
- 优化SQLServer——表和分区索引
概念: 简单地说,分区是将大型的对象(如表)分成更小的且易于管理的小块.分区的基本单位是行,需要注意的是与分区视图不同的地方时,分区必须位于同一个数据库内. 分区的原因: 对于非 ...
- 第十三章——表和索引分区(1)——使用Range Left进行表分区
原文:第十三章--表和索引分区(1)--使用Range Left进行表分区 前言: 如果数据表的数据持续增长,并且表中的数据量已经达到数十亿甚至更多,数据的查询和操作将非常困难,面对非常庞大的表,几时 ...
- 如何在大型的并且有表分区的数据库中进行DBCC CHECKDB操作
如何在大型的并且有表分区的数据库中进行DBCC CHECKDB操作 其实这个问题已经在<SQLSERVER企业级平台管理实践>里徐老师已经讲过了,不过我想用自己的语言再讲详细一些 笔记链接 ...
- SqlServer 自动化分区方案
本文是我关于数据库分区的方案的一些想法,或许有些问题.仅供大家讨论.SqlServer (SqlServer 2005\SqlServer 2008)实现分区需要在企业版下进行. SqlServer的 ...
随机推荐
- Tidb缩减tikv机器
生产环境下,如何缩减机器? 1.首先是检查出来那个tikv节点需要缩减 " -d store { ", "stores": [ { "store&qu ...
- ActiveX多线程回调JavaScript
http://www.cnblogs.com/zdxster/archive/2011/01/27/1945872.html
- 不能用c99的情况下,如何动态定义数组的长度
#include <stdio.h>#include <stdlib.h> int main(int argc, char const *argv[]){ int num ...
- java通过反射调用有参数的方法
public static void eachCfg(Class Initclass,String taskType){ Field[] fields = Initclass.getDeclaredF ...
- UMI开源项目
本文主要围绕UMI是什么及其特征.安装应用.模板例子等四个方面内容来讲解UMI,希望能够对初学者有所启发. 一. UMI是什么 UMI是可插拔的企业级反应应用程序框架. 二. 特征 特征
- mysql 导出表数据表结构
在命令行下mysql的数据导出有个很好用命令mysqldump,它的参数有一大把,可以这样查看: mysqldump 最常用的: mysqldump -uroot -pmysql databasefo ...
- 客户端本地存储的比较及使用window.name数据传输
一:cookie: 1. 什么是cookie? Cookie是在客户端用于存储会话信息的,用户请求页面在web服务器与浏览器之间传递.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cooki ...
- 几个简单易懂的排序算法php
几个简单易懂的排序算法.排序算法,在应用到解决实际问题的时候(由于不一定总是数字排序),重点要分析出什么时候该交换位置. <?php // 冒泡排序 function bubble_sort(a ...
- Android Layout属性笔记
android:id 为控件指定相应的ID android:text 指定控件当中显示的文字,需要注意的是,这里尽量使用strings.xml文件当中的字符串 android:gravity 指定Vi ...
- Cloud Foundry 组件
原文:https://blog.csdn.net/little_crab_0924/article/details/78022391 Cloud Foundry 组件概述 Cloud Foundry ...