在sqlserver中,数据库在硬盘的存储方式和普通文件存储一样,仅仅几个文件而已,sqlserver通过管理逻辑上的文件组的方式来管理存储数据的文件,

如图:

文件组管理着磁盘上的文件,而文件中存放着sqlserver的实际数据

为什么通过文件组来管理文件?
使用文件组可以隔离用户和文件,使得用户针对文件组来创建表和索引,而不是实际磁盘的文件,
当文件移动或者修改时候,由于用户建立的表和索引是建立在文件组上的,并不依赖文件,这样加强了可管理性

还有一点:使用文件组管理文件可以使的同一文件组内的不同文件分部在不同的磁盘中,极大的提高IO性能

sqlserver会根据每个文件设置的初始大小和增长量自动分配新加入的空间,假设在同一文件组中的文件A设置的大小为文件B的两倍,新增一个数据占用三页,则按比例将2页分配到文件A中,1页分配到文件B中

文件分类:
1 扩展名为.mdf的首要文件(只能有一个)
2 次要文件,可以建立多个,用于不同目的存放 扩展名为 .ndf
3 日志文件,存放日志,扩展名为 .ldf
2008之后 新增文件流数据文件和全文索引文件

新建一个数据库:可以在创建的时候增加文件和文件组,也可以向现有的数据库添加文件和文件组

在数据库的属性选项 文件组中,
primary设置为选中,则创建表或者索引的时候默认会加进这个文件组
文件组创建好后就可以往组里添加文件了
数据库文件所属的文件组一旦设定,则不能更改

使用多个文件的优点和缺点:
通常情况:小型数据库并不需要创建多个文件来分布数据,但随着数据的增长,
使用多个文件分布数据到多个硬盘可以极大的提高IO性能
其次:多个文件对于数据略多的数据库来说,备份和恢复都很轻松

多文件缺点:需要占用更多的磁盘空间,因为每个文件都有自己的一套B树和增长空间,当然还有一些碎片,但多占磁盘空间的弊端要远远小于多文件带来的好处

sqlserver 理解文件和文件组的更多相关文章

  1. SQLServer的数据存储结构01 文件与文件组

    在SQLServer中,每当新建一个数据库时,则会有一组相应的SQLServer文件被创建,这些单独的SQLServer文件构成的总体称为文件组. 一个数据库对应着一个文件组,在这个文件组里,会包括三 ...

  2. SQLServer中数据库文件的存放方式,文件和文件组

    我们公司近一年来做了一个CRM系统. 遇到一个问题就是:在插入交流记录的时候速度特别慢.(交流记录数据量大) 后来我们经理采用文件组的方法,将客户交流记录这张表提出来就快很多了 这里有一篇关于文件组的 ...

  3. sqlserver 文件与文件组的使用和优化

    文件和文件组填充策略     文件组对组内的所有文件都使用按比例填充策略.当数据写入文件组时,SQL Server 数据库引擎按文件中的可用空间比例将数据写入文件组中的每个文件,而不是将所有数据都写入 ...

  4. SQL Server中数据库文件的存放方式,文件和文件组 (转载)

    简介 在SQL SERVER中,数据库在硬盘上的存储方式和普通文件在Windows中的存储方式没有什么不同,仅仅是几个文件而已.SQL SERVER通过管理逻辑上的文件组的方式来管理文件.理解文件和文 ...

  5. SQL Server架构 -- 数据库文件和文件组

    在SQL SERVER中,数据库在硬盘上的存储方式和普通文件在Windows中的存储方式没有什么不同,也是在特定文件夹下创建不同的文件,然后经过文件存储系统去抓取数据信息.理解文件和文件组的概念可以帮 ...

  6. SQL Server中数据库文件的存放方式,文件和文件组

    原文地址:http://www.cnblogs.com/CareySon/archive/2011/12/26/2301597.html   SQL Server中数据库文件的存放方式,文件和文件组 ...

  7. 关于SQL Server中分区表的文件与文件组的删除(转)

    在SQL Server中对表进行分区管理时,必定涉及到文件与文件组,关于文件与文件组如何创建在网上资料很多,我博客里也有两篇相关转载文件,可以看看,我这就不再细述,这里主要讲几个一般网上很少讲到的东西 ...

  8. SQL 文件以及文件组

    1.SQL Server根据分区表名查找所在的文件及文件组实现脚本 --SQL Server根据分区表名查找所在的文件及文件组实现脚本 SELECT fg.name AS FileGroupName ...

  9. 【SQLSERVER】从数据库文件mdf中拆分ndf的方法和利弊

    一.数据文件格式 SQLSERVER中,数据库的文件后缀有3种:mdf.ndf.ldf. 如下图所示,DW_TEST.mdf.DW_TEST_HIS.ndf.DW_TEST.ldf 属于同一个数据库T ...

随机推荐

  1. HDU-4686 Arc of Dream 构造矩阵

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4686 因为ai = ai-1*AX+AY ,bi = bi-1*BX+BY ,那么ai*bi=AX*B ...

  2. IOS-- UIView中的坐标转换

    // 将像素point由point所在视图转换到目标视图view中,返回在目标视图view中的像素值 - (CGPoint)convertPoint:(CGPoint)point toView:(UI ...

  3. D3D游戏编程系列(六):自己动手编写第一人称射击游戏之第一人称视角的构建

    说起第一人称射击游戏,不得不提第一人称视角啊,没有这个,那么这个第一就无从谈起啊,我作为一个观察者究竟如何在这个地图上顺利的移动和观察呢,那么,我们一起来研究下. 我们首先来看下CDXCamera类: ...

  4. 【Stage3D学习笔记续】山寨Starling(五):纹理计算和尺寸计算

    尺寸计算: Starling中的尺寸是以像素为单位的,这一切都得力于我们使用的正交矩阵,还记得我们顶点数据中的位置数据么,如果我们提交的矩形的四个顶点为(0, 0)(0, 100)(100, 0)(1 ...

  5. 让asp.net web api同时支持[AcceptVerbs("GET","POST")]

    在使用第三方接口时,有时候会看到接口同时支持GET和POST,当时想想webapi有AcceptVerbs特性,没有细想便想当然肯定会支持,后来项目中需要用到,当时在没有参数传入下确实支持,直到早几天 ...

  6. iOS开发-网络-合理封装请求接口

    概述 如今大多App都会与网络打交道,作为开发者,合理的对网络后台请求接口进行封装十分重要.本文要介绍的就是一种常见的采用回调函数(方法)的网络接口封装,也算的是一种构架吧. 这个构架主要的idea是 ...

  7. error: variable '__this_module' has initializer but incomplete type错误解决

    版权所有,转载必须说明转自 http://my.csdn.net/weiqing1981127 原创作者:南京邮电大学  通信与信息系统专业 研二 魏清 问题描述:使用SAM9X25  内核版本是2. ...

  8. linux shell date格式化配置

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  9. 序列化与反序列化Serialize&Deserialize

    序列化是指一个对象的实例可以被保存,保存成一个二进制串,当然,一旦被保存成二进制串,那么也可以保存成文本串了.比如,一个计数器,数值为2,我们可以用字符串“2”表示.如果有个对象,叫做connter, ...

  10. .@RequestMapping 使用方法

    1.@RequestMapping  使用方法  SpringMVC中,@RequestMapping用来处理请求,比方XXX.do @RequestMapping("/aaa") ...