当前位置: 首页 > 面试题库 >

SetMaxOpenConns和SetMaxIdleConns

尚河
2023-03-14
问题内容

为什么有SetMaxOpenConnsSetMaxIdleConns。在文档中

SetMaxIdleConns

SetMaxIdleConns设置空闲连接池中的最大连接数。

如果MaxOpenConns大于0但小于新的MaxIdleConns,则新的MaxIdleConns将减少以匹配MaxOpenConns限制

如果n <= 0,则不保留空闲连接。

SetMaxOpenConns

SetMaxOpenConns设置与数据库的最大打开连接数。

如果MaxIdleConns大于0并且新的MaxOpenConns小于MaxIdleConns,则MaxIdleConns将减少以匹配新的MaxOpenConns限制

如果n <= 0,则打开的连接数没有限制。默认值为0(无限制)。

为什么要同时具有这两个功能而不是一个功能来调整空闲连接和打开连接,例如MaxConnsis MaxIdleConns + MaxOpenConns。为什么开发人员不得不安排可能有多少个打开和空闲的连接而不是定义总池?


问题答案:

数据库池可能包含0个或多个与数据库的空闲连接。这些是已建立,使用而不是关闭的连接,保留在将来使用。我们可以保留的数量是MaxIdleConns

当您请求这些空闲连接之一时,它将变为打开连接,供您使用。您可以使用的数量是MaxOpenConns

现在,没有什么空闲连接比允许的最大打开连接要多了,因为如果您 可以
立即获取所有允许的打开连接,则其余的空闲连接将始终保持空闲状态。就像有一条四车道的桥,但只允许三辆车一次驶过它一样。

因此,我们希望确保

MaxIdleConns <= MaxOpenConns

该功能被写入通过降低以保持不变MaxIdleConns,只要超过MaxOpenConns。请注意,文档中说,只有MaxIdleConns将其简化为match
MaxOpenConns,后者才是不正确的。

要回答为什么开发人员可能要分别调整这些问题,请考虑以下情况:通常安静的应用程序,但偶尔需要打开大量连接。您可能希望指定一个大MaxOpenConns但很小的值MaxIdleConns,以确保您的应用程序可以在需要时随时打开所需的连接,但是可以快速释放这些资源,从而为自身
数据库释放内存。使空闲连接保持活动不是免费的,并且通常可以这样做,因为您想尽快将其变为可用的连接。

因此,这里有两个数字的原因是这是两个参数,您可能有充分的理由分别进行更改。当然,API的语义意味着如果您不关心设置这两个值,则可以只设置您关心的一个值,这很可能是MaxOpenConns



 类似资料:
  • 问题内容: 关于它们有很多传说。我想知道真相。以下两个示例之间有什么区别? 问题答案: 不确定从何处获得传说,但: 提交按钮 与: IE6将在标记之间提交此按钮的所有文本,其他浏览器将仅提交值。使用可使您在按钮的设计上享有更大的布局自由度。从各种意图和目的看,它乍一看似乎很棒,但是各种浏览器怪癖使它有时很难使用。 在您的示例中,IE6将发送到服务器,而其他大多数浏览器将不发送任何内容。要使其跨浏览

  • 什么区别以及如何正确重写代码?

  • 我试图理解为什么下面两个代码块会产生不同的结果。 代码块1按预期工作,并返回从数据库中查找的提供程序的数组。另一方面,代码块2返回函数数组。在理解promissione.all()和async/await时,我觉得缺少了一些简单的东西。 代码块的差异如下: > 块1:创建许诺函数数组,然后使用map运算符将其包装在异步函数中。 块2:许诺函数的数组被创建为异步函数。因此,不调用map运算符。 如果

  • 问题内容: 我才刚刚开始研究SQL。 我有一个SQL Server 2008r2数据库,它将返回两个字段DocDate和InvValue。我需要将InvValues汇总为今天的MTD和YTD,所以看起来像 我已经做了大量的Google搜寻,并且可以使用SUM&DATEPART进行一项或多项,但是我坚持尝试两者兼而有之。 有人可以给我一些伪代码,以帮助我进一步谷歌。 谢谢@戈登·利诺夫(Gordon

  • 这个示例代码来自一本Java书籍,从墙上的99瓶啤酒到没有啤酒打印出这首歌。问题是,当墙上是1瓶啤酒时,它仍然写着瓶子。我试图通过在末尾添加部分来解决这个问题。但是,它仍然显示1瓶啤酒在墙上,我瓶啤酒在墙上。 我不知道该改变什么来解决这个问题。是否创建另一个while部分? 如果你能给他们一个提示,这样我就可以自己解决它,那也很酷!因为我知道我的实际歌曲输出是在第一个if部分,但我不知道我应该在哪

  • 原文地址:https://cesiumjs.org/tutorials/cesium-and-webpack/ Cesium 和 Webpack Webpack是非常强大非常流行的JavaScript 模块打包工具。它可以让开发人员以一种简单直观的 require 方式去加载各种页面需要的文件,极大的方便了开源人员对代码和资源文件进行结构化设计。当编译的时候,它会跟踪代码依赖性,把所有的模型打包到