我维护了一些在 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 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 快。这更有意义。
我不会去追捕将这些文件提交到标记为 OCS-12-5 的目录中的白痴......