gpt4 book ai didi

mysql - 连接池 : How to deal with prepared statements?

转载 作者:行者123 更新时间:2023-11-29 17:59:10 25 4
gpt4 key购买 nike

我正在使用 CppCMS 开发一个网站,并遇到一些 MySQL 错误。我怀疑这可能是空闲问题(如下所述: Lost connection to MySQL server during query on remote host )或有关并发连接的问题。

所以我想到尝试连接池。 但是我有一个超过 50 个 cppdb::statement 对象的列表,(我认为)这些对象保存准备好的语句。这些需要创建一个 cppdb::session 对象,到目前为止,我在程序开始时创建一次它们,并在程序的整个生命周期中使用它们。

如何使用连接池正确实现这一点?

最佳答案

我将准备好的语句视为与事务具有相似的生命周期。我知道这并不完全正确;准备好的语句可以用于多个事务。但这就是我使用它们的方式。

如果您遵循这一做法或非常接近的做法,那么您将不会丢失与一个 cppdb session 关联的准备好的语句。

换句话说,在获取 cppdb session 后创建新的准备好的语句。执行一个工作单元,然后在释放该 cppdb session 之前释放准备好的语句。

创建一个新的准备好的语句是一件开销相当低的事情。许多应用程序每秒创建和释放语句数千次。您真的需要在应用程序的整个生命周期中保留这些准备好的语句吗?

请记住,准备好的语句会分配一点内存并在服务器端锁定。这是一个相当小的开销,但分配准备好的语句并不是免费的。您不应该为不需要的语句执行此操作。当你使用完语句后,你应该释放它们,这样服务器就可以清理它的内存。由于过多的语句分配,RDBMS 服务器中存在内存泄漏的风险。

关于mysql - 连接池 : How to deal with prepared statements?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48548282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com