菜鸟学SQLServer--数据文件和日志文件

昨天讲到的是 页和区, 今天就想写一些 数据文件和日志文件那些事。

根据MSDN library,SQL Server有三种类型的文件,分别是:

  • 主数据文件 -- 后缀为 .mdf
  • 次要数据文件 -- 后缀为 .ndf
  • 日志文件 -- 后缀为.ldf

数据文件:

从示例数据库我们可以看到,里面有一个主数据文件和一个日志文件,次要数据文件不是必须的。

同时每个文件都有一个文件号,fileID or filenum,用来标识该文件。

比如上一篇文章的DBCC page 命令,唯一标识数据库中的一页,需要  数据库名称或者dbid +  文件号filenum  +  页号pagenum

dbcc page ( {‘dbname‘ | dbid}, filenum, pagenum [, printopt={0|1|2|3} ])

#命名

每个文件都有两个名称,分别是 逻辑名称(logical_file_name) 及 路径和文件名组成的物理文件名(os_file_name).

前者必须唯一,后者必须符合操作系统的命名规则。

#文件组

对于文件我们还能按文件组来管理,从主文件组的文件数 1 可以看出,文件组是不包含日志文件的。

另外我们还可以添加自定义的文件组。

使用文件组能够帮助数据布局和管理任务,比如备份和还原

#文件增长

SQLServer 支持用户设置数据库初始值、最大值。

对于数据文件,把不同的文件放在不同的硬盘加快读写。

但需要注意的是对于新数据,SQLServer是按同一文件组中所有文件现有空闲空间的大小比例来分配新数据写入的文件。

比如两个文件空闲空间分别为 2GB和1GB,那么新数据将按 2:1的比例分别写入两个文件。

日志文件则不一样,由于日志文件是严格按顺序写入(估计是为了确保数据库的完整性和方便数据恢复),所以多个日志文件没法提高并发性能也就没有按比例写入一说。

在《Microsoft SQL Server企业级平台管理实践》一书中有如下建议:

  1. 要设置成按固定大小增长,而不能按比例。这样就能避免一次增长太多或者太少所带来的不必要的麻烦。建议对比较小的数据库,设置一次增长50 MB到100 MB。对大的数据库,设置一次增长100 MB到200 MB。
  2. 要定期监测各个数据文件的使用情况,尽量保证每个文件剩余的空间一样大,或者是期望的比例。
  3. 设置文件最大值,以免SQL Server文件自增长用尽磁盘空间,影响操作系统。
  4. 发生自增长后,要及时检查新的数据文件空间分配情况。避免SQL Server总是往个别文件写数据。

日志文件:

待补 TBD

参考:

https://msdn.microsoft.com/zh-cn/library/ms179316(v=sql.105).aspx

《Microsoft SQL Server企业级平台管理实践》

时间: 2024-10-15 00:08:13

菜鸟学SQLServer--数据文件和日志文件的相关文章

批量迁移Oracle数据文件,日志文件及控制文件

有些时候需要将Oracle的多个数据文件以及日志文件重定位或者迁移到新的分区或新的位置,比如磁盘空间不足,或因为特殊需求.对于这种情形可以采取批量迁移的方式将多个数据文件或者日志文件实现一次性迁移.当然备份恢复也是其中的方式之一.本文主要描述如何使用批量方式来迁移数据文件,日志文件.如需要也可以将整个数据库迁移到新的位置以及重命名数据库. [sql] view plain copy print? 1.环境及需求 [email protected]:~> cat /etc/issue Welcom

Oracle 控制文件和日志文件

管理控制文件 在Oracle数据库中,控制文件是一个很小(大小一般在10MB范围内)的二进制文件,含有数据库的结构信息,包括数据文件和日志文件的信息.可以将控制文件理解为物理数据库的一个元数据存储库.控制文件在数据库创建时被自动创建,并在数据库发生物理变化时更新.控制文件被不断更新,并且在任何时候都要保证控制文件是可用的.只有Oracle进程才能够安全地更新控制文件的内容,所以,任何时候都不要试图手动编辑控制文件. 由于控制文件在数据库中的重要地位,所以保护控制文件的安全非常重要,为此Oracl

数据文件 和日志文件 收缩 Sql Server

A. 将数据文件收缩到指定的目标大小 以下示例将 UserDB 用户数据库中名为 DataFile1 的数据文件的大小收缩到 7 MB. 复制 USE UserDB; GO DBCC SHRINKFILE (DataFile1, 7); GO B. 将日志文件收缩到指定的目标大小 以下示例将 AdventureWorks2008R2 数据库中的日志文件收缩到 1 MB.若要允许 DBCC SHRINKFILE 命令收缩文件,首先需要通过将数据库恢复模式设置为 SIMPLE 来截断该文件. 复制

oracle查看数据文件, 控制文件, 及日志文件命令

一. 查看数据文件SQL> select name from v$datafile; NAME--------------------------------------------------------D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSTEM01.DBFD:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\UNDOTBS01.DBFD:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSAUX01

oracle参数文件、控制文件、数据文件、日志文件的位置及查询方法

参数文件:所有参数文件一般在  $ORACLE_HOME/dbs 下 sqlplus查询语句:show parameter spfile; 网络连接文件: $ORACLE_HOME/dbs/network/admin 目录中 控制文件:select * from v$controlfile; 数据文件:一般在oracledata/实例名  目录下 select FILE_NAME from dba_data_files; 日志文件:一般在oracledata/实例名  目录下 select *

数据文件、日志文件、归档文件、控制文件、参数文件及RMAN备份数据库信息查询

一.查看数据库信息:=====================1.数据文件 SQL> SELECT FILE#,STATUS,ENABLED,NAME FROM V$DATAFILE; FILE# STATUS ENABLED NAME ---------- ------- ---------- ------------------------------------------------ 1 SYSTEM READ WRITE D:\APP\ADMINISTRATOR\ORADATA\ORC

SqlServer修改数据库文件及日志文件存放位置

--查看当前的存放位置 select database_id,name,physical_name AS CurrentLocation,state_desc,size from sys.master_files  where database_id=db_id(N'数据库名');   --修改文件的存放位置下次启动生效 --testDb为数据库名, alter database 数据库名 modify file ( name = 文件名(不包含后缀), filename = '文件存储路径')

附加只有数据文件无日志文件,亲测

写这个东西只是为了记录一下作为新手的自己经历,大家就不要吐得厉害哇,呵呵.... 1.新建一个数据库名相同的数据库 2.停止sql实例服务 3.把数据库文件覆盖新的数据库文件 4.启动实例服务 5.执行以下语句 alter database dbname set emergency--紧急模式 go alter database dbname  set single_user--单用户 go --开始修复,这部分如果报错不用管 dbcc checkdb(dbname ,REPAIR_ALLOW_

InnoDB存储引擎的表空间文件,重做日志文件

存储引擎文件:因为MySQL表存储引擎的关系,每个存储引擎都会有自己的文件来保存各种数据.这些存储引擎真正存储了数据和索引等数据. 表空间文件 InnoDB存储引擎在存储设计上模仿了Oracle,将存储的数据按表空间进行存放.默认配置下,会有一个初始化大小为10MB.名为ibdata1的文件.该文件就是默认的表空间文件(tablespace file).你可以通过参数innodb_data_file_path对其进行设置.格式如下: innodb_data_file_path=datafile_