• Microsoft SQL Server 2008/2012 Internals 一处疑问


    Kalen Delaney 等著的深入解析 Microsoft SQL Server 系列,享有盛誉,深入研读,是管窥深奥复杂之 SQL Server 的阶梯与门径。手头有 Microsoft SQL Server 2008 Internals 影印版,也有 Microsoft SQL Server 2012 Internals 电子版,相互参照,辅之以实际演练,受益匪浅。
     
    但有一处,与实际演练情形有所出入。Microsoft SQL Server 2008/2012 Internals 在 272 页有这样一段:
     
     
    这段文字,2008 版与 2012 版完全一样。文中说,如果向表中插入一行全空记录(除主键之外,其他可空的 varchar 字段全为 NULL):
     
    INSERT INTO NullVarchar (col1,col2,col3,col4,col5,col6,col7,col8,col9,col10)
    VALUES (NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
     
    则通过 DBCC PAGE 命令导出的数据表中的实际存储,其 NULL bitmap 域为全零。而实际的导出结果如下(SQL Server 2012 Express):
     
     
    其中,NULL bitmap 域的值为 0xfe07,实际等于 0x07fe = 0000011111111110。此值的意义为:除第一个字段(主键字段 id)不为空外,其余 10 个字段全为空。
     
    而 Status Bits A = 0x10 = 00010000,其中 bit 4 = 1,说明记录中含有 NULL bitmap 域。而 bit 5 = 0 则表示记录中没有可变长度字段,也就是说,因为所有的可变长度字段都为空,则 SQL Server 索性就不存储这些字段了。
     
    Kalen Delaney 的书 Microsoft SQL Server 2008/2012 Internals 中,NULL bitmap 域为什么是全零?
     
  • 相关阅读:
    意图识别及槽填充联合模型bert
    意图识别及槽填充联合模型的改进 cnn-self-attention
    意图识别及槽填充联合模型cnn-seq2seq
    cnn-residual用于意图识别
    centos 8 上配置asp.net core 5
    WPF自定义控件
    jdk 动态代理源码分析
    在windows上构建angular项目 (下)
    在windows上构建angular项目 (上)
    "名字好难想队“团队项目
  • 原文地址:https://www.cnblogs.com/prowyh/p/Microsoft_SQL_Server_Internals.html
Copyright © 2020-2023  润新知