SQL Server 体系结构

本篇文章聊一聊 SQL Server 体系结构、 涉及的实体 (SQL Server 实例、数据库、模式,以及数据库对象),以及每个实体的作用。

 

一.SOL Server实例

SQL Server 实例是指安装的一个SQLServer数据库引擎/服务。在同一台计算机上可以安装SQLServer的多个实例。从安全性、实例管理的数据,以及其他方面来说,每个实例是完全彼此独立的。在逻辑层面,位千同一计算机上的两个不同实例和位于两台不同计算机上的实例相差无几。当然,它们会共享服务器的物理资源(如CPU、内存,以及磁盘空间)。

可以将计算机上安装的实例之一设置为默认实例,而其他实例则必须为命名实例。在安装期间可以决定是将一个实例安装为默认实例,还是命名实例,安装好以后就不能对此进行修改了。如果一个客户端应用程序要联接到默认实例,只须指明实例所在计算机的 名称或IP地址。要联接到一个命名实例,客户端要指明计算机的名称或W地址,接着再写一个反斜杠字符("\"),后面指明实例名称(在安装期间提供的)。例如,假设在名为Serverl的计算机上安装了两个SQLServer实例,其中一个安装为默认实例,而另一个则安装为命名实例lnst1。要联接到默认实例,就只要指定服务器名称Serverl;而要联接到命名实例,则要将其指定为Serverl\Inst1。

 

二.数据库

可以将数据库认为是各种对象的容器,这些对象可以是表(table)、视图(view)、存储过程(storedprocedure) , 等等。每个SQLServer实例可以包含多个数据库,如下图所示。当安装SQLServer时,安装程序会创建几个系统数据库,用千保存系统数据 和服务千内部目的安装好之后,就可以创建自己的用户数据库,以保存应用程序的数据。

        

安装程序创建的系统数据库包括master、Resource、model、tempdb以及msdb。它们各自的作用分别描述如下:

  • master

  master数据库保存SQL Server实例范围内的元数据信息、服务器配置、实例中所有数据库的信息,以及初始化信息。

  • Resource

  Resource数据库是SQL Server 2005中增加的,用千保存所有系统对象。当查询数据库中的元数据信息时,这种信息表面上是位于数据库中,但实际士是保存在Resource数据库中的.

  • model

   model数据库是新数据库的模板。每个新创建的数据库最初都是model的个副本(copy)。所以,如果想在所有新创建的数据库中都包含特定的对象(比如数据类型),或者是在所有新创建的数据库中都以特定的方式来配置某些数据库属性,就可以先把这些对象或配咒属性放在model数据库中。注意:对model数据库做出的修改不会影响现有的数据库,只影响此后新创建的数据库。

  • tempdb

  tempdb数据库是SQLServer保存临时数据的地方,这些临时数据包括工作表(worktable)、排序空间(sortspace)、行版本控制(rowversioning)信息,等等。SQLServer允许用户为自己的使用而创建临时表,这些临时表的物理保存位 置就是tempdb。注意:每次重新启动SQLServer实例时,会删除这个数据库的内容,并将其重新创建为model的个副本。因此,当需要为测试目的而创建些对象,而且在测试完成后不想将这些对象继续保存在数据库中时,通常可以在tempdb 中创建它们。即使忘记消除这些对象,在重新启动后也会自动消除它们。

  • msdb

  msdb是称为SQLServer Agent的种服务保存其数据的地方。SQLServer Agent负责自动化处理,包括记录有关作业(job)、计划(schedule)和警报等实体的信息。SQLServer Agent也是负质复制(replication)的服务。Msdb还用于保存 一些有关其他SQLServer功能的信息,例如DatabaseMail和ServiceBroker。

在SQLServer实例中可以创建需要的任意数烦的用户数据库。用户数据库内可以保存应用程序需要的各种对象和数据。可以在数据库级上定义一个称为collation(排序规则)的属性,由它确定数据库中字符数据使用的排序规则信息(包括支持的语言、区分大小写和排序顺序)。如果在创建数据库时不为其指定collation屈性,将使用实例默认的排序规则设置。为了对数据库运行T-SQL代码,客户端应用程序须联接到SQLServer实例,要位于相关数据库的上下文(context)中,或者能够使用相关数据库。

在安全性方面,为了能够联接到SQLServer实例,必须让DBAC数据库管理员)为用户创建一个登录账号。 登录账号可以关联到 Windows 凭据 (credentials) , 在这种情况下,它会调用 Windows 凭据进行身份验证。 使用 Windows 验证的登录,当联接到 SQLServer 时就无须提供登录用户名和密码信息, 因为当登录到 Windows 时已经提供了这些信息。登录账号可以关联到 Windows 凭据 (credentials) , 需要时, 它会调用 Windows 凭据进行身份验证。 当使用 SQLServer 验证登录来联接 SQLServer 时,就必须提供登录的用户 名和密码。DBA要将你的登录账号映射到有权访问的任何数据库中的数据库用户。 数据库用户(database user) 是将被授权访问数据库对象的实体。

