数据库基本原理#3:数据库中是什么
源:https://www.scarydba.com/2017/06/20/database-fundamentals-3-whats-database/
作者:Grant Fritchey
翻译:谢雪妮 刘琼滨 许雅莉 赖慧芳
译文:
值得注意的是,很多人都不需要创建自己的数据库。可能也不会创建自己的表或其他数据结构。又可能只需要运行备份,重新存储并操作系统上的安全性,让应用程序安装为您创建数据库。这完全可以理解,完全符合许多企业和许多数据库管理员的需求。然而,了解这些东西是什么以及它如何作为理解SQL Server的一部分是个好主意。
数据库实际上就是文件。
如果需要存储稍后可以检索的信息,就必须先组织这些信息。如果你使用一个字处理程序,你可以在不同的文件中存储不同的文档,而不是去把所有文档都放到一个大文件中。SQL Server的功能跟这个就非常类似。虽然您有一个服务器,但您不会简单地存储所需的各种类型的信息,去在服务器内的一个大范围运行您的业务。相反,你要组织这些信息。SQL Server的初始组织机制是数据库。数据库允许在单独的存储区域中保存一组信息。此外,它还允许隔离这些不同信息集的安全性,以便能够控制谁可以查看或修改这些数据。
在一个数据库中,这些东西叫做表。表是关系存储的定义方式。您在给定数据库中组织存储的信息将被添加到这些表中。您将能够通过这些表向数据库添加或删除数据,还可以从这些表中检索来自数据库的信息。
除了数据库中的表之外,还有许多不同的构造可以帮助您管理存储在数据库中的的信息。其中包括许多不同类型的对象,这些对象可以帮助您操作诸如视图、存储过程和函数等数据。还可以得到一组完整的安全对象,如角色和用户。
数据库实际上是由存储在Windows文件系统上的文件组成的。这些文件是专有的二进制格式,除了通过SQL Server,不能直接读取。将数据写入这些文件是SQL Server中最昂贵和耗时的操作之一(尽管在大多数情况下,涉及的时间以微秒计)。由于这些开销,理解数据库是由文件定义,并将它们存储在数据库里的一部分是十分重要的。
两种类型的文件
您可以简单地将数据存储在文本文件或电子表格中,许多人都可以这样做。但当多人同时访问它时,更新一些日期,删除一些信息以及插入新信息的同时,存储机制变得非常有问题。这就是为什么需要使用数据库。因为SQL Server会对它存储的数据做很多不同的工作,所以它会有一些不同的机制来执行这些操作。数据库是围绕两种不同类型的文件构成的,这些文件存储不同类型的信息。在这两种类型中,您可以参考这个图。
数据文件
定义数据库所需的第一种文件是数据文件。数据文件很容易理解和解释。这种类型的文件是写入数据库的信息将要存储的地方。任何给定的数据库都可以由多个数据文件组成。数据文件可以被放置你的系统的多个硬盘上。如果有更高级的存储机制,比如存储区域网络(SAN),那么可能不是简单的硬盘驱动器,它在服务器上有其他构造,但是它们将被映射到Windows操作系统,因为驱动器和SQL server也可以使用它们来存储数据文件。
日志文件
创建数据库所需的第二种文件是日志文件。日志文件比数据文件稍微复杂一点。日志文件记录数据库中发生的每一个事务。当数据在系统中以某种方式被操纵时,就会发生事务。这些操作可以对现有数据进行更新,通过将新数据插入到表中,或者从表中删除数据来添加新数据。所有这些操作都会将信息写入日志文件。还有许多其他功能也与日志文件有关。这些文件通常比数据文件小得多,因为日志文件中的条目只需要保存到所有数据都成功写入数据文件为止。因为写入数据文件会有不同类型的失败,所以保存日志文件以帮助处理这些失败。一旦信息写入数据文件,日志条目就可以被删除。清理日志文件的过程将在另一个帖子中详细讨论
当开始创建文件时,可以调整它们的大小。在创建文件之后,可以上下调整大小。每个文件都可以设置自动增长,这很复杂,所以值得花更多时间来理解它的含义。
Autogrowth设置
如果您有很多数据库,那么在数据库上管理文件可能会有很大的工作量。您必须检查可用的空间,然后在足够的时候将文件设置为更大的大小。围绕这些手工工作的一个方法是使用数据库中的自动增长属性设置。
警告
使用这个设置时要非常小心,可以填充驱动器并使您的服务器脱机。
将数据库设置为autogrow意味着数据库在开始运行时将自动调整文件大小。许多人使用这个设置,许多应用程序在安装时设置它。为了避免这个问题,应该设置文件的上增长限制。您可以通过数据库或固定大小的百分比来设置文件。对于较小的数据库,按百分比增长是可行的,但是随着数据库的规模不断扩大,按百分比增长的过程就会变得越来越长。最佳实践是将增长设置为特定值,而不是百分比。关于如何设置所有这些的细节将在数据库被创建时覆盖。
文件放在哪里
当在安装SQL Server时,可以选择将数据库文件放置在何处。您还可以通过服务器属性窗口进行调整。在创建数据库时,最好知道在何处放置文件,以确保在驱动器上有足够的空间。要查看此位置,请按照数据库基础# 2中的描述连接到服务器。一旦连接,在对象资源管理器窗口中,右键单击服务器名本身。这将弹出一个上下文菜单。选择菜单底部的“属性”菜单选项。这将打开服务器属性窗口,您将处于默认的“General”选项卡。选择“Database Settings”选项卡,您将看到与此非常类似的内容:
这个有趣的区域是在名为数据库默认位置的部分窗口的底部。您将看到列出的三个不同的目录,分别用于数据、日志和备份。通过单击该条目右侧的省略号,您可以打开一个默认的文件浏览器窗口,以便更改您的日志或数据文件的默认位置。您还可以通过直接输入文本框来修改它们,如上面所示的物理路径,或者使用UNC路径。
放置文件的目标应该是尽可能多地尝试分离功能。如果有能力,最好将操作系统文件与数据,日志文件分开。这意味着如果可能的话,试着将数据和日志文件放置在C:\驱动器之外的其他东西上。此外,至少应该考虑将数据和日志文件存储在完全独立的驱动器上。这允许最大吞吐量的数据传输到驱动器上的文件。
一旦确定了存储位置是合适的,如果您已经进行了更改,单击OK按钮来保存这些更改。如果没有进行任何更改,或者不希望保存所做的更改,单击“取消”按钮。这些单击都将关闭服务器属性窗口。
在创建数据库时,除了物理位置之外,每两个文件类型都有几个属性是重要的。物理位置的一部分将是文件名和扩展名。这些可以是任何有效的Windows操作系统名称和扩展。默认情况下,数据文件的扩展是mdf,ldf是作为日志文件的扩展。如果您愿意,您可以更改这些,但它可能导致混淆,因为大多数人使用默认值作为最佳实践。有一个逻辑文件名,允许您在数据库中引用文件,而不必返回到包括驱动器在内的完整文件位置。逻辑名称并不需要与物理名称相匹配,但通常是这样的。
总结
这介绍了数据库文件存储的核心内容。下一篇文章我们将在服务器上创建一个数据库,这比这个帖子要简单得多。