SQL数据库如何存储?

在学习SQLserver过程中,由于现在数据库的图形管理工具功能越来越强大,用户对数据库的组成结构不是很了解,会给日后管理或调整带来问题?

此文将简单介绍SQL SERVER数据库组成,从用户角度来看,数据库内含许多对象,包括:数据表,视图、索引、存储过程等,如下图为SQL Server数据库的逻辑结构:

然而从数据库物理结构来看,每个SQL数据库是由“数据文件”与“日志文件”组成,如下图为:数据库物理结构

当数据库文件和日志文件存放在同一个硬盘,数据库可以正常动作,但是如果大量的事务处理可能会导致性能下降,因为读写数据与日志的动作如果同时发生,容易产生磁盘竞争,I/O效率会打上折扣,事务处理速度可以会有所下降。

SQL只会为数据表和索引分配EXTENT与page,1个extent由8个连续的page组成,而Page存放上限为8060bytes,数据行不可以跨越page 。如当用户添加一笔数据时,数据会将他存放在该数据库表对应的PAGE。而假设这一笔数据长为80bytes,8060bytes/80bytes=100rows,PAGE就可以存放100Rows,如果第101笔数据要存放在同一个数据表时,SQL就会将他存到第二个PAGE,当存放第801笔数据时,SQL才会配置第二个EXTENT,依此类推。

我们知道了只有数据表和索引存放在EXTENT和PAGE,那么视图,约束等对象时,SQL只会将该对象的定义存入系统数据库表。当空间不够时,不管是用户数据表或系统数据表,SQL就会自动配置新的EXTENT.

时间: 2024-10-14 00:46:30

SQL数据库如何存储?的相关文章

SQL Server 2008 R2 下移动数据库的存储位置

使用场景:1. 该数据库增长的较大,存储磁盘空间不足:   2. 在特定情况下该数据库需要移动到另外一块磁盘上(呵呵...我的情况就是之前的磁盘要还给别人) 步骤: 1. 新建查询 SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('yourDataBaseName'); GO 查看到结果会看到数据库主文件以及日志的名称和物理存储的地址名称   2.新建查询 use master alter da

C#中使用FileUpload上传图片到SQL数据库中以image类型存储并使用Image控件显示注意事项

当我们需要以数据流存储图片到数据库中(而不是文件路径),需要考虑很多因素,不同的环境决定了采取不同方法. 1.将图片存入数据库.首先,当我们决定使用FileUpload上传图片,需要考虑,FileUpload的功能主要是在客户端选取图片,然后使用FileUpload的SaveAs方法将选取的图片的地址保存到服务器端保存,因为我们使用的数据流存储图片,所以没有必要将图片保存到服务器端. 其次,FileUpload没有像OpenDialog的.Filter方法过滤图片的格式,即实现打开对话框,只能选

数据库的存储引擎和SQL语言

数据库的存储引擎就是管理数据存储的东西,它完成下面的工作: 1)存储机制 2)索引方式 3)锁 4)等等 SQL语言:-----关系型数据库所使用的数据管理语言 1)数据定义语言(DDL):DROP.CREATE.ALTER等对数据对象发生操作的语言. 2)数据操作语言(DML):INSERT .UPDATE. DELETE,对数据本身发生更.删.改. 3)数据查询语言(DQL):SELECT,专门用于查找数据. 4)数据控制语言(DCL):GRANT/授权.REVOKE/收回授权.COMMIT

数据存储(2)使用SQL数据库

Define a Schema and Contract 使用SQL数据库最重要的原则是Schema(架构),数组库如何组织,其实就是表结构.我们一般会用一个同伴类,Contract 类, 明确指定架构的布局以一个系统的和并且自我描述的方式. 一个Contract类是定义URIs,tables,columns这些常量的容器.Contract类允许在同一个包的不同类之间使用同一个常量.这样, 在一个地方修改,其他地方不需要修改.(问题是,这些常量必须在一个包里,所以说,数据相关的代码要放在同一个包

SQL SERVER大话存储结构(5)

阅读目录(Content) 1 基本介绍 2 对数据库启动的影响 3 日志文件添加方式 4 物理结构 5 延迟日志截断原因 6 管理事务日志 本系列上一篇博文链接:SQL SERVER大话存储结构(4)_复合索引与包含索引 回到顶部(go to top) 1 基本介绍 每个数据库都具有事务日志,用于记录所有事物以及每个事物对数据库所作的操作. 日志的记录形式需要根据数据库的恢复模式来确定,数据库恢复模式有三种: 完整模式,完全记录事物日志,需要定期进行日志备份. 大容量日志模式,适用于批量操作的

SQL SERVER大话存储结构(1)

阅读目录(Content) 1 数据页的类型 1.1 PFS 1.2.3 IAM 2 数据页结构 2.1 页头 2.2 行记录 2.3 空闲空间 2.4 行偏移量 3 查询数据页存储格式的途径 3.1 dbcc ind 3.1.1 语法说明 3.1.2 测试案例 3.2 dbcc page 3.2.1 语法说明 3.2.2 测试案例 如果转载,请注明博文来源: www.cnblogs.com/xinysu/   ,版权归 博客园 苏家小萝卜 所有.望各位支持! SQLServer的数据页大小是8

SQL SERVER大话存储结构(3)

阅读目录(Content) 1 引入 2 数据行 2.1 数据行结构 2.2 特殊情况(大对象.行溢出及forword) 2.2.1 大对象 2.2.2 行溢出 2.2.3 forword 3 测试存储情况 3.1 堆表分析 3.2 添加主键 3.3 增加一列:可空变长列 3.4 增加一列:非空变长列+默认值 3.4.1 非大对象列 3.5 删除无数据的列 3.6 删除有数据的列 3.7 行溢出 3.8 Forword 4 行结构与DDL 一行数据是如何来存储的呢? 变长列与定长列,NULL与N

C# 用vs2008连接SQL数据库做动态水晶报表

博主是个还在上大学的新手,如果有什么说错的地方请务必帮我指出来,谢谢! 想要完成一个能够动态改变其中数据的水晶报表,可以通过创建一个 数据的中转站来存储和输出数据的方式. 借由这个中转站,我们可以通过为它动态输入数据,然后再将数据导出到水晶报表,来达到得到有动态数据的水晶报表的目的. 仅在vs2008中,很多它自带的应用也可以达到中转站的作用,比如数组,数据集等. 博主最近刚在学SQL所以尝试了用VS连接数据库来做水晶报表. 1.首先,博主在SQL中创建了名为xxs的数据库,然后再在数据库xxs

SQL数据库基础知识-巩固篇<一>

SQL数据库基础知识-巩固篇<一>... 首先展示两款我个人很喜欢的数据库-专用于平时个人SQL技术的练习<特点:体积小,好安装和好卸载,功能完全够用了> MySQL-57 DataBase MS-SQLServer-2000 DataBase SQL的含义:结构化查询语言(Structured Query Language)简称SQL 作用:SQL(Structured Query Language,结构化查询语言)是一种用于操作数据库的语言. 结构化查询语言包含6个部分:一:数