skip to main content
Quick Start: Progress DataDirect for ODBC for Salesforce Driver for Windows : Tuning for performance
  

Try DataDirect Drivers Now

Tuning for performance

The connection options described in this section directly affect the performance of your driver. To tune for performance, configure your driver according to the recommended settings and your environment.

Application Using Threads

Purpose:
Determines whether the driver works with applications using multiple ODBC threads.
Performance Impact:
The driver coordinates concurrent database operations (operations from different threads) by acquiring locks. Although locking prevents errors in the driver, it also decreases performance. If your application does not make ODBC calls from different threads, the driver has no reason to coordinate operations.
Recommended Settings:
If your application is multi-threaded, enable (default) this option.
If your application is not multi-threaded, disabled this option for improved performance.
GUI Tab:
Advanced

Connection Pooling

Purpose:
Specifies whether to use the driver’s connection pooling.
Performance Impact:
Connection pooling allows you to reuse connections rather than creating a new one every time the driver needs to establish a connection to the underlying database. Using connection pooling can improve performance by avoiding the penalty incurred when establishing a new connection, especially for high-throughput applications.
You can further affect the performance by tuning the following connection options that are related to connection pooling: Connection Reset, Max Pool Size, Min Pool Size, and Load Balance Timeout.
Recommended Settings:
Enable this option to improve performance.
GUI Tab:
Pooling

Connection Reset

Purpose:
Determines whether the state of connections that are removed from the connection pool for reuse by the application is reset to the initial configuration of the connection.
Note: The value for this option is ignored when Connection Pooling is disabled.
Performance Impact:
Resetting a re-used connection to the initial configuration settings impacts performance negatively because the connection must issue additional commands to the server.
Recommended Settings:
Disable this option for improved performance.
GUI Tab:
Pooling

EnableBulkLoad

Purpose:
Specifies whether the driver can use the Salesforce Bulk API for insert, update, delete, and batch operations.
Performance Impact:
For batch inserts and individual inserts, updates, and deletes, the driver can use the Salesforce Bulk API instead of the Web service API. Using the Bulk API significantly reduces the number of Web service calls the driver uses to transfer data to Salesforce and may improve performance.
Recommended Settings:
Set to 1 (enabled) for improved performance.

EnableBulkFetch

Purpose:
Specifies whether the driver can use the Salesforce Bulk API for select operations.
Performance Impact:
For selects, the driver can use the Salesforce Bulk API instead of the Web service API. Using the Bulk API significantly reduces the number of Web service calls the driver uses to transfer data to Salesforce and may improve performance.
If there is a TOP or LIMIT clause in the select query, the driver considers the TOP or LIMIT clause value as the expected number of rows in the result set and compares it with the value of the Bulk Fetch Threshold option to choose either Bulk API or REST API for executing the select query.
If the value of TOP or LIMIT clause is greater than that of the Bulk Fetch Threshold option, but the actual row count in the result set is less, the performance of the select query might be affected adversely.
Recommended Settings:
Set to 1 (enabled) for improved performance.

Fetch Size

Purpose:
Specifies the number of rows that the driver processes before returning data to the application when executing a Select. This value provides a suggestion to the driver as to the number of rows it should internally process before returning control to the application. The driver may fetch fewer rows to conserve memory when processing exceptionally wide rows.
Performance Impact:
Fetch Size and WSFetch Size can be used to adjust the trade-off between throughput and response time. In general, setting larger values for Fetch Size and WSFetch Size will improve throughput, but can reduce response time.
Recommended Settings:
Set Fetch Size to suit your environment. Smaller fetch sizes can improve the initial response time of the query. Larger fetch sizes improve overall fetch times at the cost of additional memory.
GUI Tab:
Advanced

Load Balance Timeout

Purpose:
Specifies the number of seconds to keep inactive connections open in a connection pool.
Note: The value for this option is ignored when Connection Pooling is disabled.
Performance Impact:
By configuring Load Balance Timeout to keep inactive connections open, you improve the likelihood that the driver can reuse an existing connection instead of establishing new one when a connection is needed. This improves performance by avoiding the operations required to establish a new connection.
The Min Pool Size option can cause some connections to ignore this value.
Recommended Settings:
Specify a value of 0 to improve performance. By specifying a value of 0 (the default), inactive connections are kept open.
GUI Tab:
Pooling

Max Pool Size

Purpose:
The maximum number of connections allowed within a single connection pool. When the maximum number of connections is reached, no additional connections can be created in the connection pool.
Note: The value for this option is ignored when Connection Pooling is disabled.
Performance Impact:
Setting the maximum number of connections that the pool can contain too low might cause delays while waiting for a connection to become available. Setting the number too high wastes memory resources.
Recommended Settings:
Tune this setting for your environment. Specify the maximum number of connections your environment requires to have open at a time.
GUI Tab:
Pooling

Min Pool Size

Purpose:
Specifies the minimum number of connections that are opened and placed in a connection pool, in addition to the active connection, when the pool is created. The connection pool retains this number of connections, even when some connections exceed their Load Balance Timeout value.
Note: The value for this option is ignored when Connection Pooling is disabled.
Performance Impact:
A connection pool is created when the first connection with a unique connection string connects to the database. The pool is populated with connections up to the minimum pool size, if one has been specified. The connection pool retains this number of connections, even when some connections exceed their Load Balance Timeout value. By increasing this number, you improve the likelihood that the driver will be able to reuse a connection; thereby, improving performance.
Recommended Settings:
Tune this setting for your environment. Specify the average number of connections your environment typically uses at a time.
GUI Tab:
Pooling

WSFetch Size

Purpose:
Specifies the number of rows of data the driver attempts to fetch from the native data source on each request submitted to the server.
Performance Impact:
Fetch Size and WSFetch Size can be used to adjust the trade-off between throughput and response time. In general, setting larger values for Fetch Size and WSFetch Size will improve throughput, but can reduce response time.
Recommended Settings:
Set WSFetchSize to 0 to fetch a maximum of 2000 rows for optimum throughput. Setting the value lower than 2000 can reduce the response time for returning the initial data.
GUI Tab:
Web Service

WS Pool Size

Purpose:
Specifies the maximum number of Salesforce sessions the driver uses. This allows the driver to have multiple web service requests active when multiple ODBC connections are open, thereby improving throughput and performance.
Performance Impact:
WSPoolSize determines the maximum number of sessions the driver uses when there are multiple active connections to Salesforce. By increasing this number, you increase the number of sessions the driver uses to distribute calls to Salesforce, thereby improving throughput and performance. For example, if WSPoolSize is set to 1, and you have two open connections, the session must complete a call from one connection before it can begin processing a call from the other connection. However, if WSPoolSize is equal to 2, a second session is opened that allows calls from both connections to be processed simultaneously.
Recommended Settings:
For optimal performance, specify a value that is equal to the number of sessions permitted by your Salesforce account.
GUI Tab:
Web Service