SQL数据库如何存储?

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

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

技术分享

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

技术分享

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


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


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


本文出自 “什么是我们的最爱” 博客,请务必保留此出处http://pxizhi.blog.51cto.com/5283742/1603922

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。