哪些 JDBC 驱动程序正确支持滚动 sensitive/insensitive?
Which JDBC drivers support scroll sensitive/insensitive properly?
我刚刚发现 Postgres Java JDBC 驱动程序并不真正支持使用流的 SCROLL_SENSITIVE
/SCROLL_INSENSITIVE
模式,而是通过加载来模拟这些模式完整的结果集一次全部存入客户端内存。对于具有大结果集的查询,这可能会导致意外的大量内存使用,尤其是在像 Java 这样几乎不支持未装箱值的语言中。使用 FORWARD_ONLY
模式时,驱动程序按预期流式传输结果。
(details;据我了解,这是 Postgres 有线协议的限制,尽管理论上驱动程序可以通过将查询转换为显式游标来解决这个问题。)
为了防止将来出现此类意外,我想知道这种行为的传播范围有多广,以及哪些其他常见 JDBC 驱动程序没有在预期的位置实现真正的滚动,所以我知道要当心为此,如果我碰巧使用其中一个驱动程序。哪些其他常见 JDBC 驱动程序不支持流式传输方式中的所有滚动模式?
我刚刚发现 Postgres Java JDBC 驱动程序并不真正支持使用流的 SCROLL_SENSITIVE
/SCROLL_INSENSITIVE
模式,而是通过加载来模拟这些模式完整的结果集一次全部存入客户端内存。对于具有大结果集的查询,这可能会导致意外的大量内存使用,尤其是在像 Java 这样几乎不支持未装箱值的语言中。使用 FORWARD_ONLY
模式时,驱动程序按预期流式传输结果。
(details;据我了解,这是 Postgres 有线协议的限制,尽管理论上驱动程序可以通过将查询转换为显式游标来解决这个问题。)
为了防止将来出现此类意外,我想知道这种行为的传播范围有多广,以及哪些其他常见 JDBC 驱动程序没有在预期的位置实现真正的滚动,所以我知道要当心为此,如果我碰巧使用其中一个驱动程序。哪些其他常见 JDBC 驱动程序不支持流式传输方式中的所有滚动模式?