zoukankan      html  css  js  c++  java
  • 01.SQLServer性能优化之----强大的文件组----分盘存储

     

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

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

    举个例子:

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

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

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

    复制代码
    --创建数据库
    create database BigValues
    on primary                    --数据库文件,主文件组
    (
        name='BigValues_Data', --逻辑名
        size=10mb,                --初始大小
        filegrowth=10%,            --文件增长
        maxsize=1024mb,            --最大值
        filename=N'E:SQLBigValues_Data.mdf'--存放路径(包含文件后缀名)
    ),
    (
        name='BigValues_Data1',
        size=10mb,
        filegrowth=10%,
        maxsize=1024mb,
        filename=N'F:WorkSQLBigValues_Data1.mdf'
    ),
    filegroup TestData --TestData文件组(表创建到不同的文件组里面可以分担压力)
    (
        name='BigValues_Data_Num1',
        size=10mb,
        filegrowth=10%,
        maxsize=1024mb,
        filename=N'E:SQLBigValues_Data_Num1.ndf'
    ),
    (
        name='BigValues_Data_Num2',
        size=10mb,
        filegrowth=10%,
        maxsize=1024mb,
        filename=N'F:WorkSQLBigValues_Data_Num2.ndf'
    )
    log on --日记
    (
        name='BigValues_Log1',
        size=5mb,
        filegrowth=5%,
        filename=N'E:SQLBigValues_log1.ldf'
    ),
    (
        name='BigValues_Log2',
        size=5mb,
        filegrowth=5%,
        filename=N'F:WorkSQLBigValues_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

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

  • 相关阅读:
    替身邮:同一个邮箱多个名字
    CAGD: 第九章 几何连续性1
    Windows 2008 server 安装 Windows Live Essential 2011 的问题
    设计、仿真、工艺、加工、优化、开发交流QQ群 106930856 行业软件、二次开发、优化技术
    著佐权(Copyleft)
    Proe 二次开发:Session(会话) 对象
    CAGD: 第八章 曲线的几何处理技术
    UG/NX FEA 网格
    CAGD第十二章B样条曲面2
    推荐网络硬盘:金山快盘 15G
  • 原文地址:https://www.cnblogs.com/lykbk/p/vcvcvcvcvvcvcv44545454544545.html
Copyright © 2011-2022 走看看