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

yangwen13 · · 745 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

>文章来自于:https://reading.developerlearning.cn/reading/67-2019-11-14-sql-pool-reading/ 分享者:邹文通@POP ## 观看视频 https://youtu.be/JKJ8ehtiqUM ## Go 夜读第 67 期 Go database/sql 数据库连接池分析 本期 Go 夜读是由 POP 后端团队的邹文通给大家带来的 Go 标准包 database/sql 数据库连接池源码剖析。 ### 大纲 - sql 连接池简介 - 连接池的工作原理 - sql 包连接池源码分析 - 连接池使用 tips ## Slides - https://docs.google.com/presentation/d/10kGjeHGbB0h0Cz8f58reXOyCdyWSOSKrr2160IFNla4/edit?usp=sharing ## 回看视频 - https://www.bilibili.com/video/av75690189/ - https://youtu.be/JKJ8ehtiqUM ---- ## QA ### 1. database/sql 中 MaxIdleConns 和 MaxOpenConns 应该怎么设置才是相对合理的,在选择设置具体的值时,他们又受什么因素影响呢? - 关于这个问题,可以参考这篇文章 [Production-ready Database Connection Pooling in Go](https://making.pusher.com/production-ready-connection-pooling-in-go/). 文章的建议是 MaxOpenConns 应该和实际的打开的连接数的监测值相关。然后按照 MaxOpenConns 的一定比值设置 MaxIdleConns,比方说 50%,这个值取决于你对业务的预估。每维持一个闲散连接,会造成 1MB 左右的客户端内存开销和 2MB 左右的数据库内存开销,CPU 开销相对小一点。文章还给出了一些 benchmark 的测试,在默认 MaxIdleConns 和 MaxIdleConns = 50% * MaxOpenConns 情况下的一个性能的对比,可以参考一下。 ## 参考资料 - [Go组件学习——database/sql数据库连接池你用对了吗](https://juejin.im/post/5d624abde51d45621655352c) - [Go组件学习——手写连接池并没有那么简单](https://mp.weixin.qq.com/s/-2T9BovG8TG32DQKn93LaA) - [Chapter 8 Connection Pooling with Connector/J](https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-usagenotes-j2ee-concepts-connection-pooling.html) - [彻底弄懂mysql(二)--连接方式](https://blog.csdn.net/LYue123/article/details/89285157) ---

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

745 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传