SQL Server如何处理大型物理数据库文件

时间:2014-04-03 01:49:49

标签: sql sql-server

来自MySQL和PostgreSQL,我非常想知道SQL Server如何存储和处理大型物理数据库文件。

根据这篇文章

http://msdn.microsoft.com/en-us/library/aa174545%28SQL.80%29.aspx

SQL Server有3种类型的文件,.mdf.ndf.ldf

由于数据增长的性质,数据库可以包含数十万个文件。这最终会影响这些.mdf的大小。

所以问题是,SQL Server如何处理大型物理数据库文件?

我似乎问了很多问题,但我希望得到一个答案也涵盖下面的子问题:

  1. 从理论上讲,.mdf文件大小可能会增长到GB或TB。这在现实场景中是否常见?
  2. 由于SQL Server处理单个文件,因此在同一文件上执行相当大的读/写操作。这对性能有何影响?
  3. 是否有可能(有任何情况)将.mdf分成几部分。而不是拥有1个超大的.mdf文件,将它拆分成块是否更好?
  4. 注意:我是SQL Server的新手,SQL Server中的基本查询似乎与MySQL类似,我想了解一下发生了什么"引擎盖下#34;。

1 个答案:

答案 0 :(得分:4)

  

1理论上,mdf文件大小可能会增长到GB或TB。这是   在现实世界中常见的情况?

是的,这很常见。它取决于每秒的读写操作量和磁盘子系统。如今,大小为数百GB的数据库被认为很小。

  

2由于MSSQL处理单个文件,因此它会有很大的影响   在同一文件上执行大型读/写操作。怎么会这样   影响绩效?

这是最常见的性能瓶颈之一。您需要选择适当的磁盘子系统,并将数据库划分为多个文件组,并将它们放在不同的磁盘子系统上。

  

3是否有可能(有任何情况下)将mdf拆分成部分。   如果不是拥有1个超大的mdf文件,那么拆分会更好   它变成块?

是的,你可以。这个“块”称为文件组。您可以在不同的文件组中创建不同的表,索引,对象甚至部分表(如果SQL-Server的版本和版本允许)。但只有在跨多个磁盘,RAID等创建文件组时,它才会给您带来优势。有关详细信息,请阅读Using Files and Filegroups