数据库基本原理# 3:一个数据库中有什么?

数据库基本原理# 3:一个数据库中有什么?

值得一提的是很多人将不需要去创建他们自己的数据库。你可能从不会去创建你自己的表格或者是其他的一些数据结构。你可能是安装应用系统为你创建数据库,你也只是做一些备份修复工作以及处理系统安全问题。当然这也是完全能够理解的,毕竟这与很多企业和许多不太重要的数据库应用系统的需求十分的一致。但是,最好能去了解一部分SQL服务器 ,比如它是什么和它是怎么运行的。

数据库其实就是文件

你需要去保存你之后想要能帮你找到的信息。有条理的储存信息是非常必要的。如果你进行一项文字处理程序,你会将不同的文档存储在不同的文件中。你不会将你所有的文档都放进同一个大的文件里。这种做法与SQL服务器功能十分类似。当你有一台服务器,你不能简单的把各种类型的并且对于你企业十分必要的信息全部储存在一个大文件并放进服务器里。相反的,你要去组织好那些信息。SQL服务器起初的组织机制是数据库。数据库允许在不同存储区域保存信息集。此外,它允许你隔离这些不同的信息集以此保证安全性,同时也方便你控制谁可以来查看或修改数据.

在数据库中有称为表的东西。表定义储存关系。你在往数据库中存储的信息将被添加到这些表中。你也能够通过这些表将数据添加到数据库或者从中删除。你还可以从这些表中检索数据库中的信息。

除了数据库中的表外,还有许多将帮你管理存储在数据库中的信息的不同结构。这包括一些不同类型的对象,这些对象可以帮你处理数据,如视图、存储过程和函数。你还可以得到一组完整的安全对象,如角色和用户。

数据库实际上是由存储在Windows文件系统某处的文件组成。这些文件的格式都是专们的二进制形式,除了通过SQL服务器外,其他软件不能直接读取。向这些文件写入数据是SQL 服务器中最宝贵且耗时的操作之一(尽管在大多数情况下,服务器所涉及的时间是以微秒计算的)。因为这一贡献,对于数据库是由文件定义的和文件被储存在数据库的问题的理解是非常重要的

两种类型的文件

你可以和很多人一样把数据存储在文本文件或者电子表格中。但当你需要多人同时访问,都在同一时间更新一些数据,删除,插入新的信息,其他的存储贮存机制变得很有问题。这就是你为什么要使用数据库。由于SQL Server必须对存储的数据进行大量不同的工作,所以它会产生一些不同的机制来执行这些操作。数据库的结构是以两种不同类型的文件来存储不同类型的信息,当你检查这些类型时你可以参考这些数据。

注:实际上还有几个其他的文件类型可以添加到数据库中,但现在我们在这里讨论的是基本原理,所以现在我们将保持它的简单。

数据文件

定义数据库所需的第一类文件是数据文件。数据文件易理解和解释。你写入数据库的信息就被存储在这种文件中。任何给定的数据库都可以由多个数据文件组成。数据文件可以放在多个硬盘上。如果您有更高级的存储机制,如存储区域网络(SAN),您可能有其他结构,而不是服务器上简单的硬盘驱动器,但它们将作为驱动器映射到Windows操作系统,SQLServer也可以使用这些存储数据文件。

日志文件

创建数据库需要的第二种类型文件是日志文件。日志文件稍微复杂一些,比数据文件难理解。日志文件记录数据库中的每一条事务。当数据在系统中以某种方式被操纵时,就会发生事务。这些操作可以对现有数据进行更新,通过将数据插入表中来添加新数据或删除数据。这些操作导致信息被写入日志文件中,还有许多其他的函数也与日志文件相关。这些文件通常比数据文件小得多,因为日志中的条目只需要被保存,直到数据被成功的写到数据文件中。因为写入数据文件会受到不同类型的故障的限制,一旦数据被写入数据文件,日志就会被删除。清理日志文件的过程将会在另一个帖子中详细讨论。当你最初创建文件时,你可以调整它们的大小。在创建文件之后,你可以调整大小,包括上下调整。每个文件也可以被设置为自动增长,但这很复杂,所以值得花更多时间来理解它的含义。

