当前位置:  数据库>sqlserver

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

    来源: 互联网  发布时间:2014-10-04

    本文导语:  简介     在SQL SERVER中,数据库在硬盘上的存储方式和普通文件在Windows中的存储方式没有什么不同,仅仅是几个文件而已.SQL SERVER通过管理逻辑上的文件组的方式来管理文件.理解文件和文件组的概念对于更好的配置数据库来说...

简介

    在SQL SERVER中,数据库在硬盘上的存储方式和普通文件在Windows中的存储方式没有什么不同,仅仅是几个文件而已.SQL SERVER通过管理逻辑上的文件组的方式来管理文件.理解文件和文件组的概念对于更好的配置数据库来说是最基本的知识。

理解文件和文件组

    在SQL SERVER中,通过文件组这个逻辑对象对存放数据的文件进行管理.

    先来看一张图:

      

    我们看到的逻辑数据库由一个或者多个文件组构成

    而文件组管理着磁盘上的文件.而文件中存放着SQL SERVER的实际数据.

为什么通过文件组来管理文件

    对于用户角度来说,需对创建的对象指定存储的文件组只有三种数据对象:表,索引和大对象(LOB)

    使用文件组可以隔离用户和文件,使得用户针对文件组来建立表和索引,而不是实际磁盘中的文件。当文件移动或修改时,由于用户建立的表和索引是建立在文件组上的,并不依赖具体文件,这大大加强了可管理性.

    还有一点是,使用文件组来管理文件可以使得同一文件组内的不同文件分布在不同的硬盘中,极大的提高了IO性能.

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

文件的分类

  •     首要文件:这个文件是必须有的,而且只能有一个。这个文件额外存放了其他文件的位置等信息.扩展名为.mdf
  •     次要文件:可以建任意多个,用于不同目的存放.扩展名为.ndf
  •     日志文件:存放日志,扩展名为.ldf

    在SQL SERVER 2008之后,还新增了文件流数据文件和全文索引文件.

    上述几种文件名扩展名可以随意修改,但是我推荐使用默认的扩展名。

    我们可以通过如下语句查看数据库中的文件情况:

   

     还有一点要注意的是,如果一个表是存在物理上的多个文件中时,则表的数据页的组织为N(N为具体的几个文件)个B树.而不是一个对象为一个B树.

创建和使用文件组

    创建文件或是文件组可以通过在SSMS中或者使用T-SQL语句进行。对于一个数据库来说,既可以在创建时增加文件和文件组,也可以向现有的数据库添加文件和文件组.这几种方式大同小异.下面来看一下通过SSMS向现有数据库添加文件和文件组.

    首先创建文件组:

   

    文件组创建好后就可以向现有文件组中添加文件了:

   

下面我们就可以通过语句将创建的表或者索引加入到新的文件组中了:

使用多个文件的优点与缺点

    通常情况下,小型的数据库并不需要创建多个文件来分布数据。但是随着数据的增长,使用单个文件的弊端就开始显现。

    首先:使用多个文件分布数据到多个硬盘中可以极大的提高IO性能.

    其次:多个文件对于数据略多的数据库来说,备份和恢复都会轻松很多.我碰见过遇到一个150G的数据库,手头却没有这么大的存储设备…

    但是,在数据库的世界中,每一项好处往往伴随着一个坏处:

    显而易见,使用多文件需要占用更多的磁盘空间。这是因为每个文件中都有自己的一套B树组织方式,和自己的增长空间。当然了,还有一套自己的碎片-.-但是在大多数情况下,多占点磁盘空间带来的弊端要远远小于多文件带来的好处.

总结

  本文对SQL SERVER中文件和文件组的概念进行了简单阐述,并在文中讲述了文件和文件组的配置方式。按照业务组织好不同的文件组来分布不同的文件,使得性能的提升,对于你半夜少接几个电话的帮助是灰常大滴:-)


    
 
 

您可能感兴趣的文章:

  • 设置密码保护的SqlServer数据库备份文件与恢复文件的方法
  • shell脚本读取rrd文件将数据插入sqlserver数据库中
  • 高分求救!!!怎样在linux下配置tomcat文件?同时配置sqlServer数据库?
  • sqlserver只有MDF文件恢复数据库的方法
  • SQLServer导出sql文件/表架构和数据操作步骤
  • 如何用java将一个文件以字节流形式保存到sqlserver数据库中(给高分)
  • SqlServer修改数据库文件及日志文件存放位置
  • [初学者问题]我现在配置好了Tomcat,想连接SQLserver,需要下载什么文件吗?
  • SQLServer 批量导入目录文件
  • sqlserver中通过osql/ocmd批处理批量执行sql文件的方法
  • SQLSERVER服务手工启动 批处理文件
  • sqlserver 2005定时任务计划批量文件备份脚本
  • 当恢复sqlserver bak文件时,原始的用户无法删除的解决方法
  • 有新问题麻烦大家。请问如何将大文件写入SQLServer2000数据库?
  • ASP.NET下向SQLServer2008导入文件实例操作方法
  • sqlserver 文件数据库和关系数据库的比较
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • SQLSERVER中得到执行计划的两种方式
  • c/c++ iis7站长之家
  • sqlserver收缩日志的几种方式
  • sqlserver数据库主键的生成方式小结(sqlserver,mysql)
  • 连接sqlserver的url是jdbc:microsoft:sqlserver://192.168.0.100:1433,他连那一个数据库呢?
  • (100分)用Microsoft jdbc Driver for sqlserver2000(type4)访问sqlserver2k的问题,help!
  • 通过SQLSERVER重启SQLSERVER服务和计算机的方法
  • 怎样用文JDBC for sqlserver访问SQLSERVER 数据库请大侠给出一个完整的程序代码
  • (100分)jdbc连接sqlserver 200出错.[SQLServer 2000 Driver for JDBC]Error establishing socket.
  • 如何连接sqlserver2000数据库
  • 深入JDBC sqlserver连接写法的详解
  • how to 连接到sqlserver2000?
  • 请问如何直接sqlserver?
  • SQLServer JDBC Driver
  • 在sqlserver2000时中文问题。
  • 如何使用JSP 连接SQLSERVER数据库,请不吝赐教!(在线等,急救!)
  • 简单实现SQLServer转MYSQL的方法
  • 求助!SQLServer2000 JDBC Driver 不能加载?
  • Resin+Jsp+Sqlserver2000的问题!在线等候!
  • applet用jdbc链接SQLServer 2000的问题
  • 请问连接SQLServer 的驱动器是什么呢?
  • jdbc:microsoft:sqlserver://localhost:1433;DatabaseNameOPTIONAL=webmail???
  • 如何用SQLServer2k-JDBC连接数据库?
  • 关于用jdbc连接sqlserver2000的问题(在线)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3