使用键/对表与 XML 字段和 XPath 的 SQL Server 性能对比

2024-01-27

我已经看到了关于这个主题的一些问题,但我正在寻找一些关于这个主题的见解性能差异这两种技术之间。

例如,假设我正在记录事件日志,该日志将带有特定事件的键/值对的字典集进入系统。我将使用基本数据在事件表中记录一个条目,但随后我需要一种方法来链接其他键/值数据。我永远不会知道会出现什么类型的键或值,因此任何类型的预定义枚举表似乎都是不可能的。

该事件数据将不断流入,因此插入时间与查询时间同样重要。

当我查询特定事件时,我将使用事件上的一些字段以及键/值数据中的数据。对于 XML 方式,我只需使用 Attributes.exists('xpath') 语句作为 where 子句的一部分来过滤记录。

规范化的方法是使用基本上具有键和值字段的表,并具有指向事件记录的外部链接。这看起来干净简单,但我担心所涉及的数据量。


您拥有“灵活”存储机制的三个主要选项。

  • XML 字段很灵活,但会将您置于 Blob 存储领域,查询速度很慢。我发现,当使用 Xpath 查询从 blob 中挖掘内容时,针对 30,000 行的小数据集的查询需要花费 5 分钟。这是迄今为止最慢的选项,但很灵活。

  • 键/值对的速度要快得多,特别是在事件键上放置聚集索引时。这意味着单个事件的所有属性将物理地一起存储在数据库中,这将最大限度地减少 I/O。该方法不如 XML 灵活,但速度快得多。最有效的报告查询将涉及数据透视(即表扫描以产生中间扁平化结果);加入获取各个字段会慢得多。

  • 最快的方法是使用一个包含一组用户定义字段(Field1 - Field50)的平面表,并保存有关字段内容的一些元数据。这是插入速度最快、查询速度最快且最简单的方法,但表的内容对于无法访问元数据的任何内容都是不透明的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用键/对表与 XML 字段和 XPath 的 SQL Server 性能对比 的相关文章

