【问题标题】:How does MariaDB work with maintaining db connection?MariaDB 如何维护数据库连接?
【发布时间】:2018-09-27 09:03:53
【问题描述】:

我正在使用 Peewee ORM 从我的 python 项目中更新和修改数据库表。 我已使用以下方法将最大连接限制设置为 15:

set global max_connections = 15

为了获得总连接,我运行命令,

> select count(*) from  information_schema.processlist;

> 12

现在连接限制为 15,即使我通过打开连接运行我的代码在 db 上做一些工作,连接数也会增加 2

> select count(*) from  information_schema.processlist;

> 14

现在即使完成任务,我关闭 python 终端我仍然看到来自进程列表计数的连接总数为 14,如果我运行相同的命令来更新数据库,似乎旧连接被重用或什么表,从不同的终端我添加了 2 个连接,但它给出了错误说连接太多。但是我打开的第一个终端仍然可以使用。

如果需要,我可以发布 peewee 代码。

【问题讨论】:

  • 我不清楚这里的确切情况。您打开一个终端并保持打开状态,然后打开另一个终端,由于连接太多而无法连接,但是已经打开的第一个终端继续工作......?嗯,是的,这是意料之中的。
  • 但是 connect_timeout 设置为 10 秒,那么为什么即使 python 终端打开,mariadb 也会保持连接?
  • 你认为 connect_timeout 有什么作用?
  • 如果你重复,它会再次上升 2 并下降 1 吗?还是 1 和 1?

标签: mysql mariadb mariadb-connect-engine


【解决方案1】:

如果您使用的是常规 MySQLDatabase 类,则在连接上调用 .close() 将关闭它。

另一方面,如果您使用的是 PooledMySQLDatabase,.close() 会将连接回收到可用连接池中。您可以使用以下 API 管理池中的连接:http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#PooledDatabase

【讨论】:

  • 如果我没记错的话我们以后使用Proxy类初始化数据库需要手动关闭。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-05
  • 2017-01-09
  • 1970-01-01
  • 2020-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多