- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
在我们的应用开发之初,我们大量使用 SqlDependency 来缓存数据库结果,直到通知告诉我们的应用获取新副本。
在测试期间,我们注意到 SQL 数据库的性能受到 SqlDependency 通知服务的影响。我们缩减了使用 SqlDependency 的表的数量,并注意到性能有了很大的提高。所以,我们认为我们刚刚结束使用它,我们继续前进。我们现在只剩几张 table 了。
后来,我们发现我们无法缩减将建立依赖关系的用户名的安全访问级别。我们可以为每个数据库设置多个连接字符串(一个用于依赖关系,一个用于应用程序的其余部分),但是对于多个数据库和数据库镜像,这是一件痛苦的事情(从 SQL 数据库管理员和应用程序开发的角度来看)。
在这一点上,我们只是考虑基于以下逻辑完全摆脱 SqlDependency:
有人看出这个逻辑有缺陷吗?
与 SqlDependency 相比,每秒轮询一次表是否会对数据库造成更多或更少的负载?
有人遇到过与 SqlDependency 类似的性能问题吗?
最佳答案
我敢尝试回答您的问题。但我不确定您是否会得到您希望得到的答案...
我记得在 20 世纪 90 年代初期,Borland 在他们的数据库 Interbase 中推广了“回调”这一重要的新功能,该功能将通过一些非常漂亮的新技术向调用者 (Delphi) 提供“通知”,并 promise 数据库可以积极点'。
这后来被称为“waste of time theory” '.
我想为什么这从来没有发生过,也许是因为虽然 DBMS 的概念看起来很有前途,但数据库是您只能向上扩展而不是横向扩展的层之一。
所以编程语言来拯救。或者更确切地说,是面向服务的体系结构 (SOA) 的想法。许多人将 SOA 与“Web 服务”混淆,这确实是这个新概念中包含的炒作。
但是如果你查看 Fiefdom/Emissary 设计模式(或者 Master/Agent 模式更名以使其听起来更酷更专业),你会发现主要的想法是对其资源(读取数据库)和所有调用都通过一个数据适配器进行传输。
显然,这样的设计根本不适用于触发器或任何回调框架。
但我认为您应该重新考虑您的整个设计。如果您通过单个“DataLayer”汇集所有操作和所有调用,可能使用 Entity Framework ,并且可能在此之上使用缓存机制,您将不必依赖数据库将消息转发到食物链。
为了展示“以数据库为中心”时事情会变得多么奇怪,这里有一个关于如何不发送电子邮件的极端实际示例,很久以前由一位编码人员编写,我并没有留下太多印象与:
事实 1:Sql Server 可以发送电子邮件。
事实 2:Asp3 编码人员不知道这是否可以或如何在 VbScript 中完成。
Asp3: 读取文本框邮件地址,发送到com+层
Com+:获取电子邮件地址并转发到数据层
数据层:获取电子邮件地址并转发到存储过程
存储过程:获取电子邮件地址并转发给 sql 函数
功能:做奇怪的子串事情来检查电子邮件地址是否有@。在里面。返回 true 或 false。
存储过程:返回一个一列一行包含 1 或 0 的记录集
数据层:按原样返回表。
Com+: 将第一列和第一行的值为 1 或 0 的值转换为 true 或 false
Asp3:如果为 true,则将带有电子邮件主题和电子邮件正文的电子邮件地址发送到 com+
Com+:向数据层发送准确的信息
数据层:调用存储过程..
Sproc:调用一个 sql 函数...
功能:使用sql server email agent发送邮件
如果你读到这里,我的建议是让 sql server 管理表、关系、索引和事务。它非常擅长这一点。超出这些任务的任何事情,以及我确实在存储过程中包含游标,都可以通过适当的代码更好地处理。
关于c# - 使用 SqlDependency 与表的定期轮询(性能影响),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14203704/
var status = {{ check_status }}; call_polling = function() { // polling request to API (async)
我有一个网络应用程序,它有一个计时器,每 3 秒触发一次轮询以获取数据。它工作正常大约 2.5 分钟,然后 Chromium 崩溃。 我的请求 Dart 看起来像这样 HttpRequest.getS
是否已经有为 jQuery 编写的通知库?一种提供下拉消息的方式,类似于 StackOverflow 的方式。 寻找的东西: 1)每几秒轮询一次(也许可以选择 cometd ) 2) 有一个标记为已读
当电池电量不足时,Android 将发送一个 ACTION_BATTERY_LOW Intent 。然后当它再次正常时,它会发送 ACTION_BATTERY_OKAY。 不幸的是,如果我的应用程序在
如果在内核模式CPU可以访问用户空间内存,为什么我们在调用poll/select时需要将数据从用户空间复制到内核空间? 引自 Linux 编程接口(interface): When running i
我正在尝试使用来自 python 的 poll() 来轮询一个进程。 link 我不明白,我正在为它提供一个整数值来进行轮询。例如:值为 14870 14870 Traceback (most rec
我正在用 Java 编写一个程序,我在一个线程上打开了 256 个网络连接。每当套接字上有任何数据时,我都应该读取它并进行处理。目前,我正在使用以下方法: while true do itera
我有一个有点哲学的问题。我们使用存储队列来处理“门票”。我们实现的方式是我们有一个后台服务(辅助角色),它轮询存储队列并找出是否有任何票证需要处理。我们所做的工作具有季节性。这意味着不会一直有票需要处
我目前正在使用 CFReadStreamHasBytesAvailable 轮询我的 CFReadStream 以获取新数据。 (首先,一些背景知识:我正在做自己的线程,我不想/不需要搞乱运行循环的东
使用 azure-sdk-for-php 长时间轮询 Azure 队列存储时,如果我的请求间隔超过 30 秒,则库会因以下错误而终止: PHP Notice: fwrite(): send of 2
我在尝试使用 JavaScript 监听 Firebase 中的更改来进行实时刷新时遇到了一些问题。我尝试做的是一个聊天系统。与另一个用户开始新的聊天后,我将加载两个用户之间的所有聊天。 code 我
我正在开发一个使用通知系统的网站(如 Facebook 的系统)。为此,我想我将编写一个 JQuery 轮询函数,使用 ajax 在服务器端查找新通知。 我的问题是,这是个好主意吗? 最佳答案 客户端
我正在开发一个后端服务,该服务使用 spring aws 集成定期轮询 S3 存储桶,并处理来自 S3 的轮询对象。下面是它的实现 @Configuration @EnableIntegration
我想要一些关于如何实现以下内容的建议: 我想让我的用户通过 AJAX 了解在我的服务器上运行的任务的进度。我的服务器运行一个 PHP 脚本,该脚本使用 popen 函数通过 shell 命令下载文件。
我想使用 jQuery 和 AJAX 持续轮询 URL,直到收到 200 状态代码响应。 URL 指向提供文件的 REST API。理想情况下,我会获取其他状态代码,在这些状态代码上我将再次调用 UR
我想知道是否可以将 Ajax 轮询插入到我下面的当前代码中,以便用户每隔几秒发布一次更新,以显示添加到数据库中的任何新内容,例如它们的状态和新的数量添加的评论和我构建的提要中的时间戳。这是我到目前为止
我想弄清楚如何在不使用触发器的情况下轮询对 Oracle 表所做的更改。我目前关心的唯一变化是新的/插入的记录。任何建议将不胜感激。 我也真的不想使用其他表来跟踪更改的内容。 谢谢! 小号 最佳答案
这个问题在这里已经有了答案: How do I return the response from an asynchronous call? (41 个回答) 关闭 3 年前。 我正在尝试轮询 AP
我有一个 SSIS 包,它在 Foreach 容器 中启动另一个 SSIS 包;因为容器在启动它必须启动的所有包后立即报告完成,我需要一种方法让它等到所有“子”包都完成。 所以我实现了一个小的 sle
我将这段代码放入我的主视图文件中: jQuery(document).ready(
我是一名优秀的程序员,十分优秀!