2 gewb1011 gewb1011 于 2016.09.13 10:31 提问

关于 mysql预处理 在游戏服务器中应用思路的问题

看mysql文档的意思,预处理的使用思路应该是:
1.调用mysql_stmt_int()生成预处理句柄;
2.调用mysql_stmt_prepare()编译预处理sql语句;
3.调用mysql_stmt_bind_param()传参;
4.调用mysql_stmt_execute()执行;
5. 获取结果.....
6.释放句柄
其中1和2只执行一次,3,4,5有若干条,以此来提高效率...
按这个思路我对自己游戏的服务器数据库模块进行了封装,在服务器启动时对所有sql语句进行1,2两步生成对应的预处理句柄,以一个唯一ID为key保存在一个map中。当需要调用sql语句时,根据这个唯一ID获取预处理句柄对其进行3,4,5操作。在服务器关闭时释放所有句柄。
我一直认为这么做是对的直到我看了3个游戏服务器数据库模块的代码,它们都不是这样的。它们对每个sql的每次调用都要顺序执行1,2,3,4,5,6这几步,这么做预处理的优势何在?难道这才是正确的使用方式?求大神解惑是我理解错了吗?

1个回答

oyljerry
oyljerry   Ds   Rxr 2016.09.13 23:09

有些没有做预处理,可能觉得用完就释放 简单但是性能没有这么好

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!