自动增长设置

如果你有大量的数据库,那么管理数据库中的文件会有很大的工作量。你需要检查可用空间,当空间足够时将文件的大小增大。所有这些手动工作的一种方法是使用数据库的自动增长设置。

警告:要小心使用这个设置,你可以填满一个驱动器,让你的服务器离线。将数据库设置为自动增长,这意味着数据库将在开始耗尽空间是自动调整文件大小。许多人在使用这种设置,还有许多应用程序在安装是将其设置为on。为了避免这个问题,你应该在文件中设置一个较高的增长限制。你可以将这些文件设置为数据库或固定大小的百分比。对于规模较小的数据库,按百分比增长是可以工作的,但随着数据规模的不断扩大,按百分比增长的过程就会变的越来越长。最好的做法就是将增长设置为一个特定的值,而不是一个百分比。当数据库被创建,关于如何设置这些的详细信息将被覆盖。

放置文件的位置

当你安装SQL Server 时,你有选择来定义你的数据库文件放置的位置。你也可以通过服务器属性窗口来调整。当你在创建一个数据库时,为了确保在运行是有足够的空间,最后有知道你放置文件的位置 。为了看到文件放置的位置,连接到你的服务器上,在数据库基础2上有相关的要点概述。一旦连接,在“对象资源管理器”窗口中,右键单击服务器名称本身。这将产生一个上下文菜单。在菜单底部选择“属性”菜单选项。这将打开服务器属性窗口,您将处于默认的“常规”,tab。选择“数据库设置”选项卡,您将看到与此非常类似的内容:

查看这里的有趣区域是标题为“数据库默认位置”部分的窗口底部。你将看到三个不同的目录,其中一个用于数据、日志和备份。通过单击条目右侧的省略号,可以调出默认的“文件浏览器”窗口,以更改日志或数据文件的默认位置。你也可以修改输入直接在文本框中任何一个物理路径如上图所示,使用通用命名约定(UNC)路径。

放置文件的目标应该是尽可能地分离功能。如果你有能力,最好将操作系统文件与数据和日志文件分离。这意味着,如果可能的话,进一步,至少应该考虑将数据和日志文件存储在完全独立的驱动器上。这允许对驱动器上的文件进行数据的最大吞吐量。

一旦你决定了储存的位置是恰当的,如果你已经做了改变,就单机确定按钮保存这些改变,如果你没有做任何的改变,或是你不希望保存所做的修改,就单击取消按钮。这些点击中的任何一个都将关闭服务器属性窗口。

这两种文件的类型都有几个属性,除了当你创建数据库时的重要物理位置,物理位置的一部分将是文件名和扩展名。这些都能是有效的窗口操作系统名和扩展名,默认情况下,扩展名通常是mdf的数据文件和idf的日志文件,你可以改变这些,如果你想。但是它可能会导致一系列的困惑,因为大多数人用默认作为最佳的练习。有一个逻辑文件名,允许您在数据库中引用该文件进行操作,而无需返回完整的文件位置,包括驱动器。逻辑名一点也没有必要匹配物理名称,但是他们通常会这样做。

结论

以上介绍了数据库文件存储的本质,下一章我们将在服务器上实际创建一个数据库,那将会比这章要简单。

*文章来自:

https://www.scarydba.com/2017/06/20/database-fundamentals-3-whats-database/

*原文引用: Inside SQL Server T-SQL Querying – Itzik Ben Gan

SQL Server 2008 Transact-SQL Recipes – Joseph Sack

时间: 2024-11-10 13:14:23

数据库基本原理# 3:一个数据库中有什么?的相关文章

sql server 复制表从一个数据库到另一个数据库

sql server 复制表从一个数据库到另一个数据库 /*不同服务器数据库之间的数据操作*/ --创建链接服务器 exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 ' --查询示例 select * from ITSV.数据库名.dbo.表名 --导入示例 select * into 表 f

