在一个数据库连接上所得到的结果集,如果需要多线程分别从这个结果集中读取记录,那么需不需要在应用程序中考虑多线程的同步?
另外,如果在上面的问题中取得结果集用的是 mysql_use_result 而不是 mysql_fetch_result,那么在另外一个数据库连接中能不能对相应的数据库表进行 增删查改 的操作呢?
另外,如果在上面的问题中取得结果集用的是 mysql_use_result 而不是 mysql_fetch_result,那么在另外一个数据库连接中能不能对相应的数据库表进行 增删查改 的操作呢?
要看你的具体应用。你可以在MYSQL上设置事务的隔离级别。另外,如果在上面的问题中取得结果集用的是 mysql_use_result 而不是 mysql_fetch_result,那么在另外一个数据库连接中能不能对相应的数据库表进行 增删查改 的操作呢?
看你的具体操作代码,如果使用了锁或者事务,则会受影响。 如果都只是简单的 select 则没有问题。
简单来说,也就是我的应用程序只读取数据,但别人的应用程序会更新数据库表。不同的应用程序是在不同的数据库连接上来操作的。
在这样的情况下,我是否需要考虑线程同步,使用mysql_use_result与mysql_fetch_result 又有什么本质的不同?
首先,你的mysql最好要用到支持事务处理的引擎,比如InnoDB引擎。
另外,根据你的需求,你的读数据操作大概不想读取到脏数据,可以设置事务隔离级为读已提交或者可重复读,那么,就不需要在你的程序里进行加锁了。
你的程序里最好是每个线程单独一个连接。
在程序中,一方面从数据库取出的数据字节数是很大的,涉及到BLOB字段(因此我才考虑使用mysql_use_result);另一方面,需要对数据进行打包传送,就会涉及到数据格式化问题,也是比较费时的操作。
我的想法是在同一个连接上启用多个线程,可以提高数据处理的效率。LS建议每个线程单一个连接,能不能再说得更详细一些呢?