【问题标题】:MySQL Connection Pool for mysql clientmysql 客户端的 MySQL 连接池
【发布时间】:2013-04-17 15:36:08
【问题描述】:

有没有办法在客户端建立一个连接池(作为守护进程运行),以便linux上的mysql客户端使用它?

mysql ==(命名管道/unix 域套接字?)==> mysql 连接池(守护进程)==> mysql 服务器

【问题讨论】:

  • 你为什么要这样做?对于我的观点,这听起来像是一个安全风险
  • 让无法拥有连接池的脚本能够重新使用已建立的连接。有一些脚本在每次执行 SQL 语句(调用 mysql 客户端)时都会打开连接。对于短连接,您将面临 2 个问题:用于创建和终止这些连接的高(系统)cpu,其次是 TIME_WAIT 套接字的数量(tcp_tw_recycle 和 tcp_tw_reuse 不是一个选项)。
  • 我发布了一个答案,如果它对你有帮助,请告诉我

标签: mysql client pool


【解决方案1】:

阅读您的回复后,我可以提出以下解决方案:

  • 拥有一个守护程序应用程序(驻留在内存中),它将接受来自客户端的连接(通过套接字或 http)
  • 客户端将发送一个安全令牌(以便对其进行授权)和需要执行的查询
  • 守护程序应用程序可以有一个 mysql 连接池(固定数量),它会选择一个连接(取决于负载)来执行查询并返回结果(如果需要)

这样,您将完全控制 mysql 连接的数量,并且您将拥有与 db 层进行通信的单点。

【讨论】:

  • 感谢您的回答。这正是我的想法,但我想知道是否已经实现了类似的东西。 MySQL Proxy 仍处于 pre-stable 阶段,不支持 5 之前的版本。
  • 我明白了,你为什么不升级 Mysql 呢?因为MySQL Proxy 听起来完全符合您的需要
  • 我能给出的唯一解释是因为人们不愿意改变...谢谢斯蒂芬,感谢您的帮助!
  • 我明白了,不幸的是我以前遇到过这种心胸狭窄的人。在这种情况下,您可以自己实现,我建议使用 java 进行开发:)。我很高兴我能提供帮助。干杯!
猜你喜欢
  • 1970-01-01
  • 2017-11-09
  • 2017-08-04
  • 2016-12-10
  • 2013-08-20
  • 1970-01-01
  • 1970-01-01
  • 2012-05-22
  • 2017-12-24
相关资源
最近更新 更多