OpenEdge 12.2 delivers new performance enhancements, which are described in this topic.

Expansion of server-side join processing includes non-FORWARD-ONLY dynamic queries with NO-LOCK

Server-side join improves performance by reducing the amount of data transferred across the network and by reducing the computational cost on the client. Server-side join is available in a multi-threaded database server, and is enabled for queries where the tables to be joined are in the same logical database and there are 10 or fewer tables. In addition, server-side join only occurs when using the following ABL constructs:

  • FOR statements with NO-LOCK.
  • Dynamic queries with NO-LOCK, except for those that use the INDEXED-REPOSITION option or involve an outer join.

For more information about server-side join, see Server-side join processing in OpenEdge Programming Interfaces.

Reusable objects cache now includes objects containing datasets and events

When an object-oriented ABL object is destroyed (whether explicitly deleted or through garbage collection), it is generally placed in the reusable objects cache. Reusing objects from this cache saves the overhead of instantiating a new class. Before this release, classes containing a dataset or event definition (DEFINE DATASET or DEFINE EVENT) were disqualified from use in the cache. Now, with this release, these objects are included in the cache. As a result, users may see a improved performance.

For more information about the reusable objects cache, see Re-usable Objects Cache (-reusableObjects) in Startup Command and Parameter Reference.

Enhanced performance of ABL profiler

Starting with this release, the ABL virtual machine (AVM) conducts in-time analysis and no longer writes the timing data in a temporary file. This results in performance gains because it bypasses the input-output operations on the disk. It also results in optimized disk utilization, especially with long running applications and queries, because temporary files can be lengthy.

New ABL Profiler content

Profiling offers ABL developers the ability to collect meaningful data about their program execution. The information collected identifies potential performance bottlenecks and gives developers more visibility into which parts of their applications are taking longer to execute. In prior releases, the Profiler View in Progress Developer Studio for OpenEdge Online Help and how to perform server-side profiling in Manage Progress Application Server (PAS) for OpenEdge were documented. In this release, new content is available for the following:

Enhanced ABL session management in PAS for OpenEdge

PAS for OpenEdge has enhanced the multi-session agent so that it self-manages ABL sessions. This means that requests no longer fail due to resource unavailability.

For more information, see Enhanced ABL session management in Manage PAS for OpenEdge.

Enhanced INDEX function to allow search of a string stored in a MEMPTR variable

The INDEX function returns an INTEGER value that indicates the position of the searchString within the source string. The source string now includes a MEMPTR expression along with CHARACTER and LONGCHAR variables.

For more information, see INDEX function in ABL Reference.