《数据库基础及实践技术——SQL Server 2008》一3.1 SQL Server数据库概述

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
日志服务 SLS,月写入数据量 50GB 1个月
简介: 本节书摘来自华章出版社《 数据库基础及实践技术——SQL Server 2008》一 书中的第3章,第3.1节,作者:何玉洁,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.1 SQL Server数据库概述

SQL Server 2008中的数据库由包含数据的表集合以及其他对象(如视图、索引、存储过程等)组成,目的是为执行与数据有关的活动提供支持。SQL Server支持在一个实例中创建多个数据库,每个数据库在物理和逻辑上都是独立的,相互之间没有影响。每个数据库存储相关的数据。例如,可以用一个数据库存储商品及销售信息,用另一个数据库存储人事信息。
从数据库的应用和管理角度来看,SQL Server将数据库分为两大类:系统数据库和用户数据库。系统数据库是SQL Server数据库管理系统自动创建和维护的,这些数据库用于保存维护系统正常运行的信息,如一个SQL Server实例上共建有多少个用户数据库,每个数据库的创建日期、占用空间大小、包含的文件个数,以及每个数据库包含的对象等。用户数据库保存的是与用户的业务有关的数据,我们通常所说的建立数据库都是指的创建用户数据库,对数据库的维护也指的是对用户数据库的维护。一般用户对系统数据库只有查询权。

3.1.1 系统数据库

安装好SQL Server 2008后,系统会自动安装5个用于维护系统正常运行的系统数据库,分别是:master、msdb、model、tempdb和Resource。下面简单介绍这几个系统数据库的作用。
master:它是SQL Server 2008中最重要的数据库,记录SQL Server实例的所有系统级信息,包括实例范围的元数据(如登录账户)、端点、链接服务器和系统配置设置。此外,master数据库还记录了所有其他数据库的存在、数据库文件的位置以及 SQL Server的初始化信息。因此,如果master 数据库不可用,则SQL Server将无法启动。
msdb:供SQL Server代理服务调度报警和作业以及记录操作员时使用,保存关于调度报警、作业、操作员等信息,作业是在SQL Server中定义的自动执行的一系列操作的集合,作业的执行不需要任何人工干预。
model:它用做SQL Server实例上创建的所有数据库的模板。对model数据库进行的修改(如数据库大小、排序规则、恢复模式和其他数据库选项)将应用于以后创建的所有用户数据库。当用户创建一个数据库时,系统自动将model数据库中的全部内容复制到新建数据库中。因此,用户创建的数据库不能小于model数据库的大小。
tempdb:临时数据库,用于保存临时对象或中间结果集,并为数据的排序等操作提供一个临时工作空间。每次启动SQL Server时都会重新创建tempdb数据库。
Resource:它是一个只读数据库,包含了SQL Server中的所有系统对象。SQL Server系统对象(如sys.objects)在物理上保留在Resource数据库中,但在逻辑上却显示在每个数据库的sys架构中。因此,在SQL Server Management Studio的对象资源管理器中,在“系统数据库”下看不到这个数据库。

3.1.2 数据库的组成

SQL Server数据库由一组操作系统文件组成,这些文件被划分为两类:数据文件和日志文件。数据文件包含数据和对象,如表、索引、存储过程和视图。日志文件记录了用户对数据库所进行的更改操作。数据和日志信息绝不会混合在同一个文件中,而且一个文件只由一个数据库使用。

  1. 数据文件
    数据文件用于存放数据库数据。数据文件又分为:主要数据文件和次要数据文件。

