同步和异步执行模式
ODBC2.0访问数据库时,有同步执行模式与异步执行模式之分。
所谓同步执行模式,是指语句在同步执行模式下,将始终保持对程序流的控制,直至程序结束。例如查询操作,客户机上的应用程序在向服务器发出查询操作的指令后,将一直等待服务器将查询结果返回客户机端后,才继续进行下一步操作。
所谓异步执行模式,是指语句在异步执行模式下,各语句执行结束的顺序与语句执行开始的顺序并不一定相同。例如查询操作,客户机上的应用程序在向服务器发出了查询操作的指令后,将立刻执行查询语句的下一条语句,而不需要等到服务器将查询结果返回客户机端后,才继续进行下一步操作。
在一些应用程序开发工具中,在其提供使用数据控制项和数据库对象变量进行编程的同时,并没有很好地考虑到同步执行模式与异步执行模式的重要区别。为了使程序运行速度更快,其语句执行的缺省模式为异步模式。对于一般程序员来说,如果他对同步执行模式与异步执行模式不了解的话,他往往会在对服务器发出一个操作语句(查询或读取一条记录等操作)后,立刻引用服务器返回的执行结果,或者对该结果进行下一步操作;在异步执行模式下,客户机上的后续语句是在该操作语句发出后接着执行的,但由于各种原因,服务器不一定能执行完该操作语句,并在后续语句执行前将结果返回客户机。因此,后续语句在引用前一操作语句的执行结果时,往往会因为该执行结果并不存在而引用了错误的值,造成系统错误或死锁。
解决上面所提到的问题,可以采取以下两种方案:
①利用ODBC2.0API,将语句执行状态设置为同步执行模式。ODBC2.0API中,函数SQLSetStmtOption()的功能是设置同步或异步执行模式。我们可以采用以下语句,将语句执行状态设置为同步执行模式:
iRetCodeΚSQLSetStmtOption(hStmt,SQL-ASYNC-ENABLE,0)
其中,hStmt是一有效的语句句柄,常数SQL-ASYNC-ENABLE是所要设置的选项,参数0表示该选项(即异步执行模式)关闭。如果iRetCode返回SQL-SUCCESS,则表示语句执行状态已被设置为同步执行模式。
②利用ODBC2.0API,将语句执行状态设置为异步执行模式,然后在程序中不断查询一个操作语句是否已经执行完毕。
这些函数第一次调用后,将返回值SQL-STILL-EXECUTING,这时应用程序将继续执行后续语句。过了一段时间后,应该再次调用原函数,而且要注意:实参数应传入与第一次调用时相同的语句句柄,其他参数也应一样(但会被忽略)。如果函数返回值为SQL-SUCCESS,则表明该语句已经执行完毕;如果函数返回SQL-STILL-EXECUTING,则表明该语句仍在执行中。
我们可以用一个简单的例子说明如下:
iRetCodeΚSQLSetStmtOption(hStmt,SQL-ASYNC-ENABLE,1) ′置语句执行模式为异步执行模式 iRetCodeΚSQLExecDirect(hStmt,″SELECT*FROMemployees″,23) ......′执行其他操作 iRetCodeΚSQLExecDirect(hStmt,″SELECT*FROMemployees″,23) ′判断SQLExecDirect()是否已执行完毕 If(iRetCodeΚSQL-STILL-EXECUTING)Then ......′该语句未执行完,继续执行其他操作 Else If(iRetCodeΚSQL-SUCCESS)Then ......′该语句已执行完,可对语句操作结果进行处理 EndIf EndIf
同步执行模式可以简化程序编制的复杂性,对ODBC2.0API不十分熟悉的程序员,可以不用过多地了解比较复杂的ODBC2.0API,而只需使用数据控制项和数据库对象变量来编写应用程序,使开发效率大大提高,但程序运行速度比不上异步执行模式的速度。
异步执行模式虽然在编程序时十分复杂,但在这种模式下可以进行多任务并行执行,使执行效率大大提高。
分享到:
相关推荐
意味着订阅端的数据和中心数据库的数据不同步,是个异步的过程,所以数据滞后严重 ,数据同步的实时性得不到保障,中心数据库在正常的压力下10秒左右。当访问负荷很 高或者中心数据库在整理数据时,将出现大量DML...
消息提取操作是在您程序的后台线程中完成的,而线程模式中生成的事件可以同步或异步于您程序的主线程。 会话池 ——在服务器程序中,需要经常创建会话以处理来自客户端程序的请求,这对于连接池的使用非常有帮助。...
Bob Bryla是Oracle 9i和10g的认证专家,他在数据库设计、数据库应用程序开发、培训和Oracle数据库管理等方面拥有20多年的工作经验,他也足Dodgeville的Land'End公司的首席Internet数据库设计师和Oracle DBA. ...
Bob Bryla是Oracle 9i和10g的认证专家,他在数据库设计、数据库应用程序开发、培训和Oracle数据库管理等方面拥有20多年的工作经验,他也足Dodgeville的Land'End公司的首席Internet数据库设计师和Oracle DBA. ...
2.4 断开模式和dataset 2.5 .net中的xml api 2.5.1 流式xml 2.5.2 xml架构 2.5.3 xmldocument,xpath和xpathnavigator 2.5.4 xml和数据提供程序的混合 2.6 托管数据类的布局 2.7 小结 第3章 ...
§9.5.4 数据库物理设计内容和步骤 103 §9.6 开发过程管理 104 §9.6.1 应用软件生命周期阶段的管理 105 §9.6.2 成功的三要素 106 §9.6.3 培植过程 106 §9.6.3.1 定义环境 107 §9.6.3.2 角色定义 107 §9.6.3.3...
许多混合同步/异步操作。 档案 所有模式的示例解决方案都位于examples目录中 非 js 源文件以src-开头(不检查它们的性能) 编译后的文件以dst-为前缀(不检查它们的复杂性) 检查所有其他文件的性能和复杂性 复杂 ...
通过作业,定时同步两个数据库 SQLSERVER高级注入技巧 利用反射实现ASP.NET控件和数据实体之间的双向绑定,并且在客户端自动验证输入的内容是否合法 asp.net报表解决方法 SQLDMO类的使用 SQL过程自动C#封装,支持从表到...
动作控制器中同步或异步执行的概念(Promise,Async,Await)。 服务容器,依赖注入(设计模式) 会话管理器(ORM,内存缓存) 身份验证管理器(摘要,基本,oAuth,本地,ldap,jwt,openid) WAF(Web应用...
使用同步和异步数据库操作 对SQL数据库使用加密 使用SQL数据库的策略 第章:使用字节数组 读取并写入ByteArray ByteArray示例:读取zip文件 第章:网络和通信基础知识 网络接口 网络连接更改 域名系统(DNS)记录 第章:...
异步操作 211 视图、区域和内存区 211 属性 212 BLOB、句柄和资源 213 安全性 214 性能 214 调试和跟踪 215 3.7 内核事件跟踪 217 3.8 WOW64 220 WOW64进程地址空间布局结构 221 系统调用 221 异常分发 ...
第 6 章 创建和管理用户数据库 第 7 章 装入和卸下数据库 第 8 章 分布式事务管理 第 9 章 创建和使用段 第 10 章 使用 reorg 命令 第 11 章 检查数据库一致性 第 12 章 制定备份和恢复计划 第 13 章 备份和恢复用户...
css等,完全采用异步模式进行同步。 3,编写系统配套的网络代码生成器,直接生成系统文件。减少开发时间4,增加个人日程管理组件,方便快捷的管理日程5,日志输出到数据库,可随时查看系统运行状况,SQL执行情况,...
同步和异步,在什么情况下分别使用? 答:如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当...
每种类型又是以哪种模式(异步、同步或本地)执行的呢? 11 2.2.7使用OPEN SQL注意原则 11 2.3 与表相关 11 2.3.1 MM模块有哪些常用表格 11 2.3.2 HR模块知识:HR里面存储HR主数据主要用到了哪些表? 11 2.3.3 HR...
本文首先讨论了同步套接字,异步套接字,多线程并发执行任务等;然后阐述了客户端、服务器如何使用XML序列化的消息进行通信。 关键词:即时通信;文件传输;套接字;TCP协议 本系统采用C/S(Client/Server)结构...
49、异步消息通讯机制的优点是:/扩展性和可用性/更容易定义SLA 50、下面,哪些是Process Service的要求:/可以方便的修改和定义 /对于业务人员来说易于掌握 /方便的工具来开发和调试 /健壮的异常处理(交易补偿) ...
提供同步和异步日志,内存池使用哈希表、链表结合的管理,线程池支持任意任务参数和任务结果返回,定时器使用最小堆管理、支持多执行线程、支持在指定时间后执行任务、支持周期性执行任务、支持指定时间间隔重复执行...