Dev*_*ava 1 sql-server documentation database-internals
我正在查看页面和范围分配的 SQL Server 2017 文档。
我从在线资源和 SQL 会议的会议中了解到:从 SQL Server 2016 开始,统一范围分配是默认行为。但是,MS文档描述的是:
为了提高空间分配效率,SQL Server 不会将整个区分配给具有少量数据的表。
- 统一范围由单个对象拥有;盘区中的所有八页只能由拥有对象使用。
- 混合区最多由八个对象共享。范围中的八个页面中的每一个都可以由不同的对象拥有。
新表或索引通常从混合区分配页。当表或索引增长到它有八页时,它就会切换到使用统一区进行后续分配
所以,我的问题是:在 SQL Server 2016 及更高版本中,如果我们创建新表或索引,最初会分配统一范围还是混合范围?
在 SQL Server 2016 及更高版本中,如果我们创建新表或索引,最初会分配统一范围还是混合范围?
如果数据库是在 SQL Server 2016+ 中创建的,那么默认情况下,统一扩展区分配默认处于启用状态,因此即使只需要一个页面,也会分配一个统一扩展区(扩展区是从数据库页面 0 开始的 8 个连续页面)。
但是,如果数据库是在旧版本 <= SQL Server 2014 中创建的,则默认情况下统一范围分配数据库设置不存在,因此使用共享范围中的单个页面。在 <= 2014 中,有一个跟踪标志会覆盖此 TF1118 设置,但它适用于整个实例,而不仅仅是单个数据库。SQL Server 2016 去掉了跟踪标志(它不是 NOP),并将每个数据库的设置设为默认值 ON。
归档时间: |
|
查看次数: |
438 次 |
最近记录: |