-
sql语句大全之数据库文件和文件组
数据库文件和文件组
在SQL Server 2008系统中,一个数据库至少有一个数据文件和一个事务日志文件。当然,该数据库也可以有多个数据文件和多个事务日志文件。数据文件用于存放数据库的数据和各种对象,事务日志文件用于存放事务日志。数据文件又可以分成主数据文件和辅助数据文件两种形式。主数据文件是数据库的起点,每一个数据库都有且仅有一个主数据文件。主数据文件名称的默认后缀是.mdf。辅助数据文件是可选的,用来存放不在主数据文件中的其他数据和对象。数据库可以没有辅助数据文件,也可以有多个辅助数据文件,默认后缀是.ndf。
事务是一个单元的工作,该单元的工作要么全部完成,要么全部不完成。SQL Server 2008系统具有事务功能,可以保证数据库操作的一致性和完整性。SQL Server 2008系统使用数据库的事务日志来实现事务的功能。通常情况下,事务日志记录了对数据库的所有修改操作。事务日志记录了每一个事务的开始、对数据的改变和取消修改等信息。随着对数据库的持续不断地操作,日志是连续增加的。对于一些大型操作,例如创建索引,日志只是记录该操作的事实,而不是记录所发生的数据。事务日志还记录了数据页的分配和释放,以及每一个事务的提交和回滚等信息。这样就允许SQL Server系统恢复和取消事务。当事务没有完成时,则取消该事务。事务日志以操作系统文件的形式存在,在数据库中被称为日志文件。每一个数据库都至少有一个日志文件。日志文件名称的默认后缀是.ldf。
在操作系统中,数据库是作为数据文件和日志文件而存在的,明确地指明了这些文件的位置和名称。但是,在SQL Server系统内部,例如在Transact-SQL语言中,由于物理文件名称比较长,使用起来非常不方便。为此,数据库又有逻辑文件的概念。每一个物理文件都对应一个逻辑文件。在使用Transact-SQL语句的过程中,引用逻辑文件非常快捷和方便。
文件组就是文件的逻辑集合。文件组可以把一些指定的文件组合在一起,以方便管理和分配数据。例如,在某个数据库中,3个文件(如data1.ndf、data2.ndf和data3.ndf)分别创建在3个不同的磁盘驱动器中,并且为他们指定了一个文件组group1。以后,所创建的表可以明确指定存放在文件组group1中。对该表中数据的查询将分布在这3个磁盘上同时进行,因此可以通过执行并行访问而提高查询性能。在创建表时,不能指定将表放在某个文件中,只能指定将表放在某个文件组中。因此,如果希望将某个表放在特定的文件中,必须通过创建文件组来实现。使用文件和文件组时,应该考虑下列因素:
l 一个文件或者文件组只能用于一个数据库,不能用于多个数据库。
l 一个文件只能是某一个文件组的成员,不能是多个文件组的成员。
l 数据库的数据信息和日志信息不能放在同一个文件或文件组中,数据文件和日志文件总是分开的。
l 日志文件永远也不能是任何文件组的一部分。
在SQL Server 2008系统中,可管理的最小物理空间以页为单位,每一个页的大小是8KB,即8192字节。在表中,每一行数据都不能跨页存储。这样,表中每一行的字节数不能超过8192个字节。在每一个页上,由于系统占用了一部分空间用来记录与该页有关的系统信息,所以每一个页可用的空间是8060个字节。但是,包含了varhcar、nvarchar、varbinary等数据类型的列的表则不受这种规则限制。每8个连续页称为一个区,即区的大小是64KB。这意味着1MB的数据库有16个区。区用于控制表、索引的存储。
通过理解数据库的空间管理,可以估算数据库的设计尺寸。数据库的大小等于所有表大小与索引大小之和。假设某个数据库只有一个表,该表的数据行字节是800Byte。这时,一个数据页上最多只能放10行数据。如果该表大约有100万行的数据,那么该表占用10万个数据页的空间。因此,该数据库的大小估计为:100000×8KB=800000KB=781.25MB。根据数据库大小的估计值,再考虑其他的因素,就可以得到数据库的设计值。
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式