首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >01.SQLServer性能优化之----强大的文件组----分盘存储

01.SQLServer性能优化之----强大的文件组----分盘存储

作者头像
逸鹏
发布2018-04-10 10:53:27
7930
发布2018-04-10 10:53:27
举报
文章被收录于专栏:逸鹏说道逸鹏说道

汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql

文章内容皆自己的理解,如有不足之处欢迎指正~谢谢

前天有学弟问逆天:“逆天,有没有一种方式可以让我一个表存到两个数据库文件中,或者说怎么把一个表的数据平摊到其他数据库文件中?”

(⊙o⊙)…,逆天数据库优化不是很强悍,不过类似的情景倒是见过,可以给你一个思路。比如说我们在创建数据库的时候就可以好好利用文件组。

举个例子:

我们一般创建数据库都是这么来的:

create database BigValues
on primary                    --数据库文件,主文件组
(
    name='BigValues_Data', --逻辑名
    size=10mb,                --初始大小
    filegrowth=10%,            --文件增长
    maxsize=1024mb,            --最大值
    filename=N'E:\SQL\BigValues_Data.mdf'--存放路径(包含文件后缀名)
)
log on --日记
(
    name='BigValues_Log',
    size=5mb,
    filegrowth=5%,
    filename=N'E:\SQL\BigValues_log.ldf')

利用文件组就可以这么创建

--创建数据库create database BigValueson primary                    --数据库文件,主文件组(
    name='BigValues_Data', --逻辑名
    size=10mb,                --初始大小
    filegrowth=10%,            --文件增长
    maxsize=1024mb,            --最大值
    filename=N'E:\SQL\BigValues_Data.mdf'--存放路径(包含文件后缀名)),
(
    name='BigValues_Data1',
    size=10mb,
    filegrowth=10%,
    maxsize=1024mb,
    filename=N'F:\Work\SQL\BigValues_Data1.mdf'),
filegroup TestData --TestData文件组(表创建到不同的文件组里面可以分担压力)(
    name='BigValues_Data_Num1',
    size=10mb,
    filegrowth=10%,
    maxsize=1024mb,
    filename=N'E:\SQL\BigValues_Data_Num1.ndf'),
(
    name='BigValues_Data_Num2',
    size=10mb,
    filegrowth=10%,
    maxsize=1024mb,
    filename=N'F:\Work\SQL\BigValues_Data_Num2.ndf')log on --日记(
    name='BigValues_Log1',
    size=5mb,
    filegrowth=5%,
    filename=N'E:\SQL\BigValues_log1.ldf'),
(
    name='BigValues_Log2',
    size=5mb,
    filegrowth=5%,
    filename=N'F:\Work\SQL\BigValues_log2.ldf')go

我们要是想查看文件组的信息就可以执行这个存储过程:(跟上图一起看)

exec sp_helpfilegroup --查看文件组

学弟的疑问就来了,为啥我创建表的时候都是在主文件组里呢?

那么想在指定文件组里创建表怎么搞呢?

看案例:(创建表的时候在最后写上 on 文件组名)

--在指定文件组中创建文件create table Test
(
    Tid int primary key identity,
    Title01 nvarchar(100) default('标题01'),    
    Title02 nvarchar(100) default('标题02'),    
    Title03 nvarchar(100) default('标题03'),    
    DataStatus tinyint default(0) --0~255 size:1字节) on TestData

我们插点数据看看吧:

有没有发现什么?数据平坦了哇(可以想象,如果平摊到多个文件各个盘,那么你的写入或者读写数据的效率是多么的高了~)

下一篇:02.SQLServer性能优化之---牛逼的OSQL----大数据导入 http://www.cnblogs.com/dunitian/p/5276449.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-03-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 我为Net狂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档