到目前为止, 已经主要介绍了数据库的逻辑层面。下图展示数据库的物理布局图。

      

 

数据库在物理上由数据文件和事务日志文件组成。 当创建数据库时, 能够定义每个文件的各种属性, 包括文件名、 保存位置, 以及文件自动扩展的增撇 (autogrowth 属性)。每个数据库必须至少有一个数据文件和一个日志文件 (SQL Server 的默认情况)。数据 文件用于保存数据库对象数据,日志文件则保存 SQL Server 为了维护事务而需要的信息。
虽然 SQLServer 可以同时写多个数据文件,但某一时刻只能以顺序方式写一个日志文件。因此,与数据文件不同,使用多个日志文件并不能提升系统的性能。如果原来的日志文 件所在的磁盘空间耗尽了,就可能要增加新的日志文件。
多个数据文件在逻辑上按照文件组(filegroup)的形式进行分组管理。创建数据库对象(例如表或索引)时,就会将其保存在目标文件组中。对象数据可能会保存在属千目标文件 组的多个文件中。通过文件组可以控制数据库对象的物理存储位置。数据库必须至少要 有一个主文件组(PRIMARY), 而用户定义的文件组则是可选的。PRIMARY文件组包含主数据文件(扩展名为.mdO, 以及数据库的系统目录(catalog)。可以选择性地为PRIMARY增加多个辅助数据文件(secondarydata file) , 扩展名为.ndf。用户定义的文 件组只能包含辅助数据文件。可以指定将哪个文件组作为默认文件组。当对象创建语句没有明确指定目标文件组时,就将它创建在默认文件组中。

 

二.架构(Schema)和对象

如图所示,一个数据库包含多个架构,而每个架构则又包含多个对象。可以将架构看作是各种对象的容器,这些对象可以是表(table)、视图(view)、存储过程(storedprocedure)等。

      

可以在架构级别上控制对象的访问权限。 例如, 可以为一个用户授予某个架构上的 SELECT权限, 让这个用户能够查询该架构中所有对象的数据。 所以, 对千决定在架构 中如何组织对象, 安全性是应该考虑的因素之一。
此外, 架构也是一个命名空间, 用作对象名称的前缀。 例如, 假设在架构Sales 中有一个 Orders 表, 架构限定(schema-qualified)的对象名称是Sales.Orders, 也称为两部分对象 名称(two-part name)。 如果在引用对象时省略架构名称, SQL Server 将采用一定的办法来分析出架构名称是什么, 例如, 检查对象是否在用户的默认架构中, 如果不在, 再继续检查对象是否在dbo 架构中。 当在代码中引用对象时, 推荐总是使用这种由两部分构成的对象名称。 有时, 如果不显式指定架构, 那么在解析对象名称时, 就会要付出一些没有意义的额外代价。既然这样的额外代价是没有意义的, 为什么还要为它付出? 而且, 在不同的架构中可能存在名称相同的多个对象, 如果这时还不显式指定架构, 那么最终得到的对象可能并不是你原本想要的。

 

 

好了,本篇文章就介绍到这儿,欢迎大家留言交流;喜欢或有帮助到您的话,点个赞或推荐支持一下!

转载于:https://www.cnblogs.com/johnvwan/p/9332220.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值