本篇文章主要介绍了"SQL Server Storage",主要涉及到SQL Server,storage方面的内容,对于SqlServer感兴趣的同学可以参考一下:
SQL Server中的哪些对象会占用磁盘空间? 看到标题的第一瞬间,让我想到的就是这个问题。下面我们就试着来讲一讲这个问题.第一个磁盘空间使用大头肯定想到就是...
SQL Server中的哪些对象会占用磁盘空间? 看到标题的第一瞬间,让我想到的就是这个问题。下面我们就试着来讲一讲这个问题.
第一个磁盘空间使用大头肯定想到就是表。表只是一个逻辑对象,又没有想过表这个逻辑对象是怎么在磁盘上存储的呢? 《数据库系统实现原理》或者叫做《Database System implementation》一书中对表的存储方式应该有更详尽的描述。我们只讨论SQL SERVER的实现,所以不扯那么远。
SQL SERVER的空间分配,大的层面上来说,有file group, data file, log file之分。File group是逻辑上对data file和log file做分类。假设我们要新建一个database, 叫做lenistest。这个database 我们要分别将data file和log file归类到不同的file group里面,方便管理与维护。主要区别的是 primary file group和secondary file group,也就是 .mdf和.ndf的区别。
CREATEDATABASE [lenistest5]
ONPRIMARY( NAME = N'lenistest5',
FILENAME = N'E:\Data_BU\lenistest5.mdf' ,
SIZE = 10240KB ,
MAXSIZE = 102400KB ,
FILEGROWTH = 1024KB )
, filegroup maindatagroup
( NAME = N'lenistest5_data01',
FILENAME = N'E:\Data_BU\lenistest5_data01.ndf' ,
SIZE = 10240KB ,
MAXSIZE = 102400KB ,
FILEGROWTH = 1024KB )
, filegroup backupdatafg
( NAME = N'lenistest5_bk_data01',
FILENAME = N'E:\Data_BU\lenistest5_bk_data01.ndf' ,
SIZE = 10240KB ,
MAXSIZE = 10240KB ,
FILEGROWTH = 1024KB )
LOG ON( NAME = N'lenistest5_log',
FILENAME = N'E:\Data_BU\lenistest5_log.ldf' ,
SIZE = 10240KB ,
MAXSIZE = 10240KB ,
FILEGROWTH = 1024KB )
GO
用上面的这个SQL我们可以创建一个具有3个data file group, 和1个log file group的数据库 lenistest5 。.mdf全局唯一 ,不能有多个.mdf文件,但是可以有多个.ndf文件。我们是不是可以看到.mdf到底存储了什么?