问题描述
- Delphi的ADO访问数据库的问题
-
问题一:
多线程并发时,每个线程使用自己的adoconnection连接oracle,然后各自执行自己的查询,会不会有优先级的问题?问题二:
sql语句在代码里通过ado查询和在plsql里查询,速度差异会很大吗?
解决方案
(1)不会有什么优先级的问题,在sql中,单条语句本身构成一个事务它是原子的。比如
update table set a = a + 1,这里a = a+1肯定是原子操作,不可能有并发问题。
但是,如果你的程序中有多条sql语句,又没有事务,就不一定了。所以要用事务。
(2)按理说差距不大,因为接口开销是很小的。但是如果你大量执行简单的查询,积少成多,也不一定。对此,你应该优化查询,多用存储过程。
解决方案二:
使用线程执行数据库操作,是以相对独立数据处理,独立完成操作为目的。它们是没有优先级的。也不存在事务机制。它们的速度,取决于线程分配CPU占用时间和数据处理们复杂性。
解决方案三:
交给线程处理(非同步),实质上就是交给操作系统,分配CPU时间段进行处理。它具有相对独立性。
解决方案四:
ADO访问数据库
时间: 2025-01-31 09:26:25