数据库基本原理#3:数据库中是什么

源:https://www.scarydba.com/2017/06/20/database-fundamentals-3-whats-database/ 作者:Grant Fritchey 翻译:谢雪妮 刘琼滨 许雅莉 赖慧芳 译文: 值得注意的是,很多人都不需要创建自己的数据库.可能也不会创建自己的表或其他数据结构.又可能只需要运行备份,重新存储并操作系统上的安全性,让应用程序安装为您创建数据库.这完全可以理解,完全符合许多企业和许多数据库管理员的需求.然而,了解这些东西是什么以及它如何作为

Mysql复制一个数据库到另一个数据库

mysqldump -u root -p source_db > /home/db_bak.sql #导出数据库 123456 #输入数据库密码 扩展: mysqldump -u root -p dz pre_portal_comment > /home/pre_portal_comment_bak.sql #导出数据库中的某个表 创建数据库 CREATE DATABASE target_db DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI

数据库名、实例名、数据库域名、全局数据库名、服务名

数据库名.实例名.数据库域名.全局数据库名.服务名 , 这是几个令很多初学者容易混淆的概念.相信很多初学者都与我一样被标题上这些个概念搞得一头雾水.我们现在就来把它们弄个明白. 1数据库名   什么是数据库名?  数据库名就是一个数据库的标识,就像人的身份证号一样.他用参数DB_NAME表示,如果一台机器上装了多全数据库,那么每一个数据库都有一个数据库名.在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中.格式如下:DB_NAME=myorcl...在创建数据库时就应考虑好数据库名

向数据库中插入一个DateTime类型的数据到一个Date类型的字段中,需要转换类型。TO_DATE('{0}','YYYY-MM-DD'))

需要指出的是,C#中有datetime类型,但是这个类型是包括小时,分钟,秒的.这个格式与数据库中的Date类型不符,如果将now设为datetime类型插入数据会失败. 需要通过TO_DATE('字段','YYYY-MM-DD'))转换.如下: string.Format("insert into tablename (TIME) values(TO_DATE('{0}','YYYY-MM-DD'))",now) 错误写法: string.Format("insert in

统计一个数据库中,无记录的表的sql语句

2016-05-20 SQL Server数据库中统计无记录数的表 大家使用的时候,将sql脚本中的红色[TestDB] 换成你的目标数据库名称. 1 /************************************************************ 2 * Code formatted by SoftTree SQL Assistant ?v7.0.158 3 * Time: 2016/5/19 18:47:02 4 * Author:zhangcn 5 *******

.NET面试题解析(07)-SQL语言基础及数据库基本原理

  系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 本文内容涉及到基本SQL语法,数据的基本存储原理,数据库一些概念.数据优化等.抱砖引玉,权当一个综合复习! 常见面试题目: 0. 基本SQL语法题目,在 正文“基础SQL语法”中有13道题,这里就略过了. 1. 索引的作用?她的优点缺点是什么? 2. 介绍存储过程基本概念和 她的优缺点? 3. 使用索引有哪些需要注意的地方? 4. 索引碎片是如何产生的?有什么危害?又该如何处理? 5. 锁的目的是什么? 6.

java实现从一个数据库查询数据经过处理导入另外一个数据库中

当数据库表中有clob字段或要对表中数据做较复杂处理时就不太好用脚本从一个数据库导入数据到另外一个数据库中了,这时就要通过代码实现了,下面以orale数据库为例代码如下: import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Timestamp; import java.text

数据库设计又一个新思路

==========================================聊天记录很有价值,以下是全部聊天记录========================================= 码妖][广州]老衲(424469013) 10:09:28服务器上定义好 数据库的各个表 主键 约束 外键 视图等[码妖][广州]老衲(424469013) 10:10:07客户端 依照服务器上的样板 自动 增加 或 删除 ,各个表字段 主键 外键 视图等[码妖][广州]老衲(424469013