【问题标题】:Is it faster to use else/if statements or a SQL query?使用 else/if 语句或 SQL 查询是否更快?
【发布时间】:2013-09-19 06:24:06
【问题描述】:

我正在构建一个在 Web 门户上显示信息的应用程序。 我在一栋建筑物中有 X 个读卡器,这些读卡器与同一栋建筑物中的控制器通信。如果读卡器有任何刷卡行为,它们会将信息发送到控制器,然后控制器将其写入数据库。

一旦发生刷卡事件,我必须在网页上显示此读卡器信息。 所以我使用 perl Pcap 来捕获控制器和数据库之间的数据包,读取有效负载,解析它就像“如果第 n 位是这个打印这个,如果,打印这个”,我重复相同的 else if 处理门号,卡号,门打开/锁定状态等。

所以我的问题是,哪个更快?从 SQL 数据库获取最新数据以更新网页的程序或 else if 迭代,解析数据然后将其写入 XML 数据库并运行订阅脚本以更新网页?

【问题讨论】:

  • 我的直觉是数据库效率较低,因为它必须进行大量磁盘访问。但唯一真正的判断方法是测量。架构的细节可能是一个重要因素。
  • 如果您使用 pcap 方法,您可能需要查看用于编写 tcpdump/wireshark 解码器的库,因此您不必自己实现所有 if/then 内容。跨度>
  • 您有速度问题吗?您是否有某种必须满足的最低标准?在没有任何类型的测量或任何类型的目标的情况下担心速度是盲目的。获得一个可行的解决方案,然后如果它太慢,请考虑优化它。
  • 我几乎可以向您保证,与检索整个数据集并实现相同的搜索和选择相比,使用 SQL 查询(除非您的查询中存在复杂和格式错误的内容)可以获得更好的性能程序中的逻辑。数据库针对这些类型的操作进行了优化,并且比任何编程语言都快得多,尤其是像 Perl 这样的解释型语言。
  • @AndyLester 我的应用程序已完成并正在运行。该应用程序是由其他人启动的,他们使用 IF-MAP(IF-MAP.org) 作为元数据数据库来存储所有数据。所以我想知道哪种方法可以提供更好的性能。

标签: sql database performance perl xml-parsing


【解决方案1】:

唯一真正的答案是:去吧,两者都有。

需要考虑的事项:

  • 从数据包中提取数据感觉就像一个杂物。丑陋、陈旧、容易损坏、难以维护。
  • “XML 数据库”是个谎言。请改用真实的数据库。
  • 跨多个数据库复制您的信息可能是不必要的冗余,并且可能导致两个信息存储库不同步。另一方面,将不同的数据库用于不同的目的可以带来多种好处。
  • 某些数据库允许您安装在向表中添加新记录时执行的触发器。使用将新事件推送到网络界面的触发器可能是最有效的解决方案。
  • 另一种解决方案是让一个作业定期轮询数据库以查找充当 Web 界面缓存的新事件。这可能不会比运行 pcap 更昂贵。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 2017-08-29
    • 2012-07-07
    • 2014-12-03
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多