我有一个长期存在的C ++程序,它针对MySQL数据库执行各种SQL语句。我目前正在每个需要SELECT / INSERT / UPDATE的函数中使用一堆静态sql :: PreparedStatement *创建(一次),然后它们被重新绑定并一遍又一遍地重新执行。这很好用,但我想知道服务器和程序资源的使用情况:
谢谢!
答案 0 :(得分:0)
每个预准备语句都会被解析,优化并存储在数据库会话中,因此它在活动时会占用资源,并且每个会话都有最多的预准备语句。 所采用的资源因数据库引擎和驱动程序而异。 根据您准备好的语句的确切内容以及它们绑定到变量和执行的频率,以及它们的简单性或复杂程度,您可能希望使用存储过程来实现至少其中一些语句。
对于max_prepared,statement_count引用为here。
为了监视预准备语句使用的内存量,您可能需要运行一些测试:在准备语句之前获取进程看到的可用内存,然后在准备之后再次获取它,以查看该语句使用了多少,以及关闭语句后再一次查看是否所有内容都被释放。
这在执行语句之前有效,因为返回的数据量可能会有所不同,并会影响中间测量步骤中进程的总可用内存。