问题标签 [sparse-columns]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
271 浏览

sql-server-2008 - 使用稀疏列而不是普通关系表有什么风险?

我有三个与一个表相关的表,在我的新设计中,我想通过使用稀疏列来替换关系。你可以看下图。

在此处输入图像描述

我知道我会有冗余。但我想知道这种设计方式的其他风险是什么?通过这种新方式,我的查询将非常简单快捷。您对此有何想法?抱歉我的英语不好,谢谢。

0 投票
2 回答
317 浏览

sql-server - 使用稀疏列减少日志文件中的重复数据

我正在构建一个应用程序,它将汽车性能指标记录到一个由每个会话 100 列 X 500,000 行组成的表中。一些列非常重复(以华氏度为单位的冷却剂温度)。其他列不断变化(火花提前、歧管压力、空燃比)。

列存储和页面压缩是不可能的,因为该项目是针对开源受众的。它需要支持 MS SQL Express Edition 或其他可以很好地扩展到大表大小的免费数据库平台。

我最初的解决方案是在某些列中允许为 null,这样可以通过不插入重复值来显着减少存储空间,这使我可以将日志分辨率提高到更高的帧速率。

然而,这在选择离散行时引入了一个障碍,因为某些列将 99% 为空。因此,有必要创建一个视图(或计算列?),它将选择包含该字段中的值的最后一行。我的方法是对每个稀疏列使用子查询。这似乎非常不雅。我应该考虑一种更有效的方法吗?

0 投票
1 回答
874 浏览

sql - 稀疏列未显示任何节省

我已经进行了一项测试,将具有一些稀疏列的表与没有稀疏列的表进行比较,并且我看到节省空间为零。

我有两个表,都主要在 varchar 列中存储地址信息。两个表都允许空值,一个具有列稀疏属性集。

我在每个中插入 1000 行默认值(默认值为空)。稀疏列以不同的方式存储空值,所以我相信我应该看到节省空间。但是在运行 sp_spaceUsed 时,我没有看到任何节省。关于我做错了什么或我的理解不正确的任何想法?

0 投票
0 回答
520 浏览

c# - 无论如何要从 ADO 实体数据模型创建的部分类中动态获取特定的稀疏列?

我使用数据库优先方法在我的 MVC 应用程序中生成类。我们有很多表,其中一些具有稀疏列(它们都存储为字符串,而来自数据库的表将有一个称为“稀疏列”的列作为“xml”数据类型)。这个问题是那些稀疏列也被添加为部分类的一部分,我担心如果我尝试执行任何类型的 CRUD 操作,无论它是否正在读取,这可能会导致性能问题和大量空值,更新等...

我的问题是,这周围有吗?有什么方法可以指定每个 CRUD 操作要填充和/或使用的稀疏列吗?实体框架有什么方法可以帮助解决这个问题吗?

0 投票
5 回答
47863 浏览

r - 如何在 R 中读取具有不同列数的 CSV 文件

我有一个稀疏数据集,其列数的长度不同,采用 csv 格式。这是文件文本的示例。

当我使用

R 会将数据集解释为具有 3 列,因为大小是从前 5 行确定的。无论如何强制 r 将数据放在更多列中?

0 投票
1 回答
144 浏览

sql - SQL Server:为什么“SPARSE”不会影响空间?

为什么 alter table <> alter column<> SPARSE 在案例 1-3 中没有效果,而仅在案例 4 中有效?即我们可以说该列只能在创建时声明为 SPARSE 吗?

我已经在 SQL2012 中测试了这段代码。

在此处输入图像描述

0 投票
1 回答
880 浏览

r - 在R中申请sparseMatrix

我想知道有没有一种方法可以在 R 中的(来自包)上执行某种apply功能来切割等 数组上的列?sparseMatrixMatrixk

并且是否仅将列中大于 0 的那些元素划分为组

对于小sparseMatrix代码看起来像这样,但我敢打赌它在更大的矩阵上不会有效。

0 投票
0 回答
412 浏览

sql-server - 无法创建具有大小稀疏数据的行

我有一个表,其中包含一个 pk 列(bigint)、一个非稀疏 bigint、30 k 稀疏列(20 k 位、5 k int、5 k nvarchar(255))和一个列集。

当我尝试使用 '.' 更新 nvarchar 列时 在该列当前包含 null 的行中,我得到:

“无法创建大小为 8028 的稀疏数据大于允许的最大稀疏数据大小 8023 的行。”

当我总结这一行的非空列中的数据时,我得到

a) << 8023 字节,当使用每比特 0.125、每 int 4 和每 nvarchar 2 + datalength(..) 时。

我得到

b) >> 8023,当使用每比特 5、每 int 8 和每 nvarchar 4 + datalength(..) 时。

所以 b) 中每列的字节数不能是 sql server 用来计算最大值 8023 的字节数。

所以我现在很困惑为什么 sql server 说该行已满。

这是 sql server 2012 中的(已知)错误吗?

谢谢

现在我尝试了:

insert into sparsetable (dummy1, b1, i1, v1) values ('x', 1, 1, '123') -- 无法创建具有大小为 8054 的稀疏数据大于允许的最大稀疏数据大小的行8019。

insert into sparsetable (dummy1, b1, i1) values ('x', 1, 1) -- 无法创建大小为 8042 的稀疏数据大于允许的最大稀疏数据大小 8019 的行。

insert into sparsetable (dummy1, b1) values ('x', 1) -- 无法创建大小为 8032 的稀疏数据大于允许的最大稀疏数据大小 8019 的行。

谁能解释一下数字?

谢谢

0 投票
0 回答
146 浏览

sql-server-2008 - MS SQL:表中具有非空值的最大稀疏列数

我试图找出 sql server 2008 为稀疏列分配的空间。https://msdn.microsoft.com/en-us/library/cc280604(v=sql.100).aspx中记录的值似乎是错误的。

当我创建一个带有 bigint 作为 pk 的表和其余所有稀疏列,然后用值 1 填充每个稀疏列时,我可以创建一个表

1124 位列或 800 个 int 列或 1000 个 nvarchar(255) 列。

所以看起来有点使用 7 个字节,一个 int 10 个字节和一个 nvarchar 使用 1 个 char 8 个字节。这比文档中记录的多 2 个字节。

有任何想法吗?我错了还是文档?

谢谢

0 投票
1 回答
578 浏览

sql-server - 如何计算NULL值使用的存储空间?

似乎很难找到有关此的准确信息。MSDN有一篇关于稀疏列的文章,以及在使用它们时应考虑哪些空百分比阈值。但是关于默认空存储空间使用的事实似乎很难得到。

一些消息来源声称 NULL 值不占用任何空间,但这意味着稀疏列首先毫无意义。有人声称只有表定义中的空位图会添加一个位来表示每个可为空的列,但没有进一步的开销。一些人声称固定长度的列(char、int、bigint 等)实际上使用了相同数量的存储空间,而不管值是否为空。

那么它是什么,真的吗?

假设我有一个数据库中所有可空列的列表,其中包含表中的总行数,以及每列和类型的 NULL 行数。我将如何准确计算 NULL 值现在使用了多少空间,然后我可以通过将列更改为稀疏来准确预测节省了多少空间?我可以很好地将 4 字节开销添加到非空行,但是当我不知道如何处理空行时它没有帮助?