主要数据文件:主要数据文件的推荐扩展名是.mdf,它包含数据库的系统信息,也可存放用户数据。每个数据库都有且只能有一个主要数据文件。主要数据文件是为数据库创建的第一个数据文件。SQL Server 2008要求主要数据文件的大小不能小于3MB。
次要数据文件:次要数据文件的推荐扩展名是.ndf。一个数据库可以不包含次要数据文件,也可以包含多个次要数据文件,而且这些次要数据文件可以建立在一个磁盘上,也可以分别建立在不同的磁盘上。
当某个数据库包含的数据量非常大,需要占用比较大的磁盘空间时,有可能造成计算机上的任何一个磁盘都不能满足数据库对空间的要求。这种情况下,就可以为数据库创建多个次要数据文件,让每个文件建立在不同的磁盘上。在主要数据文件之后建立的所有数据文件都是次要数据文件。
次要数据文件的使用和主要数据文件的使用对用户来说是没有区别的,而且对用户也是透明的,用户不需要关心自己的数据是存放在主要数据文件上,还是存放在次要数据文件上。
让一个数据库包含多个数据文件,并且让这些数据文件分别建立在不同的磁盘上,不仅有利于充分利用多个磁盘上的存储空间,而且可以提高数据的存取效率。

  1. 日志文件
    日志文件的推荐扩展名为.ldf,用于存放恢复数据库的所有日志信息。每个数据库必须至少有一个日志文件,也可以有多个日志文件。

说明:
1)SQL Server是将数据库映射为一组操作系统文件。数据和日志信息绝不会混合在同一个文件中,而且一个文件只由一个数据库使用。
2)SQL Server 2008不强制使用.mdf、.ndf 和 .ldf 文件扩展名,但建议使用这些扩展名以利于标识文件的用途。

  1. 关于数据的存储分配
    在SQL Server中创建数据库时,了解SQL Server如何为数据分配空间是很有必要的,这样可以比较准确地估算出数据库需占用空间的大小以及如何为数据文件和日志文件分配磁盘空间。

在考虑数据库的空间分配时,需了解如下规则:
所有数据库都包含一个主要数据文件与一个或多个日志文件,此外,还可以包含零个或多个次要数据文件。实际的文件都有两个名称:操作系统管理的物理文件名和数据库管理系统管理的逻辑文件名(在数据库管理系统中使用的、用在Transact-SQL语句中的名字)。SQL Server 2008数据文件和日志文件的默认存放位置为:Program FilesMicrosoft SQL Server MSSQL.1MSSQLData文件夹。
在创建用户数据库时, model数据库自动被复制到新建用户数据库中,而且是复制到主要数据文件中。因此,用户新建数据库的大小不能小于model数据库的大小。
在SQL Server 2008中,数据的存储分配单位是数据页(Page,也简称为页)。一页是一块8KB(8×1024字节,其中用8060字节存放数据,另外的132字节存放系统信息)的连续磁盘空间。页是存储数据的最小空间分配单位,页的大小决定了数据库表中一行数据的最大大小。
不允许表中的一行数据存储在不同页上(varchar(max)、nvarchar(max)、text、ntext、varbinary(max)和image数据类型除外),即行不能跨页存储。因此,表中一行数据的大小(即各列所占空间之和)不能超过8060字节。
一般的大型数据库管理系统都不允许行跨页存储,当一页中剩余的空间不够存储一行数据时,系统将舍弃页内的这块空间,并分配一个新的数据页,将这行数据完整地存储在新的数据页上。根据一行数据不能跨页存储的规则,再根据一个表中包含的数据行数以及每行占用的字节数,就可以估算出一个数据表所需占用的大致空间。例如,假设某数据表有10 000行数据,每行3000字节,则每个数据页可存放两行数据(如图3-1所示),此表需要的空间就为:(10 000/2)×8KB = 40MB。其中,每页中有6000字节用于存储数据,有2060字节是浪费的。因此,该数据表的空间浪费情况大约为25%。

screenshot

因此,在设计关系表时应考虑表中每行数据的大小,使一个数据页尽可能存储更多的数据行,以减少空间浪费。

3.1.3 数据库文件组

  1. 文件组基本概念
    SQL Server为了便于分配和管理数据文件,将相关的数据文件组织起来,放置到一个文件组中。在数据库中文件组的概念类似于操作系统中的文件夹,在操作系统中,为便于对文件进行管理,可以定义一些文件夹,然后将不同的文件放置到不同的文件夹中。在数据库中,可以定义多个文件组,然后将数据文件放置到不同的文件组中。

