免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2763 | 回复: 2
打印 上一主题 下一主题

使用mysql线程池,每个连接查询不到最新的数据 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-31 11:23 |只看该作者 |倒序浏览
我碰到一个问题,网上查找的情况和我类似,但是我用的是API,不是ODBC所以请教各位大侠应该怎么办
以下是网上的答案
各位好,
    在使用mysql时,遇到一个棘手的问题,请教一下大家,问题如下:
   
    我的应用要频繁访问mysql, 例如,用户登录时的密码验证等, 因为访问的量比较大, 我在程序中建立了mysql的连接池,当应用程序收到一个验证请求时,首先建立一个新的线程,然后这个线程从连接池获取一个连接,然后在这个连接上面做一些查询操作。我的应用是通过ODBC接口连接的MySQL数据库。
   
    问题来了, 我的应用启动后,如果在mysql客户端update或insert了数据库中的数据, 但这时应用程序里面的每个连接查询出来的仍然是老的数据,只用重启应用后,才能看得到新的数据。

    我首先怀疑是mysql的缓冲区问题, 查看相关资料,说是做update或insert操作会清楚缓冲区的内容,这个应该是没有问题的。

    然后, 又怀疑是程序问题,尝试了n中方法,还是同样的结果。

    请问,有没有碰到的类似问题的朋友,或请高手指点一下,多谢。

如果在每次查询数据前,重新连接数据库,是可以解决查询不到最新数据的问题, 但性能上是不允许的,每次连接占用了太多的时间。

搞定了,设置connection的一个属性就可以了
SQLSetConnectOption(m_hdbc, SQL_TXN_ISOLATION, SQL_TXN_READ_COMMITTED);


结贴

论坛徽章:
1
白银圣斗士
日期:2015-11-23 08:33:04
2 [报告]
发表于 2009-10-31 13:05 |只看该作者
事务级别。可以在mysqld设置  也可以在连接的时候临时设置

论坛徽章:
0
3 [报告]
发表于 2009-10-31 14:10 |只看该作者
谢谢

最后发现是程序问题,和线程池没关系
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP