Go夜读 第 67 期 Go database/sql 数据库连接池分析

mai_yang for Go 夜读 · 2020年02月13日 · 54 次阅读

文章来自于:https://reading.developerlearning.cn/reading/67-2019-11-14-sql-pool-reading/

分享者:邹文通@POP

观看视频

Go 夜读第 67 期 Go database/sql 数据库连接池分析

本期 Go 夜读是由 POP 后端团队的邹文通给大家带来的 Go 标准包 database/sql 数据库连接池源码剖析。

大纲

  • sql 连接池简介
  • 连接池的工作原理
  • sql 包连接池源码分析
  • 连接池使用 tips

Slides

回看视频

-/ -


QA

1. database/sql 中 MaxIdleConns 和 MaxOpenConns 应该怎么设置才是相对合理的,在选择设置具体的值时,他们又受什么因素影响呢?

  • 关于这个问题,可以参考这篇文章 Production-ready Database Connection Pooling in Go. 文章的建议是 MaxOpenConns 应该和实际的打开的连接数的监测值相关。然后按照 MaxOpenConns 的一定比值设置 MaxIdleConns,比方说 50%,这个值取决于你对业务的预估。每维持一个闲散连接,会造成 1MB 左右的客户端内存开销和 2MB 左右的数据库内存开销,CPU 开销相对小一点。文章还给出了一些 benchmark 的测试,在默认 MaxIdleConns 和 MaxIdleConns = 50% * MaxOpenConns 情况下的一个性能的对比,可以参考一下。

参考资料


暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册