需要提示来优化大型管道上的sybase访问



我需要从海外访问sybase数据库(12.5)。高延迟绝对是个问题。

我已经优化了连接参数,以更好地利用网络,并实现了20倍的性能提升,但这仍然不够:1分钟获得3Mb的数据。

我们的应用还需要10到20倍的增长。

技术资料:

  • 数据流经使用TDS协议的单个TCP连接
  • 客户端应用程序是一个带有宏的excel表格,使用默认的Sybase驱动程序
  • 企业环境使得很难在10年以上的架构中推动重大变化,因此解决方案需要最小的侵入性。但由于该项目的重要性,可能会有一些变化。

谁能给我指点一下吗?

我已经想到了:

  • 将SQL请求拆分为多个并发连接到数据库。问题是数据一致性:如果记录在同一时间被修改,因为请求不会在同一时间精确地执行,该怎么办?是否有一种现有的机制来将请求分散到不同连接上的几个调用上?
  • 使用某种数据库"缓存"或"本地复制"海外,但我不知道什么是可能的。

谢谢。

尝试安装本地数据库(ASE或ASA)并将此数据库与Sybase Mobilink(或Sybase Replication Server,如果您需要较小的复制延迟并且您有很多钱)同步。

(我知道我在回答我自己的问题)

最终,我们决定设计自己的数据库远程访问协议。这并不复杂,因为我们只使用SQL的基本子集(SELECT和UPDATE),并且协议无论如何都不需要理解SQL。

通过使用我们自己的协议,我们将能够使用压缩,使客户端能够同时使用多个TCP链接,最大化网络利用率,并为我们的应用程序添加一些特定的功能缓存。

客户端将是我们的应用程序,服务器将是真正的数据库的"代理",坐在它旁边(就像@Tim在评论中建议的那样)。

这不是唯一的解决方案,但我们认为这是巨大的复制成本,开发复杂性和预期收益之间的良好平衡。

最新更新