在线聊天
guoxd2005
等级:
可用分等级:长工
总技术专家分:0
总技术专家分排名:312798
揭帖率:66.67% 发表于:2008-09-07 20:15:29 楼主
各位好,
在使用mysql时,遇到一个棘手的问题,请教一下大家,问题如下:
我的应用要频繁访问mysql, 例如,用户登录时的密码验证等, 因为访问的量比较大, 我在程序中建立了mysql的连接池,当应用程序收到一个验证请求时,首先建立一个新的线程,然后这个线程从连接池获取一个连接,然后在这个连接上面做一些查询操作。我的应用是通过ODBC接口连接的MySQL数据库。
问题来了, 我的应用启动后,如果在mysql客户端update或insert了数据库中的数据, 但这时应用程序里面的每个连接查询出来的仍然是老的数据,只用重启应用后,才能看得到新的数据。 我首先怀疑是mysql的缓冲区问题, 查看相关资料,说是做update或insert操作会清楚缓冲区的内容,这个应该是没有问题的。 然后, 又怀疑是程序问题,尝试了n中方法,还是同样的结果。 请问,有没有碰到的类似问题的朋友,或请高手指点一下,多谢。
guoxd2005
等级:
可用分等级:长工
总技术专家分:0
总技术专家分排名:312798
揭帖率:66.67% 发表于:2008-09-07 20:15:29 楼主
各位好,
在使用mysql时,遇到一个棘手的问题,请教一下大家,问题如下:
我的应用要频繁访问mysql, 例如,用户登录时的密码验证等, 因为访问的量比较大, 我在程序中建立了mysql的连接池,当应用程序收到一个验证请求时,首先建立一个新的线程,然后这个线程从连接池获取一个连接,然后在这个连接上面做一些查询操作。我的应用是通过ODBC接口连接的MySQL数据库。
问题来了, 我的应用启动后,如果在mysql客户端update或insert了数据库中的数据, 但这时应用程序里面的每个连接查询出来的仍然是老的数据,只用重启应用后,才能看得到新的数据。 我首先怀疑是mysql的缓冲区问题, 查看相关资料,说是做update或insert操作会清楚缓冲区的内容,这个应该是没有问题的。 然后, 又怀疑是程序问题,尝试了n中方法,还是同样的结果。 请问,有没有碰到的类似问题的朋友,或请高手指点一下,多谢。
添加配置参数:transaction-isolation=READ-COMMITTED
只要update或insert操作,执行了commit以后,应用程序里的任意连接都应该能查出来新的数据。
设置connection的一个属性就可以了
SQLSetConnectOption(m_hdbc, SQL_TXN_ISOLATION, SQL_TXN_READ_COMMITTED);
结贴