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

Posted 微笑点燃希望

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了01.SQLServer性能优化之----强大的文件组----分盘存储相关的知识,希望对你有一定的参考价值。

 

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

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

举个例子:

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

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

技术分享

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

技术分享
--创建数据库
create database BigValues
on primary                    --数据库文件,主文件组
(
    name=BigValues_Data‘, --逻辑名
    size=10mb,                --初始大小
    filegrowth=10%,            --文件增长
    maxsize=1024mb,            --最大值
    filename=NE:\SQL\BigValues_Data.mdf--存放路径(包含文件后缀名)
),
(
    name=BigValues_Data1,
    size=10mb,
    filegrowth=10%,
    maxsize=1024mb,
    filename=NF:\Work\SQL\BigValues_Data1.mdf
),
filegroup TestData --TestData文件组(表创建到不同的文件组里面可以分担压力)
(
    name=BigValues_Data_Num1,
    size=10mb,
    filegrowth=10%,
    maxsize=1024mb,
    filename=NE:\SQL\BigValues_Data_Num1.ndf
),
(
    name=BigValues_Data_Num2,
    size=10mb,
    filegrowth=10%,
    maxsize=1024mb,
    filename=NF:\Work\SQL\BigValues_Data_Num2.ndf
)
log on --日记
(
    name=BigValues_Log1,
    size=5mb,
    filegrowth=5%,
    filename=NE:\SQL\BigValues_log1.ldf
),
(
    name=BigValues_Log2,
    size=5mb,
    filegrowth=5%,
    filename=NF:\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
技术分享

我们插点数据看看吧:

技术分享 View Code

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

技术分享

以上是关于01.SQLServer性能优化之----强大的文件组----分盘存储的主要内容,如果未能解决你的问题,请参考以下文章

mysql性能优化之索引优化(转)

web性能优化之浏览器网页渲染原理

unity性能优化之——视锥体剔除(Frustum Culling)

Android性能优化之TraceView和Lint使用详解

Google官方 详解 Android 性能优化史诗巨著之内存篇

Android 性能优化之 LeakCanary使用方法