SQL Server有两种类型的文件组:主文件组和用户定义的文件组。
(1)主文件组
主文件组(PRIMARY)是系统定义好的一个文件组,它包含主要数据文件和任何没有明确分配给其他文件组的其他数据文件。系统表的所有页均分配在主文件组中。
(2)用户定义的文件组
用户可以创建自己的文件组,以将相关数据文件组织起来,便于管理和数据分配。
例如,可以分别在3个磁盘驱动器上创建3个数据文件:Data1.ndf、Data2.ndf 和Data3.ndf,然后将它们分配到文件组fgroup1上,之后就可以明确地在文件组fgroup1上创建新表,而对表中数据的查询操作将被分散到3个磁盘上,从而提高数据查询性能。
用户定义文件组是通过在CREATE DATABASE或ALTER DATABASE语句中使用FILEGROUP 关键字指定的任何文件组。
说明:
1)日志文件不包括在文件组内,日志空间与数据空间是分开管理的。
2)一个文件不可以是多个文件组的成员。
3)如果文件组中有多个文件,则它们在所有文件被填满之前不会自动增长。填满后,这些文件会循环增长。
如果在数据库中创建对象时没有指定对象所属的文件组,则新建对象将被分配到默认文件组。任何时候,只能将一个文件组指定为默认文件组。如果用户没有显式地使用ALTER DATABASE语句修改默认文件组,则SQL Server的默认文件组是PRIMARY。

  1. 创建文件组
    在SQL Server 2008中,可以在首次创建数据库时创建文件组,也可以在以后向数据库中添加更多文件时创建文件组。但是,一旦将文件放置到某个文件组中,就不能再将这些文件移到其他文件组中。

注意:文件组不能独立于数据库文件创建,文件组是在数据库中组织文件的一种管理机制。
我们将在后续章节中介绍如何在创建及修改数据库时创建文件组。

3.1.4 数据库文件的属性

