Delphi的ADO访问数据库的问题

问题一:
多线程并发时,每个线程使用自己的adoconnection连接oracle,然后各自执行自己的查询,会不会有优先级的问题?

问题二:
sql语句在代码里通过ado查询和在plsql里查询,速度差异会很大吗?

3个回答

(1)不会有什么优先级的问题,在sql中,单条语句本身构成一个事务它是原子的。比如
update table set a = a + 1,这里a = a+1肯定是原子操作,不可能有并发问题。
但是,如果你的程序中有多条sql语句,又没有事务,就不一定了。所以要用事务。
(2)按理说差距不大,因为接口开销是很小的。但是如果你大量执行简单的查询,积少成多,也不一定。对此,你应该优化查询,多用存储过程。

xumenger
xumenger 对于问题一,为什么我的项目中,按照问题一所描述的多个线程,有的会很快执行完SQL返回,有的会很慢?主要是差距特别明显
4 年多之前 回复

使用线程执行数据库操作,是以相对独立数据处理,独立完成操作为目的。它们是没有优先级的。也不存在事务机制。它们的速度,取决于线程分配CPU占用时间和数据处理们复杂性。

交给线程处理(非同步),实质上就是交给操作系统,分配CPU时间段进行处理。它具有相对独立性。

xumenger
xumenger 当多个线程去访问数据库的时候,数据库那边为了处理多个线程的访问,是不是也会开启对应个数的线程?
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