我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SQLServer中的文件和文件组介绍

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SQLServer中的文件和文件组介绍

文件和文件组简介

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

SQL Server通过文件组对数据文件进行管理。我们看到的逻辑数据库由一个或者多个文件组构成。

结构图如下:

文件组管理着磁盘上的文件,文件中存放的就是SQL Server的实际数据。

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

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

使用文件组可以隔离用户对文件的依赖,使得用户仅仅针对文件组来建立表和索引,而不用关心实际磁盘中的文件的情况。当文件移动或修改时,由于用户建立的表和索引是建立在文件组上的,并不依赖具体文件,因此SQL Server可以放心的管理文件。

另外,使用文件组的方式来管理文件,可以使得同一文件组内的文件分布在不同的硬盘中,能够大大提供IO性能。

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

文件的分类

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

上面说的集中文件名扩展名可以任意修改,推荐使用默认的扩展名。在SQL Server之后,还新增了文件流数据文件和全文索引文件。

通过sys.database_files系统视图可以查看SQL Server数据库中文件的情况。

SELECT name,type_desc,physical_name,state_desc,size,growth
FROM sys.database_files

结果如下:

注意type_desc列,首要文件和次要文件都是ROWS,表示存储的是行(Row)。

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

创建和使用文件组

创建文件或是文件组合一通过在Management Studio或者使用T-SQL语句进行。对于一个数据库来说,既可以在创建时增加文件和文件组,也可以向现有的数据库添加文件和文件组。

创建文件组操作:

创建文件操作:

 注意:文件的所属文件组一旦设置了就不能够更改了。

下面给出一个创建索引时,指定存放到文件组的SQL实例:

--添加索引时,指定存放的文件组
  CREATE NONCLUSTERED INDEX idx_on_other_fileGroue on ProductDemo(UPCode) ON AddFileGroup --红色部分是主角,指定文件组。
  --如果不指定文件组,则存放到默认的文件组当中
  CREATE NONCLUSTERED INDEX idx_on_other_fileGroue on ProductDemo(UPCode)

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

在大多数情况下,小型的数据库并不需要创建多个文件来存放数据。但是随着数据的增长,单个文件的弊端就会出现。

  • 首先,使用多个文件分布到不同的磁盘分区(多个硬盘)能够几大提高IO性能。
  • 其次,多个文件对于数据比较多的数据库来说,备份和恢复都会方便。
  • 但是,多文件需要占用更多的磁盘空间,因为每个文件中都有自己的一套B树组织方式和自己的增长空间。当然也有自己的碎片。
  • 总体来说,多个文件带来的优点是远远大于弊端的。

到此这篇关于SQL Server文件和文件组的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SQLServer中的文件和文件组介绍

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

sqlserver怎么还原文件和文件组

要还原SQL Server中的文件和文件组,可以按照以下步骤进行操作:1. 打开SQL Server Management Studio(SSMS)并连接到目标数据库服务器。2. 在“对象资源管理器”中,展开“数据库”节点,找到要还原的数据
2023-10-18

ASP中文件上传组件ASPUpload介绍和使用方法

ASPUpload是一个用于在ASP网页中实现文件上传的组件。它提供了简单易用的接口和丰富的功能,方便开发者在网页中实现文件上传功能。使用方法如下:1. 首先,需要将ASPUpload组件添加到项目中。可以从官方网站(http://www.
2023-08-22

linux压缩文件和文件解压缩命令介绍

目录常见压缩格式:gz .bz2 .xz .zip常用归档调用压缩压缩比及压缩速度:gzip命令:压缩查看压缩文件:gunzip命令:解压bzip2:命令压缩查看压缩文件bunzip2命令:解压xz命令:压缩查看压缩文件unxz命令:解压压
2022-06-04

Android中主要资源文件及文件夹介绍

在Android项目文件夹里面,主要的资源文件是放在res文件夹里面的 1:assets文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像xml,java文件被预编译,可以存放一些图片,html,js, css等文件。 2:r
2022-06-06

Linux的内核和文件权限介绍

这篇文章主要讲解了“Linux的内核和文件权限介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux的内核和文件权限介绍”吧! 什么是 Linux ?如果你以前从未接触过Linux,可
2023-06-16

java中读文件的方式介绍

本篇内容介绍了“java中读文件的方式介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 一、多种方式读文件内容。1、按字节读取文件内容2、
2023-06-03

Android中读取中文字符的文件与文件读取相关介绍

一、如何显示assets/license.txt(中文)的内容? (1)方法1:InputStream.available()得到字节数,然后一次读取完。 代码如下: private String readUserAgreementFro
2022-06-06

Linux文件系统介绍

一、简介 文件系统就是分区或磁盘上的所有文件的逻辑集合。 文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。 不同Linux发行版本之间的文件系统差别很少,
2022-06-05

Dockerfile文件详细介绍

Dockerfile是一个文本文件,里面包含组装新镜像时用到的基础镜像和各种指令。使用dockerfile文件来定义镜像,然后运行镜像,启动容器。本文详细介绍了Dockerfile文件,感兴趣的小伙伴可以参考一下
2023-05-15

Linux中查找目录和文件的命令介绍

这篇文章主要介绍“Linux中查找目录和文件的命令介绍”,在日常操作中,相信很多人在Linux中查找目录和文件的命令介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux中查找目录和文件的命令介绍”的疑
2023-06-12

Linux中文件的基本属性介绍

一、查看文件属性和权限 linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。 在Lin
2022-06-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录