我的 Web 应用程序之一是从一个名为 Tandem(HP NonStop) 的旧系统获取数据,该系统只能运行 SQL 而不能运行存储过程。此外,该系统不在我的控制范围内,我所能做的就是使用 SQL 查询从中读取数据。
应用程序的前端(Javascript)正在使用 REST Web 服务与后端对话以检索数据。
我想知道其他开发人员是如何处理这种情况的,以及在从慢速/遗留数据库检索数据时使用了哪些措施或工具来提高性能。
我的 Web 应用程序之一是从一个名为 Tandem(HP NonStop) 的旧系统获取数据,该系统只能运行 SQL 而不能运行存储过程。此外,该系统不在我的控制范围内,我所能做的就是使用 SQL 查询从中读取数据。
应用程序的前端(Javascript)正在使用 REST Web 服务与后端对话以检索数据。
我想知道其他开发人员是如何处理这种情况的,以及在从慢速/遗留数据库检索数据时使用了哪些措施或工具来提高性能。
您可以使用 VQP(Visual Query Planner)或 SQL/MX 中的常规解释计划来指示查询在哪里遇到了高“成本”。
从那里,您可以创建一个“查询形状”计划,并在执行执行连接的 SQL 之前将此控制语句放入您的代码中。
control query shape nested_join
(nested_join
(split_top_pa
(scan
(TABLE 'X', path '\\<system>.$<volume>.<subvol>.<index on table to join>'
)
),split_top_pa
(scan
(TABLE 'X', path '\\<system>.$<volume>.<subvol>.<table to join to maintbl>'
)
),INDEXJOIN
),split_top_pa
(scan
(TABLE 'H', path '\\<system>.$<volume>.<subvol>.maintbl'
)
)
);
看起来您的应用程序正在使用 SQL 查询向 NonStop 应用程序发送 REST 消息。
这可能会强制 NonStop Server 进程提交查询以进行编译。请检查服务器进程是否可以打开或实施某种查询缓存。
NonStop SQL 确实具有不错的连接性能,请让 DBA 查看计划。
NonStop SQL 支持用 Java 编写的存储过程。