I\'ve have SSIS Package that is exporting 2.5 GB OF DATA containing 10 million records into Sql Server Database which has 10 partitions including PRIMARY FILE GROUP.
B
These parameters refer to DFT OLE DB Destination with Fast Load mode only. OLE DB Destination in Fast Load issues an insert bulk
command. These two parameters control it in the following way:
BULK INSERT (Transact-SQL) - MS Article on this command.
DefaultBuffermaxsize and DefaultBuffermaxrows controls RAM buffer management inside DFT itself, and has no interference with options mentioned above.
Dear Harsimranjeet Singh;
In based of my personal experience, Rows_Per_Batch determine count of rows per batch that oledb_destination must recieve from DFT component whereas DefualtBuffermaxrows determine the bacth size of DFT, so DefualtBuffermaxrows is depend on specification of SSIS server and Rows_Per_Batch is depend to destination server and each must be set with their conditions.
Also Maximum_Insert_Commit_Size determine number of records when it hit number then it write in log file and it commited; decreasing this number, makes increasing count of refers to log and this is bad but it cause that MSDB(system db) is not inflating and it is very good for increasing performance.
Another point, is relation between DefualtBuffermaxrows and DeafultBufferSize, that must be set together. DefualtBuffermaxrows multiplied by size of each record must be approximately equal to DeafultBufferSize, if this is bigger then ssis reduce that to reach to that and if this is smaller that and smaller than Minimum Buffer Size, then increase it to touch Minimum Buffer Size. These operation seriously reduce performance of your package.
Good Luck!
Rows per batch - The default value for this setting is -1 which specifies all incoming rows will be treated as a single batch. You can change this default behavior and break all incoming rows into multiple batches. The allowed value is only positive integer which specifies the maximum number of rows in a batch.
Maximum insert commit size - The default value for this setting is '2147483647' (largest value for 4 byte integer type) which specifies all incoming rows will be committed once on successful completion. You can specify a positive value for this setting to indicate that commit will be done for those number of records. You might be wondering, changing the default value for this setting will put overhead on the dataflow engine to commit several times. Yes that is true, but at the same time it will release the pressure on the transaction log and tempdb to grow tremendously specifically during high volume data transfers.
The above two settings are very important to understand to improve the performance of tempdb and the transaction log. For example if you leave 'Max insert commit size' to its default, the transaction log and tempdb will keep on growing during the extraction process and if you are transferring a high volume of data the tempdb will soon run out of memory as a result of this your extraction will fail. So it is recommended to set these values to an optimum value based on your environment.
Note: The above recommendations have been done on the basis of experience gained working with DTS and SSIS for the last couple of years. But as noted before there are other factors which impact the performance, one of the them is infrastructure and network. So you should do thorough testing before putting these changes into your production environment.