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

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

wKioL1S2EEuRNnfnAAGVq31KlL0586.jpg

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

wKiom1S2D4GjkGT3AAGapQ847WY980.jpg

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


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


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