随机推荐

  • 递归函数依赖不起作用

    我正在尝试乘以单位数组 来自dimensional 在幻像类型中 我在功能依赖性方面遇到了麻烦 问题的简化版本如下 我有以下类型 data F a F String 其中字符串表示外语表达式 幻像类型表示类型列表 我可以做类似的事情 x F
  • 其他程序可以读取我的 NSUserDefaults 设置吗?

    在iPhone上 不包括越狱手机 其他应用程序可以读取您使用设置的值吗NSUserDefaults 我正在考虑为我们的服务保存客户的用户名 密码 并希望确保其安全 不可以 其他应用程序无法看到您的数据 也就是说 您可能应该考虑使用keych
  • 多线程 JDBC

    从架构上来说 处理 JDBC 多线程的最佳方法是什么 我有许多线程同时访问数据库 通过单个连接和语句 我收到以下错误消息 org postgresql util PSQLException 此结果集已关闭 我应该使用多个连接 多个语句还是有
  • 重新采样 Pandas 数据框并合并列中的字符串

    我想重新采样 pandas 数据框并将不同的函数应用于不同的列 问题是我无法正确处理带有字符串的列 我想应用一个将字符串与分隔符 例如 合并的函数 这是一个数据示例 import pandas as pd import numpy as n
  • 正确关闭 libUV 句柄

    我正在尝试找出如何修复使用 Valgrind 运行此程序时遇到的这些内存泄漏 泄漏发生在两个分配中nShell client main 但我不是 确定如何正确释放它们 我尝试在 nShell Connect 处释放它们 但它导致 libUV
  • 有没有办法逐句而不是逐行比较文件?

    只是想让 diff 更好地处理某些类型的文档 例如 使用 LaTeX 我可能有一个很长的段落 严格来说只有一行 但如果只更改一个句子 我不想看到整个段落 特别是如果我正在运行某种版本控制并且合著者与我编辑同一段落 但不是同一句子 我不希望这
  • 是否可以删除通过 Google Photos API 创建的照片或相册?

    即使程序具有完全访问权限 似乎也没有任何方法可以删除创建的照片或相册 删除支持对于 Photos API 的完善至关重要 缺乏删除功能确实限制了 API 的实用性 能够创建东西却要求用户手动删除它们是没有好处的 我是否忽略了某些事情并且有办
  • 使用 PowerShell 从 Outlook 读取最新电子邮件

    我正在尝试阅读主题行 自动化 的 Outlook 电子邮件 并使用自定义脚本进一步处理 下面的脚本读取主题行的电子邮件 但它读取主题为 自动化 的电子邮件的总数 我希望能够仅阅读最近的电子邮件并仅处理特定的电子邮件内容并将电子邮件标记为未读
  • Django/ python-social-auth:LinkedIn 额外数据在某些字段上返回 null

    我正在使用 python social auth 在 Django 中检索 LinkedIn 个人资料数据 a href Login with LinkedIn a 是使用 LinkedIn 登录的链接 SOCIAL AUTH LINKED
  • 如何更改 Rails 中使用的捆绑程序的版本?

    当我运行以下命令时 它会为我提供可用的捆绑程序安装版本 命令 gem list grep bundle output bundler 1 11 2 1 10 6 1 10 4 1 3 6 1 3 0 1 3 0 pre 我使用以下命令获得的
  • C#中如何查看谁使用了某个端口?

    如何确定哪个进程 哪个可执行文件正在使用我的本地主机的 80 端口 我想知道 例如它是否是 Apache Server 等 我们可以从 ipProperties GetActiveTcpListeners 获取一些信息吗 我只看到了本地端点
  • Android:使用贝塞尔曲线进行数字签名

    I am trying two draw digital signature using Bezier as show in above image when i touch and try to draw line then the re
  • 使用 Djoser 和 Django Rest Framework 激活帐户

    我在我的项目中使用 Djoser 进行身份验证 4天多来一直在努力添加电子邮件激活 但似乎未能很好地抓住它 因为文档对我来说有点难以理解 这是我的代码设置 py change auth model to custom model AUTH
  • 简单的多层神经网络实现[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 不久前 我开始了机器学习的冒险 在我学习的最后两年期间 我读了很多书 写了很多机器学习算法的代码 除了神经网络 这超出了我的范围 我对这个
  • HQL 与 SQL/Hibernate netbeans HQL 编辑器

    我正在自学休眠 并且很困惑为什么我不能只编写简单的 SQL 查询 我发现它比普通 SQL 我习惯的 使用起来更混乱 另外 我发现 NetBeans HQL 编辑器非常烦人 对我来说 在 HQL 中生成正确的查询比较困难 然后在 SQL 中生
  • 如何使用 Doxygen 和 Doxygen::Filter::Perl 生成 Perl 子例程的文档?

    我正在尝试弄清楚如何使用Doxygen Filter Perl https metacpan org pod Doxygen Filter Perl生成 Perl 文件的文档 我从一个非常简单的文件开始只是为了看看我是否可以让它工作 tes
  • Angular2 中的类型“{}”不存在属性

    我已经使用 http 调用获取数据 但是 我在编译时显示了上述错误 用户组件 ts this user saveUsers model then data gt if data success true this router naviga
  • 控制器:ctrlfmt 格式错误的控制器字符串“”。必须将 `__name__ 匹配为 __id__` 或 `__name__`

    在 rootes js 中 state main mydata url my data templateUrl app views pages my data html controller mydataCtrl 控制器 controlle
  • 如何关闭被杀死的程序打开的套接字?

    我有一个 Python 应用程序 它打开一个简单的 TCP 套接字来与单独主机上的另一个 Python 应用程序进行通信 有时程序要么出错 要么我直接杀死它 在任何一种情况下 套接字都可能会保持打开状态一段未知的时间 下次我去运行该程序时
  • 使用键/对表与 XML 字段和 XPath 的 SQL Server 性能对比

    我已经看到了关于这个主题的一些问题 但我正在寻找一些关于这个主题的见解性能差异这两种技术之间 例如 假设我正在记录事件日志 该日志将带有特定事件的键 值对的字典集进入系统 我将使用基本数据在事件表中记录一个条目 但随后我需要一种方法来链接其