解剖SQLSERVER 第八篇 OrcaMDF 现在支持多数据文件的数据库(译)
时间:2022-03-14 04:41
原文:
大家注意看:
A(4个字节)+B(16个字节)+C(6000个字节)=6020字节
刚好一条记录一页,下面说到,SQLSERVER分配完了一个区之后,一个区8个页面,当一个区分配完毕之后,SQLSERVER
会转到SampleDatabase_Data2.ndf数据文件继续分配页面,分配的值是9~16,一个区分配完毕之后又到
SampleDatabase_Data3.ndf数据文件继续分配页面,分配的值是17~24
自增值会一直到100,注意到A列有间隔,这是由于一个事实我们在每个数据文件的一个区里面以循环赛的方式来分配。
ID1~8在第一个数据文件,9~16在第二个数据文件最后17~24在第三个数据文件。由于这一点,页面25~32分配在第一个数据文件,一直这样下去
由于是堆表,我们使用文件分配顺序扫描,这导致我们获得结果1~8,25~32,49~56,73~80,97~100 全部都是从第一个文件开始,然后9~16,33~40
从第二个数据文件里读取然后到最后一个数据文件的剩余页面。想一下这是不是很怪,好吧,SQLSERVER里面也是完全一样的
不理解的童鞋可以看一下这篇文章《》或者
《》里面有相关介绍
文件组支持
OrcaMDF 也支持使用文件组,包括按比例分配填充在一个单独的 文件组里,举个例子,你可能创建下面的数据库和架构
CREATE DATABASE [SampleDatabase] ON PRIMARY ( NAME = N‘SampleDatabase_Data1‘, FILENAME = N‘C:SampleDatabase_Data1.mdf‘, SIZE = 3072KB, FILEGROWTH = 1024KB ) LOG ON ( NAME = N‘SampleDatabase_log‘, FILENAME = N‘C:SampleDatabase_log.ldf‘, SIZE = 3072KB, FILEGROWTH = 10% ) GO ALTER DATABASE [SampleDatabase] ADD FILEGROUP [SecondFilegroup] GO ALTER DATABASE [SampleDatabase] ADD FILE ( NAME = N‘SampleDatabase_Data2‘, FILENAME = N‘C:SampleDatabase_Data2.ndf‘, SIZE = 3072KB, FILEGROWTH = 1024KB ), ( NAME = N‘SampleDatabase_Data3‘, FILENAME = N‘C:SampleDatabase_Data3.ndf‘, SIZE = 3072KB, FILEGROWTH = 1024KB ) TO FILEGROUP [SecondFilegroup] GO USE SampleDatabase GO CREATE TABLE MyTable ( A float default(rand()), B datetime default(getdate()), C uniqueidentifier default(newid()), D char(5000) ) ON [SecondFilegroup] GO INSERT INTO MyTable DEFAULT VALUES GO 100
这将会引起MyTable去按比例填充分配在第二和第三个数据文件之间(D列用来占位置,确保让SQLSERVER分配100个页面来装载数据,好让对文件组里的两个数据文件进行
分配填充)数据只会分别对第二和第三数据文件进行填充而主数据文件不受影响
跟先前的例子的解释一样,结果如下
将会一直到100
第八篇完