zoukankan      html  css  js  c++  java
  • 行内数据

    所谓行内数据,最近在讲课中也提到了:SQL Server的行(Row)是不能跨页(Page)的, 准确地说,一行数据的长度最多是8060字节。那么对于那些超过大小的数据怎么办呢?按照正常的理解是,它们是单独存放在一个位置的,在行里面放置了一个指针。

    那么,有没有这样一种情况,就是说,我确实是一个很大的数据类型,但是当前这一行所给我赋的值并没有那么多,例如它确实只有100Byte。是不是一定要千篇一律地放在行外面去?

    这些数据类型是什么呢?以及他们都受什么选项的影响来决定如何存储数据呢?

    text,ntext,image ==》这三个比较旧的数据类型受到 text in row这个选项的影响

    可以按照以下方式通过使用 sp_tableoption 为表启用 text in row 选项:

    sp_tableoption N'MyTable', 'text in row', 'ON'

    或者,可以为能够在数据行中存储的 textntextimage 字符串长度指定从 24 到 7,000 字节的最大限制:

    sp_tableoption N'MyTable', 'text in row', '1000'

    如果指定的是 ON 而不是一个特定的限制,则此限制的默认值为 256 字节。该默认值使您能够从使用 text in row 选项中获得最多的性能收益。虽然通常情况下,不应使该值的设置低于 72,但也不应将其设置的过高。该设置尤其适用于其中大多数语句都不引用 textntextimage 列的表,或其中有多个 textntextimage 列的表。

    如果设置了较大的 text in row 限制,且行本身存储了许多字符串,则可以显著减少存储在每页上的数据行数。如果大多数引用表的语句都不访问 textntextimage 列,则减少页中的行数会增加处理查询时必须读取的页数。减少每页上的行会增加索引和页的大小,优化器找不到可用的索引时可能必须扫描这些索引和页。text in row 限制的默认值为 256,这足以确保小型字符串和根文本指针可以存储在行中,但不会使每页上的行减少太多以至影响性能。

    对于具有表数据类型的变量和用户定义函数(返回)返回的表,text in row 选项自动设置为 256。不能更改该设置。

    也可以使用 sp_tableoption 指定 OFF0 选项值来禁用此选项。

    sp_tableoption N'MyTable', 'text in row', 'OFF'

    varchar(max),nvarchar(max),varbinary(max),XML==》这四种类型受到large value types out of row这个选项的影响

    如果指定为 OFF,则 varchar(max)nvarchar(max)varbinary(max)xml 列的行内限制被设置为 8,000 字节。只有 16 字节的根指针存储在行内,而值存储在 LOB 存储空间中

    sp_tableoption N'MyTable', 'large value types out of row', 'ON'
    sp_tableoption N'MyTable', 'large value types out of row', 'OFF'
    有关行内数据的更多细节,请参考下面的链接

    http://technet.microsoft.com/zh-cn/library/ms189087(SQL.90).aspx

  • 相关阅读:
    VS2019删除大量空白行或者缩进大量空白行
    VS219 没有.net core 3.0模板
    Win10怎么添加开机启动项?Win10添加开机自动运行软件三种方法
    Unity 屏幕坐标到UGUI RectTransform本地坐标的转换
    MySQL 常用帮助信息
    CentOS 7 系统初始化
    JDK 安装部署
    centos7 yum install redis
    Redis5.0.3单机版安装
    shell 脚本检测端口状态
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/1441948.html
Copyright © 2011-2022 走看看