设为首页 收藏本站
查看: 731|回复: 0

[经验分享] 《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

[复制链接]

尚未签到

发表于 2015-6-28 19:48:27 | 显示全部楼层 |阅读模式
  
  《Microsoft Sql server 2008 Internals》读书笔记订阅地址:
  http://www.iyunv.com/downmoon/category/230397.html/rss
  《Microsoft Sql server 2008 Internals》索引目录:
  《Microsoft Sql server 2008 Internal》读书笔记--目录索引
  
  在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是:
  关于FileGroup
  如果你的系统是用Raid设备直接存放data文件,则不需要再借助FileGroup,因为FileGroup会增加数据库会影响复杂性和灵活性。
  如果你的磁盘空间许可,你仍然不需要使用FileGroup,只要在同一个驱动器内增加一连串的File就可以了。
  如果计划在不同的驱动器使用表和索引分区Partition内容,应该使用FileGroup
关于MultiFile ,可以有两个好处:
  第一,你不总是有120G的空间来存放一个文件,而3个40G的空间要好找的多。
  第二、只移动一个40G的文件到另一个分区比移动一个120G的文件,要容易,也不易出错。
  关于FileStream FileGroup与FileGroup的不同,
  如果在创建数据时使用了FileStream参数,如下:

DSC0000.gif DSC0001.gif 代码

-- 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时,会覆盖为最新的一个。
关于FileStream编程模型实现,请参照:
使用 FileStream SQL Server 2008 中编程http://msdn.microsoft.com/zh-cn/magazine/dd695918.aspx
  引擎盖下的数据库(Databases under the hood)
  一个数据库由可以持久存储用户对象如用户表和索引等的空间组成,这些空间由用户创建数据库时指定。而这些空间被指派到一个或多个操作系统文件。
  数 据库被分成了一个个的逻辑页(logical pages),每个逻辑面为8KB大小,在数据文件中,这些逻辑页由数字0-X连续存放,X由文件的大小确定,你可以通过·定义一个数据库 ID(databse ID),一个文件ID或页面数,比如3等,来指向任何一个页。当你使用Alter database来增加数据库大小时,新的空间被加到数据文件的末尾,那就意味着:新分配空间的第一页是X+1。当你使用DBCC ShrinkDatabase或DBCC ShrinkFile命令时,位于最高数字的页面先被移去,这些页位于数据文件的末尾,然后依次是低数字的页面,这保证页面的数字始终是连续的。是不是感觉有点像堆栈的操作?呵呵。
  当你创建一个数据库时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个时,SQL Server一定找到一个可用的混合范围。如果表或索引都等于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 pages(page 4)来分配。
  Page Free Space(PFS) page (page 5)
  Differential Changed Map(DCM) page (page 6)
  Bluk  Changed Map(BCM) page (page 7)
  数据库快照(Database Snapshot)
  数据库快照是SQl2005企业版开始提供的一项新功能,它允许你创建一个任何数据库的一个只读的实时点。事实上,你可以创建多个快照点。快照的一大好处是使用空间比原始数据库少的多。困为它只在存储了已经发生变化的页面(pages),

  关于SnapShot的更多内容,请参看
http://msdn.microsoft.com/zh-cn/library/ms175158%28SQL.90%29.aspx
  需要注意的是:
  1、model,master,tempdb这三个系统数据库不能创建快照。
  2、快照继承源数据库的安全限制,因为它是只读的,你不能修改快照的权限许可。
  3、如果你删除了源数据库的一个用户,这个用户仍然在快照中。
  4、快照不能被备份和恢复,但是源数据库的备份与恢复不受快照影响。
  5、快照不能被附加(attach)或分离(detach)
  6、快照不支持全文检索,也不能传播源数据库的全文分类(full-text catagies)。
  下面将继续关注Tempdb数据库

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-81337-1-1.html 上篇帖子: SQL Server嵌套事务探讨 下篇帖子: SQL Server中添加注释
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表