- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我来自 Web 开发的前端世界,我们非常努力地尝试限制发出的 HTTP 请求的数量(通过合并 css、js 文件、图像等)。
对于数据库连接 (MySQL),显然您不希望有不必要的连接,但作为一般规则,有多个小查询有多糟糕? (他们执行迅速)
我问是因为我正在将我的应用程序移动到集群环境中,之前我在服务器内存中缓存一些东西(因为我在单个服务器上运行),我现在试图让我的应用程序“无状态”并且在我当前的实现中,这意味着更多的小型数据库调用。这将帮助我实现负载平衡(避免粘性 session )并降低服务器内存使用率。
我们不是在谈论大量查询,可能是 6-8 次 db 调用而不是 2-4 次,返回从几条记录到几千条记录的任何地方。它们每个都执行得很快,不到 30 毫秒(有些更短),但我不知道是否存在一些我应该担心的“连接延迟”。
感谢您的见解。
最佳答案
简短回答:(1) 确保您保持在相同的大 O 级别、重用连接、衡量性能; (2) 想想你有多关心数据的一致性。
长答案:
性能
从严格的性能角度来看,一般来说,除非您已经接近用尽数据库资源(例如最大连接数),否则这不太可能产生重大影响。但有些事情你应该记住:
O(1)
,它是否会更改为 O(n)
?或者当前的 O(n)
将更改为 O(n^2)
?如果是,您应该考虑这对您的申请意味着什么一般而言,关于性能,经验法则是 - 始终衡量。
一致性
但是,性能并不是要考虑的唯一方面。还要考虑您对应用程序中数据一致性的关心程度。
例如,考虑一个简单的情况 - 具有一对一关系的表 A
和 B
并且您正在使用主键查询单个记录。如果您连接这些表并使用单个查询检索结果,您将同时从 A
和 B
获得记录,或者两者都没有记录,这就是您的应用程序也期望。现在考虑是否将其拆分为 2 个查询(并且您没有使用具有首选隔离级别的事务)——您从表 A
中获取了一条记录,但在您从表 中获取匹配记录之前code>B
,它被另一个进程删除/更新。现在您的应用程序有来自 A
的记录,但没有来自 B
的记录。
这里的一般问题是 - 您是否关心关系数据的 ACID 合规性,因为它与您要拆分的查询有关?如果答案是肯定的,您必须考虑您的应用程序逻辑在这些特定情况下将如何 react 。
关于mysql - "extra"数据库查询有多糟糕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36368487/
我正在将 ansible 合并到我们的内部 RHN 卫星中。我有来自 Red Hat 的完全更新的 RHEL 7 基础 repo 、附加、补充、可选和 RHN 工具。当我们需要它们时,我还会将选定的包
我尝试将一些值发送到另一个 Activity 。 recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getApplicatio
我有这个代码: Intent intent = new Intent(); intent.setAction(Intent.ACTION_PICK); intent.s
几天前,我一直在努力寻找一种方法来为我的闹钟使用自定义 Intent 。虽然我得到了明确的答案,但我必须根据一些唯一的 ID 来定制 Intent,例如。 setAction()还是有一些问题。 我这
通知正在提供旧值。我阅读了 stackoverflow 链接,但仍然不适合我: Notification passes old Intent Extras 我有一个 Activity A。当我在 Ac
我想写以下内容: result = [] for x in list(range(10)): if x%2 != 0: for a in [1,2]:
我在使用 mysql 5.5.12 时遇到了 Amazon RDS 的 IO 性能问题。有 2 种实例类型相似且价格接近: 超大数据库实例:15 GB 内存、8 个 ECU(4 个虚拟核心,每个 2
这里是 Android 的新手,我正在与一位资深人士就 bundle 和 Intent 进行辩论。这就是我一直在做的...... Intent intent = new Intent(this, Ta
我使用的是MinGW+MSYS, 我添加了 extra-include-dirs、extra-lib-dirs,但似乎没有任何东西可以帮助 cabal 找到 PCRE 库。以下是我尝试过的一些命令行,
我已将 CVS 中的一个模块 check out 到新安装的 Windows 7 计算机上。病毒扫描程序尚未安装。 后来,当我尝试进行更新时,收到以下错误消息: 无法将文件 CVS/Entries.E
Alpine镜像中的telnet在3.7版本后被转移至busybox-extras包中,需要使用apk单独安装。 现象 Alpine版本为3.8, 不再有指向busybox的telent
对lazy="extra"究竟能做什么,有没有很好的解释? 我看过的所有帖子都只是重复了一个事实,即它会引用 MyObject.ItsCollection.Count进入 select count(*
这个问题已经有答案了: Two semicolons inside a for-loop parentheses (4 个回答) Endless loop in C/C++ [closed] (12
我的包为包含的额外内容返回空字符串。不是 NPE,是实际的“空”值。关于为什么会发生这种情况的任何想法? 新 bundle String u = nul
在 es6 中,以下似乎是有效代码: function test(a1,{a=1,b=2} = {},) {} 注意函数参数中额外的,。我不确定这是否是一个错误,因为这个额外的 , 仅适用于解构分配。
我正在查看一个包含 .myClass a.extra{...} 和 .myClass a.extra:hover{...} 的 css 模板“额外”是什么意思? 最佳答案 extra 是类名。 因为你
我来自 Web 开发的前端世界,我们非常努力地尝试限制发出的 HTTP 请求的数量(通过合并 css、js 文件、图像等)。 对于数据库连接 (MySQL),显然您不希望有不必要的连接,但作为一般规则
问题是关于包含不必要的 header 以避免在子文件中多次调用它。这是场景,我有几个文件: srlogger.h srinterface.h srinterface.cc #include #inc
我有一个程序表现出奇怪的行为 #include #include using namespace std; class man{ int i ; public:
本文整理了Java中org.threeten.extra.YearQuarter类的一些代码示例,展示了YearQuarter类的具体用法。这些代码示例主要来源于Github/Stackoverflo
我是一名优秀的程序员,十分优秀!