有几个关于SQL Server内部结构的问题。
让我们假设我们在数据库中有一个表。
SGAM 和 GAM 页面在单个 GAM 间隔(~4GB)内跟踪共享和统一范围,并帮助我们在分配页面/范围时找到合适的范围类型(最初前 8 个页面是从混合范围分配的,这些页面的位置是记录器到 IAM 页面,然后从 GAM 范围(统一范围)和此信息存储在下一个链接的 IAM 页面中)。
假设为表分配了页面,并且表大小超过 8 个页面,稍后,行被删除,留下一些可重用的空间。SQL Server 如何知道扩展区有可用空间?
页面有关于可用空间大小的信息,但检查每个页面太耗时。SGAM 和 GAM 页面中的位没有告诉我们除了扩展已分配或有一些空闲页面(整个页面是空闲的,不是部分空闲的)之外的任何内容。
文件头 & SGAM & GAM & IAM 页是文件中的第一页。什么数据结构实际上指向它们?
我正在为学校项目设计 dB- 机票数据库。(使用 MySQL 工作台)
到目前为止,我想出了以下设计:

以下是我无法弄清楚的几件事:
Varchar)是个好主意吗?? Flight特定航班的到达城市和出发城市(从表中)不同?(SQL 和 SQL Server 相对较新)我正在阅读Itzik Ben-Gan 的SQL Server 2012 T-SQL Fundamentals。奥托尔指出:
SQL 在不同的语言元素中对 UNKNOWN 有不同的处理方式
所以,我浏览了 SQL Server 文档,特别是WHEREclause,但找不到任何关于如何NULL/UNKNOWN处理的具体信息。
有人可以指出我正确的文档或指出我在文档中读错的内容吗?(我高度怀疑我的问题的答案深藏在 SQL 标准的某个地方,但对我来说可能太复杂了,至少在这一点上。)
(SQL Server 新手)我正在努力理解 SQL Server 中非聚集索引的用途。虽然阅读了 MS 文档(v2012 和 v2008 都有漂亮的图片)和一些在线资源,但仍然有很多悬而未决的问题。