在处理物理文件存储的时候,需要知道SQL Server拥有三个不同的存储条件。它们分别是文件,文件组和磁盘。虽然它们中的每一个都是完全不同的,但将它们结合起来工作给了SQL Server数据库引擎一个非常灵活的方式来定义数据实际存储的位置。
磁盘
磁盘是服务器中的物理存储介质。查看服务器的前端你会发现,磁盘设备安放在服务器前端并且磁盘上会有灯在闪烁。在拥有大量服务器的大型的环境中,你可能会有一个存储阵列(也称为SAN)。用最为简单的语句来描述存储阵列就是把一堆磁盘放在一个大盒子里。这些小磁盘的空间通过不同方式加以组合并且其中部分空间会分配给特定的服务器。存储阵列的大小可能从几TB到几千TB,而特定服务器只会访问空间中很小的一部分。在这两种情况下,对于SQL Server而言,要么使用服务器前端的本地磁盘,要么使用一个大的存储阵列,他们的概念是相同的。连接到服务器的存储在Windows中是作为一个驱动器符号加以呈现的。
登录到服务器控制台,你会看到一个非常熟悉的电脑图标。这是因为服务器机房或是数据中心中运行着SQL Server的电脑所运行的Windows与你办公桌上或是家里的电脑是类似的(假设你所使用的不是Linux或Mac)。如果你打开一台服务器上的“我的电脑”,你会看到硬盘驱动器,就如同你在自家电脑上看到的一样。在服务器上可能会有比你自己的工作站或是家用电脑更多的硬盘驱动器,并且这些服务器上的驱动器可能会有比你自己工作站更多的空间,但是这一思想仍是大同小异的。任何需要写入到磁盘并在之后由用户或是程序进行访问的文件,对于Microsoft SQL Server来说仅仅是作为一个大型复杂的程序而已。
文件
SQL Server数据库使用的文件叫做MDF,NDF以及LDF文件(大多数情况下)。这些都是位于磁盘中的物理文件(参见上面所述)。一个数据库至少会有两个文件,其中之一是MDF文件,它保存着所有的数据,另一个是LDF文件,它保存的是事务日志。事务日志最简单的形式是一个数据库首次创建以来所发生的所有变更的完整记录。我们通过备份来管理事务日志的大小(我将在后续的文章中讨论),所以现在我们只能说事务日志所保存的是MDF数据文件中一切变更的记录。如果添加了一条记录就会首先写入事务日志。如果删除一条记录,则在真正从数据库中删除之前会将变更写入事务日志。
NDF数据库文件只是额外的数据文件。而数据库必须要有一个MDF和一个LDF数据文件,NDF数据文件的使用则是可选的。使用NDF数据文件来替代MDF数据文件并没有性能上的好处(99.9%的情况下是这样但是这已经是足够的了)。只有一种可能能够通过使用NDF数据文件获得性能好处,那就是MDF数据文件在一个物理硬盘上并且NDF在另一个不同的物理硬盘上。
每个特定文件存在且仅存在于一个硬盘上。如果你需要存储数据到多个硬盘上,那么你就需要多个数据文件。
文件组
文件组只不过是文件的逻辑分组。我们使用文件组,这样特定的表就可以比任何一个特定硬盘要大。如果我们在创建表的时候没有文件组并告诉SQL Server去哪里存储此表,那么我们就必须告诉它用哪个物理数据文件来存储数据。这就意味着这些表会受到最大可用磁盘大小的限制。由于我们希望能够在多个物理文件间传递数据,我们便有了文件组。文件组允许将多个文件放入一个单一群组。SQL Server通过将部分数据库放置到文件组中的所有文件上来在文件组中创建表。这就允许我们在所能连接到的服务器的磁盘数量受限和磁盘大小受限的情况下拥有非常大的表。
当我们创建一个新表(或是索引、或是服务代理队列、或是其他任何存储数据的物理对象)时,我们会指定想要在哪个文件组中创建此对象。这就允许我们可以利用作为文件组成员的任何文件。如果存在多个文件且此对象是在所有物理文件上进行传递的。如果在我们创建表的时候只有一个文件,但之后我们会添加另外的文件到文件组,则我们就不需要做什么了。SQL Server会如旧文件一样自动启用新文件。当你添加一个新文件到文件组,SQL Server并不会调整数据库文件内的数据,你必须通过重新建立所有的索引来手动设置,而新记录会写入到新文件。
当SQL Server在将数据写入到文件组中文件的时候,会使用到称之为比例填充的东西。这就意味着SQL Server会尽量使数据文件中的空闲空间量相同。虽然会受到很多因素的影响而使得比例填充不尽完美,但SQL Server会尽量做到最好。
希望以上阐述有助于解释这三个互补而又不尽相同的概念。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
翻译
相关推荐
-
云端SQL Server高可用性最佳做法
与内部部署相比,在云端运行SQL Server可为数据库软件用户提供更多的灵活性和可扩展性,也可能更省钱。但云 […]
-
绘制数据关系图的利器:SQL Server 图像数据库工具
SQL Server 2017新增了图形数据库功能,你可以使用图结构来表示不同数据元素之间的关系。
-
如何在Azure部署时选择合适的SQL Server?
想要在Azure上运行SQL Server,企业一般会面临两种选择:在Azure虚拟机上安装SQL Server或使用Azure SQL Database。
-
Linux支持的引入 推动了SQL Server 2016集成服务的发展
随着SQL Server的不断发展,集成服务也在发生相应的变化。在最新的SSIS更新中,增加Linux支持和SQL Server 2016升级向导。