ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2) 《Microsoft Sql server 2008 Internals》索引目录《Microsoft Sql server 2008 Internals》读书笔记--目录索引在上篇文章中主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是:关于FileGroup如果你的系统是用Raid设备直接存放data文件则不需要再借助FileGroup因为FileGroup会增加数据库会影响复杂性和灵活性。如果你的磁盘空间许可你仍然不需要使用FileGroup,只要在同一个驱动器内增加一连串的File就可以了。如果计划在不同的驱动器使用表和索引分区Partition内容应该使用FileGroup关于MultiFile ,可以有两个好处第一你不总是有120G的空间来存放一个文件而3个40G的空间要好找的多。第二、只移动一个40G的文件到另一个分区比移动一个120G的文件要容易也不易出错。关于FileStream FileGroup与FileGroup的不同如果在创建数据时使用了FileStream参数如下- The file and filegroup will grow as data is added to tables that have been created with -- filestream columns: CREATE DATABASE MYMOVIEREVIEWS ON PRIMARY ( NAME REVIEWS_DATA, FILENAME C:/DATA/REVIEWS_DATA.MDF), FILEGROUP MOVIEREVIEWSFSGROUP1 CONTAINS FILESTREAM ( NAME REVIEWS_FS, FILENAME C:/DATA/REVIEWS_FS) LOG ON ( NAME REVIEWS_LOG, FILENAME C:/DATA/REVIEWS_LOG.LDF); GO则在C:/DATA/REVIEWS_FS下会生成一个$FSLOG文件夹和一个FileStream.hdr文件,这个hdr文件就是一个FileStream 包含关文件不能被修改和移动。在运行Alter database时会覆盖为最新的一个。关于ileStream编程模型实现请参照使用 FileStream SQL Server 2008 中编程下表 : 使用 FileStream SQL Server 2008 中编程 | Microsoft Learn引擎盖下的数据库(Databases under the hood)一个数据库由可以持久存储用户对象如用户表和索引等的空间组成这些空间由用户创建数据库时指定。而这些空间被指派到一个或多个操作系统文件。数据库被分成了一个个的逻辑页(logicalpages),每个逻辑面为8KB大小在数据文件中这些逻辑页由数字0-X连续存放X由文件的大小确定你可以通过·定义一个数据库ID(databse ID),一个文件ID或页面数比如3等来指向任何一个页。当你使用Alterdatabase来增加数据库大小时新的空间被加到数据文件的末尾那就意味着新分配空间的第一页是X1。当你使用DBCCShrinkDatabase或DBCCShrinkFile命令时位于最高数字的页面先被移去这些页位于数据文件的末尾然后依次是低数字的页面这保证页面的数字始终是连续的。大家是不是觉得这个跟堆栈的操作很类似啊呵呵。当你创建一个数据库时Create Database时会产生一个惟一的ID,Database ID,你可以在sys.databses视图找到它。该视图返回所有数据库的名称、database_id等参数。空间分配存放数据库表和索引的空间被托管在一个个很小的单元我们称为“范围”(extent),每一个范围由8个连续的页面组成共64K。为了使空间分配更加高效SQL Server 2008并没有完全分配范围到所有小数据量的表,SQL Server 2008有两种类型的范围(Extent)1、标准范围Uniform extent):范围被一个单独的对象所拥有范围内所有8个页面只被各自的一个对象拥有。2、混合范围(Mixed extent):范围被8个页面所共享。SQL Server对于新表或索引分配空间时默认为混合范围当表或索引增加到8个页面时所有内容改为标准范围。当一个表或索引需要更多的空间时SQL Server将会查找已经被分配的可用空间当表或索引的页面数还没有达到8个时SQLServer一定找到一个可用的混合范围。如果表或索引都等于8个页面或更多时SQL Server 必须找到一个新的自由的标准范围。SQL Server使用两种类型的页面来记录范围的分配和可用类型Global Allocation Map(GAM) pages(page 2)和Shared Global Allocation Map(SGAM)pages(page 3).关于GAM/SGAM更多的资料或者想要详细了解一个数据库的空间分配情况请参看http://msdn.microsoft.com/zh-cn/library/ms175195.aspx此外如果范围的总大小超过4GB,超过的部分将由IAM pagespage )来分配。Page Free Space(PFS) page (page )Differential Changed Map(DCM) page (page 6)Bluk Changed MapBCM) page (page 7)数据库快照(Database Snapshot)数据库快照是SQl2005企业版开始提供的一项新功能它允许你创建一个任何数据库的一个只读的实时点。事实上你可以创建多个快照点。快照的一大好处是使用空间比原始数据库少的多。困为它只在存储了已经发生变化的页面(pages)关于SnapShot的更多内容请参看http://msdn.microsoft.com/zh-cn/library/ms175158%28SQL.90%29.aspx需要注意的是、model,master,tempdb这三个系统数据库不能创建快照。、快照继承源数据库的安全限制因为它是只读的你不能修改快照的权限许可。、如果你删除了源数据库的一个用户这个用户仍然在快照中。、快照不能被备份和恢复但是源数据库的备份与恢复不受快照影响。、快照不能被连接(attach)或断开(detach)6、快照不支持全文检索也不能传播源数据库的全文分类(full-text catagies)。下面将继续关注Tempdb数据库邀月注本文版权由邀月和CSDN共同所有转载请注明出处。助人等于自助! 3wlive.cn
返回列表