在定义数据库时,除了指定数据库的名字外,其余要做的工作就是定义数据库的数据文件和日志文件,定义这些文件需要指定的信息包括:
1)文件名及其位置。
数据库的每个数据文件和日志文件都具有一个逻辑文件名和一个物理文件名。逻辑文件名是在所有Transact-SQL语句中引用物理文件时所使用的名称,该文件名必须符合SQL Server标识符规则,而且在一个数据库中,逻辑文件名必须是唯一的。物理文件名包括存储文件的路径以及物理文件名,该文件名必须符合操作系统文件命名规则。一般情况下,如果有多个数据文件的话,为了获得更好的性能,建议将文件分散存储在多个物理磁盘上。
2)初始大小。
可以指定每个数据文件和日志文件的初始大小。在指定主要数据文件的初始大小时,其大小不能小于model数据库中主要数据文件的大小,因为系统是将model数据库的主要数据文件内容复制到用户数据库的主要数据文件上。
3)增长方式。
如果需要的话,可以指定文件是否自动增长。该选项的默认设置为自动增长,即当数据库的空间用完后,系统自动扩大数据库的空间,这样可以防止由于数据库空间用完而造成的不能插入新数据或不能进行数据操作的错误。
4)最大大小。
文件的最大大小指的是文件增长的最大空间限制。默认设置是无限制。建议用户设定允许文件增长的最大空间大小,因为如果不设置文件的最大空间大小,但设置了文件自动增长,则文件将会无限制增长直到磁盘空间用完为止。

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
1天前
|
SQL 关系型数据库 MySQL
SQL命令行退出操作指南:轻松掌握不同数据库环境下的退出技巧
在数据库管理与开发过程中,经常需要通过SQL命令行工具(如MySQL的mysql客户端、PostgreSQL的psql、SQL Server的sqlcmd等)与数据库进行交互
92 59
|
1天前
|
SQL 监控 数据处理
SQL数据库数据修改操作详解
数据库是现代信息系统的重要组成部分,其中SQL(StructuredQueryLanguage)是管理和处理数据库的重要工具之一。在日常的业务运营过程中,数据的准确性和及时性对企业来说至关重要,这就需要掌握如何在数据库中正确地进行数据修改操作。本文将详细介绍在SQL数据库中如何修改数据,帮助读者更好
17 4
|
1天前
|
SQL 存储 Oracle
Oracle数据库SQL语句详解与应用指南
在数字化时代,数据库已成为各类企业和组织不可或缺的核心组件。Oracle数据库作为业界领先的数据库管理系统之一,广泛应用于各种业务场景。掌握Oracle数据库的SQL语句是数据库管理员、开发人员及运维人员的基本技能。本文将详细介绍Oracle数据库SQL语句的基本概念、语法、应用及最佳实践。一、Or
14 3
|
1天前
|
SQL 数据管理 数据库
文章初学者指南:SQL新建数据库详细步骤与最佳实践
引言:在当今数字化的世界,数据库管理已经成为信息技术领域中不可或缺的一部分。作为广泛使用的数据库管理系统,SQL已经成为数据管理和信息检索的标准语言。本文将详细介绍如何使用SQL新建数据库,包括准备工作、具体步骤和最佳实践,帮助初学者快速上手。一、准备工作在开始新建数据库之前,你需要做好以下准备工作
16 3
|
1天前
|
SQL 存储 安全
SQL查询数据库:基础概念与操作指南
在数字化时代,数据库已成为信息管理的重要工具之一。作为管理和操作数据库的核心语言,SQL(结构化查询语言)已成为数据管理和查询的关键技能。本文将全面介绍SQL查询数据库的基本概念、语句和操作指南,以帮助初学者快速上手,同时为进阶用户提供有价值的参考。一、数据库与SQL简介数据库是一种存储、管理和检索
15 3
|
1天前
|
SQL 关系型数据库 MySQL
创建SQL数据库的基本步骤与代码指南
在信息时代,数据管理显得尤为重要,其中数据库系统已成为信息技术架构的关键部分。而当我们谈论数据库系统时,SQL(结构化查询语言)无疑是其中最核心的工具之一。本文将详细介绍如何使用SQL创建数据库,包括编写相应的代码和必要的步骤。由于篇幅限制,本文可能无法达到您要求的2000字长度,但会尽量涵盖创建数
12 3
|
1天前
|
SQL 开发框架 .NET
ASP连接SQL数据库:从基础到实践
随着互联网技术的快速发展,数据库与应用程序之间的连接成为了软件开发中的一项关键技术。ASP(ActiveServerPages)是一种在服务器端执行的脚本环境,它能够生成动态的网页内容。而SQL数据库则是一种关系型数据库管理系统,广泛应用于各类网站和应用程序的数据存储和管理。本文将详细介绍如何使用A
15 3
|
1天前
|
SQL 存储 数据库
掌握SQL,轻松查看数据库
在当今信息化时代,数据库已经成为许多企业和组织不可或缺的一部分。数据库管理系统的使用已经变得越来越普遍,其中SQL语言是最广泛使用的数据库查询语言之一。本文将介绍如何使用SQL查询语言来查看数据库,帮助读者更好地理解和使用数据库。一、SQL语言简介SQL是一种用于管理关系数据库管理系统(RDBMS)
13 3
|
1天前
|
SQL 存储 关系型数据库
SQL文件导入MySQL数据库的详细指南
数据库中的数据转移是一项常规任务,无论是在数据迁移过程中,还是在数据备份、还原场景中,导入导出SQL文件显得尤为重要。特别是在使用MySQL数据库时,如何将SQL文件导入数据库是一项基本技能。本文将详细介绍如何将SQL文件导入MySQL数据库,并提供一个清晰、完整的步骤指南。这篇文章的内容字数大约在
15 1
|
1天前
|
SQL 存储 数据管理
SQL数据库的使用指南:从入门到精通
随着信息技术的飞速发展,数据库已成为各类企业和组织不可或缺的一部分。作为最流行的数据库管理系统之一,SQL数据库广泛应用于各种场景,如数据存储、数据管理、数据分析等。本文将详细介绍SQL数据库的使用方法,帮助初学者快速入门,并帮助有经验的开发者深化理解。一、SQL数据库基础首先,我们需要理解SQL数
15 2

热门文章

最新文章