编写数据访问代码时,可能很想同步执行操作而不是异步执行,因为使用同步操作通常需要更短的代码,并且代码的复杂性更低。但是,如
使用同步和异步数据库操作
中所述,同步操作可产生对用户而言很明显的性能影响,并损害用户对应用程序的体验。单个操作所用的时间随操作、尤其是它所涉及的数据量的不同而不同。例如,仅向数据库中添加一行的 SQL
INSERT
语句所用的时间要比检索成千上万行数据的
SELECT
语句所用的时间少。但是,使用同步执行来执行多个操作时,这些操作通常串在一起。即使每个操作所用的时间非常短,但是在所有同步操作完成之前会冻结应用程序。因此,串在一起的多个操作的累积时间可能足以停止应用程序。
将异步操作用作一种标准方法,尤其是对于涉及大量行的操作。有一种技术可拆分大型
SELECT
语句结果集的处理,如
检索部分 SELECT 结果
所述。但是,此技术只能在异步执行模式下使用。只有在使用异步编程无法实现某些功能时,已考虑到应用程序的用户所要面临的性能折衷时,以及已测试应用程序以便了解对应用程序性能的影响程度时,才应使用同步操作。 使用异步执行可能涉及更复杂的编码。但是,请记住只需编写一次代码,但是应用程序用户必须重复使用它(或快或慢)。
在许多情况下,通过对要执行的每个 SQL 语句使用单独的 SQLStatement 实例,可以同时将多个 SQL 操作排队,这将使异步代码在代码编写方式上与同步代码类似。有关详细信息,请参阅
了解异步执行模式
。