【问题标题】:Sybase 12.5 vs 15.0 client connect libraries: 10x slower insert using 15.0 when inserting into 15.7 ASESybase 12.5 与 15.0 客户端连接库:插入 15.7 ASE 时使用 15.0 插入速度慢 10 倍
【发布时间】:2020-06-27 06:56:01
【问题描述】:

我维护了一些在 RH Linux 上运行的遗留代码,这些代码通过网络将插入发送到客户端的 Sybase。我们使用的是 Sybase 12.5 库,刚刚迁移到使用 Sybase 15.0 客户端库。

我的应用程序记录了它通过网络发送插入的时间以及它从目标 Sybase 获得确认的时间。使用 12.5 库时大约需要 5 毫秒,现在使用 15.5 库时大约需要 50 毫秒。

我在应用程序方面所做的唯一更改是在命令行上指定接口文件的位置。以前,该文件位于默认位置 - Sybase 安装位置。现在它位于应用程序的部署位置,因此需要明确指定位置。

有没有人知道是什么导致了速度的急剧变化,或者有关于我可以在哪里寻找的提示或关于如何追踪根本原因的想法?

请原谅缺乏技术细节。我不是数据库管理员,而是使用已编译库连接到 Sybase 并且无权访问细节的开发人员。话虽如此,我在这两种情况下都使用相同的内部库,只是 Sybase 库不同。

我的 Sybase 12.5 和 15 安装如下所示:

$ ls -l /opt/sybase/
total 48
-rw-r--r--  1 root root  555 Jul  2  2019 ASE150.csh
-rw-r--r--  1 root root  259 Jul  2  2019 ASE150.env
-rw-r--r--  1 root root  388 Jul  2  2019 ASE150.sh
drwxr-xr-x 10 root root 4096 Feb  2  2017 OCS-15_0
-rw-r--r--  1 root root  555 Jul  2  2019 SYBASE.csh
-rw-r--r--  1 root root  259 Jul  2  2019 SYBASE.env
-rw-r--r--  1 root root  388 Jul  2  2019 SYBASE.sh
drwxr-xr-x 58 root root 4096 Jul  2  2019 charsets
drwxr-xr-x  3 root root 4096 Jul  2  2019 collate
drwxr-xr-x  2 root root 4096 Nov 23 20:55 config
-rw-r--r--  1 root root 1239 Jul  2  2019 interfaces
drwxr-xr-x  5 root root 4096 Nov 23 20:55 locales
$ ls -l ~/12_5/sybase/
total 28
drwxrwxr-x  4 oadc oadc 4096 Nov 29  2017 OCS-12_5
drwxrwxr-x 58 oadc oadc 4096 Nov 29  2017 charsets
drwxrwxr-x  2 oadc oadc 4096 Mar 16 09:45 config
drwxrwxr-x  2 oadc oadc 4096 Mar 16 09:45 include
-r-xr-xr-x  1 oadc oadc 1184 Mar 16 09:45 interfaces
drwxrwxr-x  2 oadc oadc 4096 Mar 16 09:45 lib
drwxrwxr-x  5 oadc oadc 4096 Mar 16 09:45 locales

编辑

经过一番挖掘,看起来 OCS-12-5 下的库实际上不是针对 12_5 而是针对 15_5!

$ 字符串 sybase/OCS-12_5lib/libsybct*.a | grep "Sybase 客户端库" Sybase 客户端库/15.5/P/DRV.15.5.0/Linux x86_64/Linux 2.6.9-55.ELsmp x86_64/BUILD1550-003/64bit/OPT/Mon Oct 5 23:16:48 2009 Sybase Client-Library/15.5/P/DRV.15.5.0/Linux x86_64/Linux 2.6.9-55.ELsmp x86_64 Native Threads/BUILD1550-003/64bit/OPT/Tue Oct 6 00:06:57 2009

这意味着我认为 12.5 比 15.0 快的假设是错误的。实际发生的是 15.5 比 15.0 快。哪个更有意义。

我不会去追捕将这些文件提交到标有 OCS-12-5 的目录中的白痴......

【问题讨论】:

  • 您是否刚刚将 (ASE) 数据库从 12.x 迁移到 15.7?如果是这样,您可能会因过多的编译阶段而产生大量开销(ASE 15.0 中引入的“新”优化器的副作用);为了解决这个问题,有 3 个选项... 1)让应用程序使用准备好的语句,2)让 DBA 使用语句缓存和“启用文字自动参数”配置 ASE 和/或 3)如果这些对你不起作用可能需要查看查询重写(例如,如果插入导致触发器触发,则可能需要对触发器代码进行一些 P&T 分析)
  • 您好@markp-fuso,感谢您的评论。为了清楚起见,我们没有迁移数据库。改变的是我们用来连接 Sybase 的一组客户端库。以前我们使用的是 12.5 库,现在我们使用的是 15.0 库。目标数据库没有改变。

标签: sybase-ase15


【解决方案1】:

经过更多挖掘后,看起来 OCS-12-5 下的库实际上不是针对 12_5 而是针对 15_5!

$ 字符串 sybase/OCS-12_5lib/libsybct*.a | grep "Sybase Client-Library" Sybase Client-Library/15.5/P/DRV.15.5.0/Linux x86_64/Linux 2.6.9-55.ELsmp x86_64/BUILD1550-003/64bit/OPT/Mon Oct 5 23:16: 48 2009 Sybase Client-Library/15.5/P/DRV.15.5.0/Linux x86_64/Linux 2.6.9-55.ELsmp x86_64 本机线程/BUILD1550-003/64bit/OPT/2009 年 10 月 6 日星期二 00:06:57

这意味着我认为 12.5 比 15.0 快的假设是错误的。实际发生的是 15.5 比 15.0 快。哪个更有意义。

我已使用此新信息更新了问题。

【讨论】:

    猜你喜欢
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 2013-09-03
    • 2013-05-29
    • 1970-01-01
    • 2012-07-08
    相关资源
    最近更新 更多