忧郁程序猿 2016-09-13 02:31 采纳率: 0%
浏览 808

关于 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 2016-09-13 15:09
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 mmocr的训练错误,结果全为0
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