The following table summarizes connection properties that are used to implement the Salesforce Bulk API for selects, inserts, updates, and deletes.

Table 1. Bulk API Properties
Property Description
BulkFetchThreshold Specifies a number of rows that, if exceeded, signals the driver to use the Salesforce Bulk API for select operations. For this behavior to take effect, the EnableBulkFetch property must be set to true.

If set to 0, the driver uses the Salesforce Bulk API for all select operations.

If set to x, the driver uses the Salesforce Bulk API for select operations when the value of x is exceeded.

The default is 30000 (rows).

BulkLoadAsync Determines whether the driver treats bulk load operations as synchronous or asynchronous.

If set to 0, bulk load operations are synchronous. The driver does not return from the method that invoked an operation until the operation has completed or the operation has timed out. If the operation times out, the driver throws an exception.

If set to 1, bulk load operations are asynchronous. The driver returns from the method that invoked an operation immediately after the operation is submitted to the server. The driver does not verify that the bulk load operation was completed.

The default is 0 (synchronous).

BulkLoadBatchSize Provides a suggestion to the driver for the number of rows to load to the database at a time when bulk loading data.

The default is 10000.

BulkLoadConcurrencyMode Determines whether multiple batches associated with a bulk load operation are processed by Salesforce in parallel or one at a time.

If set to parallel, multiple batches associated with a bulk load operation are processed in parallel. The order in which the batches are processed can vary.

If set to serial, multiple batches associated with a bulk load operation are processed one at a time.

The default is parallel.

BulkLoadJobSize Determines the number of rows to load into a single job of a bulk operation when the connection property BulkLoadVersion is set to V2. Performance can be improved by increasing the number of rows the driver loads at a time because fewer network round trips are required. Increasing the number of rows also causes the driver to consume more memory on the client.

The default is 150000 (rows).

BulkLoadPollInterval Specifies the number of seconds the driver waits to request bulk operation status. This interval is used by the driver the first time it requests status and for all subsequent status requests.

The default is 10 (seconds).

BulkLoadThreshold Specifies a number of rows that, if exceeded, signals the driver to use the Salesforce Bulk API for inserts, updates, and deletes. For this behavior to take effect, the EnableBulkLoad property must be set to true.

If set to 0, the driver uses the Salesforce Bulk API for all inserts, updates, and deletes.

If set to x, the driver uses the Salesforce Bulk API to execute the insert, update, or delete operation when the value of x is exceeded.

The default is 4000 (rows).

BulkLoadVersion

Specifies which version of Salesforce Bulk Load API to use for performing bulk load operations. This is applicable if EnableBulkLoad is set to true.

If set to V1, the driver uses the Salesforce Bulk API V1 to execute the insert, update, and delete operations.

If set to V2, the driver uses the Salesforce Bulk API V2 to execute the insert, update, or delete operations.

The default is V1.

EnableBulkFetch Specifies whether the driver can use the Salesforce Bulk API for selects based on the value of the BulkFetchThreshold connection property. If the number of rows expected in the result set exceeds the value of BulkFetchThreshold property, the driver uses the Salesforce Bulk API to execute the select operation. Using the Salesforce Bulk API may significantly reduce the number of Web service calls used to execute a statement and, therefore, may improve performance.

If set to true, the driver can use the Salesforce Bulk API for selects based on the value of the BulkFetchThreshold connection property. If the number of rows expected in the result set exceeds the value of BulkFetchThreshold property, the driver uses the Salesforce Bulk API to execute the select operation.

If set to false, the driver does not use the Salesforce Bulk API, and the BulkFetchThreshold property is ignored.

The default is true.

EnableBulkLoad Specifies whether the driver can use the Salesforce Bulk API for inserts, updates, and deletes based on the value of the BulkLoadThreshold connection property. If the number of affected rows exceeds the value of BulkLoadThreshold property, the driver uses the Salesforce Bulk API to execute the insert, update, or delete operation. Using the Salesforce Bulk API may significantly reduce the number of Web service calls used to execute a statement and, therefore, may improve performance.

If set to true, the driver can use the Salesforce Bulk API for inserts, updates, and deletes based on the value of the BulkLoadThreshold connection property. If the number of affected rows exceeds the value of BulkLoadThreshold property, the driver uses the Salesforce Bulk API to execute the insert, update, or delete operation.

If set to false, the driver does not use the Salesforce Bulk API, and the BulkLoadThreshold property is ignored.

The default is true.

EnablePKChunking Specifies whether the driver uses PK chunking for select operations. PK chunking breaks down bulk fetch operations into smaller, more manageable batches for improved performance.

If set to true, the driver uses PK chunking for select operations when the expected number of rows in the result set is greater than the values of the BulkFetchThreshold and PKChunkSize properties. For this behavior to take effect, the EnableBulkFetch property must also be set to true.

If set to false, the driver does not use PK chunking when executing select operations, and the PKChunkSize property is ignored.

The default is true.

PKChunkSize Specifies the size, in rows, of a primary key chunk when PK chunking has been enabled via the EnablePKChunking property. The Salesforce Bulk API splits the query into chunks of this size.

PKChunkSize may be set to a maximum value of 250000 rows.

The default is 100000 (rows).