50803329 informatica powercenter 8 6 1 performance tuning

Upload: leonhard-camargo

Post on 04-Apr-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    1/37

    Performance Tuning

    Informatica PowerCenter

    (Version 8.6.1)

    Jishnu Pramanik

    1.Performance Tuning Overview

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    2/37

    1.1 Overview

    The goal of performance tuning is to optimize session performance by eliminating performance bottlenecks. To tune

    session performance, first identify a performance bottleneck, eliminate it, and then identify the next performancebottleneck until you are satisfied with the session performance. You can use the test load option to run sessionswhen you tune session performance.

    If you tune all the bottlenecks, you can further optimize session performance by increasing the number of pipeline

    partitions in the session. Adding partitions can improve performance by utilizing more of the system hardware while

    processing the session.

    1.2 Need for Performance Tuning

    Performance is not just one job loading maximum data in a particular time frame. Performance can be more

    accurately defined as a combination of several small jobs which affect the overall performance of a system.

    Informatica is an ETL tool with high performance capability. We need to make maximum utilization of its features

    to increase its performance. With the ever increasing user requirements and exploding data volumes, we need to

    achieve more in less time. The goal of performance tuning is optimize session performance. This document lists all

    the techniques available to tune Informatica performance.

    2.Identifying Bottlenecks

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    3/37

    2.1 Overview

    Performance of Informatica is dependent on the performance of its several components like database, network,

    transformations, mappings, sessions etc. To tune the performance of Informatica, we have to identify the bottleneckfirst. Bottleneck may be present in source, target, transformations, mapping, session, database or network. It is best

    to identify performance issue in components in the order source, target, transformations, mapping and session. After

    identifying the bottleneck, apply the tuning mechanisms in whichever way they are applicable to the project.

    2.2 Identify bottleneck in Source

    If source is a relational table, put a filter transformation in the mapping, just after source qualifier; make the

    condition of filter to FALSE. So all records will be filtered off and none will proceed to other parts of the mapping.

    In original case, without the test filter, total time taken is as follows:-

    Total Time = time taken by (source + transformations + target load)

    Now because of filter, Total Time = time taken by source

    So if source was fine, then in the latter case, session should take less time. Still if the session takes near equal time

    as former case, then there is a source bottleneck.

    2.3 Identify bottleneck in Target

    The most common performance bottleneck occurs when the Integration Service writes to a target database. To

    identify a target bottleneck, configure a copy of the session to write to a flat file target. If the session

    performance increases significantly when you write to a flat file, you have a target bottleneck. If a session

    already writes to a flat file target, you probably do not have a target bottleneck.

    2.4 Identify bottleneck in Transformation

    Remove the transformation from the mapping and run it. Note the time taken. Then put the transformation back and

    run the mapping again. If the time taken now is significantly more than previous time, then the transformation is the

    bottleneck.

    But removal of transformation for testing can be a pain for the developer since that might require further changes for

    the session to get into the working mode. So we can put filter with the FALSE condition just after the

    transformation and run the session. If the session run takes equal time with and without this test filter, then

    transformation is the bottleneck.

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    4/37

    2.5 Identify bottleneck in sessions

    We can use the session log to identify whether the source, target or transformations are the performance bottleneck.

    Session logs contain thread summary records like the following:-

    MASTER> PETL_24018 Thread [READER_1_1_1] created for the read stage ofpartition point [SQ_test_all_text_data] has completed: Total Run Time =

    [11.703201] secs, Total Idle Time = [9.560945] secs, Busy Percentage =

    [18.304876].

    MASTER> PETL_24019 Thread [TRANSF_1_1_1_1] created for the transformation

    stage of partition point [SQ_test_all_text_data] has completed: Total Run

    Time = [11.764368] secs, Total Idle Time = [0.000000] secs, Busy Percentage

    = [100.000000].

    If busy percentage is 100, then that part is the bottleneck.

    Basically we have to rely on thread statistics to identify the cause of performance issues. Once the Collect

    Performance Data option (In session- Properties tab) is enabled, all the performance related information would

    appear in the log created by the session.

    2.6 Identifying System Bottlenecks on Windows

    On Windows, you can view the Performance and Processes tab in the Task Manager. To access the Task Manager,press use Ctrl+Alt+Del, and click Task Manager. The Performance tab in the Task Manager provides an overview ofCPU usage and total memory used. You can view more detailed performance information by using the PerformanceMonitor on Windows. To access the Performance Monitor, click Start > Programs > Administrative Tools, andchoose Performance Monitor.

    Use the Windows Performance Monitor to create a chart that provides the following information:

    Percent processor time : If you have more than one CPU, monitor each CPU for percent processor time. If theprocessors are utilized at more than 80%, you may consider adding more processors.

    Pages/second : If pages/second is greater than five, you may have excessive memory pressure (thrashing). Youmay consider adding more physical memory.

    Physical disks percent time : The percent of time that the physical disk is busy performing read or write requests.If the percent of time is high, tune the cache for PowerCenter to use in-memory cache instead of writing to disk. Ifyou tune the cache, requests are still in queue, and the disk busy percentage is at least 50%, add another disk deviceor upgrade to a faster disk device: You can also use a separate disk for each partition in the session.

    Physical disks queue length : The number of users waiting for access to the same disk device. If physical diskqueue length is greater than two, you may consider adding another disk device or upgrading the disk device. Youalso can use separate disks for the reader, writer, and transformation threads.

    Server total bytes per second : This is the number of bytes the server has sent to and received from the network.

    You can use this information to improve network bandwidth.

    3.Optimizing the Target

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    5/37

    3.1 Overview

    You can optimize the following types of targets:

    Flat file

    Relational

    3.2 Flat File Target

    If you use a shared storage directory for flat file targets, you can optimize session performance by ensuring that theshared storage directory is on a machine that is dedicated to storing and managing files, instead of performing othertasks.

    If the Integration Service runs on a single node and the session writes to a flat file target, you can optimize sessionperformance by writing to a flat file target that is local to the Integration Service process node.

    3.3 Relational Target

    If the session writes to a relational target, you can perform the following tasks to increase performance:

    Drop indexes and key constraints : When you define key constraints or indexes in target tables, you slow theloading of data to those tables. To improve performance, drop indexes and key constraints before running thesession. You can rebuild those indexes and key constraints after the session completes.

    If you decide to drop and rebuild indexes and key constraints on a regular basis, you can use the following methodsto perform these operations each time you run the session:

    -Use pre-load and post-load stored procedures.

    -Use pre-session and post-session SQL commands.

    Increase checkpoint intervals : The Integration Service performance slows each time it waits for the database toperform a checkpoint. To increase performance, consider increasing the database checkpoint interval. When youincrease the database checkpoint interval, you increase the likelihood that the database performs checkpoints asnecessary, when the size of the database log file reaches its limit.

    Use bulk loading : You can use bulk loading to improve the performance of a session that inserts a large amountof data into a DB2, Sybase ASE, Oracle, or Microsoft SQL Server database. Configure bulk loading in the sessionproperties.

    When bulk loading, the Integration Service bypasses the database log, which speeds performance. Without writing

    to the database log, however, the target database cannot perform rollback. As a result, you may not be able toperform recovery. When you use bulk loading, weigh the importance of improved sessionperformance against the ability to recover an incomplete session.

    When bulk loading to Microsoft SQL Server or Oracle targets, define a large commit interval to increaseperformance. Microsoft SQL Server and Oracle start a new bulk load transaction after each commit. Increasing thecommit interval reduces the number of bulk load transactions, which increases performance

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    6/37

    Use external loading : You can use an external loader to increase session performance. If you have a DB2 EE orDB2 EEE target database, you can use the DB2 EE or DB2 EEE external loaders to bulk load target files. The DB2EE external loader uses the Integration Service db2load utility to load data. The DB2 EEE external loader uses theDB2 Autoloader utility.

    If you have a Teradata target database, you can use the Teradata external loader utility to bulk load target files. Touse the Teradata external loader utility, set up the attributes, such as Error Limit, Tenacity, MaxSessions, and Sleep,

    to optimize performance.

    If the target database runs on Oracle, you can use the Oracle SQL*Loader utility to bulk load target files. When youload data to an Oracle database using a pipeline with multiple partitions, you can increase performance if you createthe Oracle target table with the same number of partitions you use for the pipeline.

    If the target database runs on Sybase IQ, you can use the Sybase IQ external loader utility to bulk load target files. Ifthe Sybase IQ database is local to the Integration Service process on the UNIX system, you can increaseperformance by loading data to target tables directly from named pipes. If you run the Integration Service on a grid,configure the Integration Service to check resources, make Sybase IQ a resource, make the resource available on allnodes of the grid, and then, in the Workflow Manager, assign the Sybase IQ resource to the applicable sessions.

    Minimize deadlocks : If the Integration Service encounters a deadlock when it tries to write to a target, the

    deadlock only affects targets in the same target connection group. The Integration Service still writes to targets inother target connection groups.

    Encountering deadlocks can slow session performance. To improve session performance, you can increase thenumber of target connection groups the Integration Service uses to write to the targets in a session. To use a differenttarget connection group for each target in a session, use a different database connection name for each targetinstance. You can specify the same connection information for each connection name.

    Increase database network packet size : If you write to Oracle, Sybase ASE or, Microsoft SQL Server targets,you can improve the performance by increasing the network packet size. Increase the network packet size to allowlarger packets of data to cross the network at one time. Increase the network packet size based on the database youwrite to:

    -Oracle. You can increase the database server network packet size in listener.ora and tnsnames.ora. Consult yourdatabase documentation for additional information about increasing the packet size, if necessary.

    -Sybase ASE and Microsoft SQL. Consult your database documentation for information about how to increase thepacket size.

    For Sybase ASE or Microsoft SQL Server, you must also change the packet size in the relational connection objectin the Workflow Manager to reflect the database server packet size.

    Optimize Oracle target databases : If the target database is Oracle, you can optimize the target database bychecking the storage clause, space allocation, and rollback or undo segments.

    When you write to an Oracle database, check the storage clause for database objects. Make sure that tables are using

    large initial and next values. The database should also store table and index data in separate tablespaces, preferablyon different disks.

    When you write to Oracle databases, the databases uses rollback or undo segments during loads. Ask the Oracledatabase administrator to ensure that the database stores rollback or undo segments in appropriate tablespaces,preferably on different disks. The rollback or undo segments should also have appropriate storage clauses.

    You can optimize the Oracle database by tuning the Oracle redo log. The Oracle database uses the redo log to logloading operations. Make sure the redo log size and buffer size are optimal. You can view redo log properties in theinit.ora file.

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    7/37

    If the Integration Service runs on a single node and the Oracle instance is local to the Integration Service processnode, you can optimize performance by using IPC protocol to connect to the Oracle database. You can set up Oracledatabase connection in listener.ora and tnsnames.ora.

    3.4 Tips and Tricks If the target is a flat file, ensure that the flat file is local to the Informatica server. If target is a relational

    table, then try not to use synonyms or aliases.

    Use bulk load whenever possible.

    Increase the commit level.

    Drop constraints and indexes of the table before loading.

    4.Optimizing the Source

    4.1 Overview

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    8/37

    If the session reads from a relational source, review the following suggestions for improving performance:

    Optimize the query.

    Use conditional filters.

    Increase database network packet size

    Connect to Oracle databases using IPC protocol.Use the FastExport utility to extract Teradata data.

    Create tempdb to join Sybase ASE or Microsoft SQL Server tables.

    4.2 Optimizing the Query

    If a session joins multiple source tables in one Source Qualifier, you might be able to improve performance byoptimizing the query with optimizing hints. Also, single table select statements with an ORDER BY or GROUP BYclause may benefit from optimization such as adding indexes.

    Usually, the database optimizer determines the most efficient way to process the source data. However, you mightknow properties about the source tables that the database optimizer does not. The database administrator can createoptimizer hints to tell the database how to execute the query for a particular set of source tables.

    The query that the Integration Service uses to read data appears in the session log. You can also find the query in theSource Qualifier transformation. Have the database administrator analyze the query, and then create optimizer hintsand indexes for the source tables.

    Use optimizing hints if there is a long delay between when the query begins executing and when PowerCenterreceives the first row of data. Configure optimizer hints to begin returning rows as quickly as possible, rather thanreturning all rows at once. This allows the Integration Service to process rows parallel with the query execution.

    Queries that contain ORDER BY or GROUP BY clauses may benefit from creating an index on the ORDER BY orGROUP BY columns. Once you optimize the query, use the SQL override option to take full advantage of thesemodifications.

    You can also configure the source database to run parallel queries to improve performance. For more informationabout configuring parallel queries, see the database documentation.

    4.3 Using Conditional Filters

    A simple source filter on the source database can sometimes negatively impact performance because of the lack ofindexes. You can use the PowerCenter conditional filter in the Source Qualifier to improve performance.

    Whether you should use the PowerCenter conditional filter to improve performance depends on the session. Forexample, if multiple sessions read from the same source simultaneously, the PowerCenter conditional filter mayimprove performance.

    However, some sessions may perform faster if you filter the source data on the source database. You can test the

    session with both the database filter and the PowerCenter filter to determine which method improves performance.

    4.4 Increasing Database Network Packet Size

    If you read from Oracle, Sybase ASE or, Microsoft SQL Server sources, you can improve the performance byincreasing the network packet size. Increase the network packet size to allow larger packets of data to cross thenetwork at one time. Increase the network packet size based on the database you read from:

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    9/37

    -Oracle. You can increase the database server network packet size in listener.ora and tnsnames.ora. Consult yourdatabase documentation for additional information about increasing the packet size, if necessary.

    -Sybase ASE and Microsoft SQL. Consult your database documentation for information about how to increase thepacket size.

    For Sybase ASE or Microsoft SQL Server, you must also change the packet size in the relational connection object

    in the Workflow Manager to reflect the database server packet size.

    4.5 Connecting to Oracle Database Sources

    If you are running the Integration Service on a single node and the Oracle instance is local to the Integration Serviceprocess node, you can optimize performance by using IPC protocol to connect to the Oracle database. You can setup an Oracle database connection in listener.ora and tnsnames.ora.

    4.6 Using Teradata FastExport

    FastExport is a utility that uses multiple Teradata sessions to quickly export large amounts of data from a Teradatadatabase. You can create a PowerCenter session that uses FastExport to read Teradata sources quickly. To useFastExport, create a mapping with a Teradata source database. In the session, use FastExport reader instead of

    Relational reader. Use a FastExport connection to the Teradata tables that you want to export in a session.

    4.7 Using tempdb to Join Sybase or Microsoft SQL ServerTables

    When you join large tables on a Sybase or Microsoft SQL Server database, it is possible to improve performance bycreating the tempdb as an in-memory database to allocate sufficient memory. For more information, see the Sybaseor Microsoft SQL Server documentation.

    4.8 Tips and Tricks

    If the source is a flat file, ensure that the flat file is local to the Informatica server. If source is a relationaltable, then try not to use synonyms or aliases.

    If the source is a flat file, reduce the number of bytes (By default it is 1024 bytes per line) the Informaticareads per line. If we do this, we can decrease the Line Sequential Buffer Length setting of the sessionproperties.

    If possible, give a conditional query in the source qualifier so that the records are filtered off as soon as

    possible in the process.

    In the source qualifier, if the query has ORDER BY or GROUP BY, then create an index on the source

    table and order by the index field of the source table.

    5.Optimizing Mappings

    5.1 Overview

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    10/37

    Mapping-level optimization may take time to implement, but it can significantly boost session performance. Focuson mapping-level optimization after you optimize the targets and sources.

    Generally, you reduce the number of transformations in the mapping and delete unnecessary links betweentransformations to optimize the mapping. Configure the mapping with the least number of transformations andexpressions to do the most amount of work possible. Delete unnecessary links between transformations to minimizethe amount of data moved.

    You can also perform the following tasks to optimize the mapping:

    Optimize the flat file sources.

    Configure single-pass reading.

    Optimize Simple Pass Through mappings.

    Optimize filters.

    Optimize datatype conversions

    Optimize expressions

    Optimize external procedures.

    5.2 Optimizing Flat File Sources

    Complete the following tasks to optimize flat file sources:

    Optimize the line sequential buffer length.

    Optimize delimited flat file sources.

    Optimizing XML and flat file sources.

    -Optimizing the Line Sequential Buffer Length

    If the session reads from a flat file source, you can improve session performance by setting the number of bytes theIntegration Service reads per line. By default, the Integration Service reads 1024 bytes per line. If each line in the

    source file is less than the default setting, you can decrease the line sequential buffer length in the session properties.

    -Optimizing Delimited Flat File Sources

    If a source is a delimited flat file, you must specify the delimiter character to separate columns of data in the sourcefile. You must also specify the escape character. The Integration Service reads the delimiter character as a regularcharacter if you include the escape character before the delimiter character. You can improve session performance ifthe source flat file does not contain quotes or escape characters.

    -Optimizing XML and Flat File Sources

    XML files are usually larger than flat files because of the tag information. The size of an XML file depends on thelevel of tagging in the XML file. More tags result in a larger file size. As a result, the Integration Service may takelonger to read and cache XML sources.

    5.3 Configuring Single-Pass Reading

    Single-pass reading allows you to populate multiple targets with one source qualifier. Consider using single-passreading if you have multiple sessions that use the same sources. You can combine the transformation logic for eachmapping in one mapping and use one source qualifier for each source. The Integration Service reads each source

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    11/37

    once and then sends the data into separate pipelines. A particular row can be used by all the pipelines, by anycombination of pipelines, or by no pipelines.

    For example, you have the Purchasing source table, and you use that source daily to perform an aggregation and aranking. If you place the Aggregator and Rank transformations in separate mappings and sessions, you force theIntegration Service to read the same source table twice. However, if you include the aggregation and ranking logicin one mapping with one source qualifier, the Integration Service reads the Purchasing source table once, and then

    sends the appropriate data to the two separate pipelines.

    When changing mappings to take advantage of single-pass reading, you can optimize this feature by factoring outcommon functions from mappings. For example, if you need to subtract a percentage from the Price ports for boththe Aggregator and Rank transformations, you can minimize work by subtracting the percentage before splitting thepipeline. You can use an Expression transformation to subtract the percentage, and then split the mapping after thetransformation.

    5.4 Optimizing Simple Pass through Mappings

    You can optimize performance for Simple Pass Through mappings. To pass directly from source to target withoutany other transformations, connect the Source Qualifier transformation directly to the target. If you use a mappingwizard to create a Simple Pass Through mapping, the wizard creates an Expression transformation between theSource Qualifier transformation and the target.

    5.5 Optimizing Filters

    Use one of the following methods to filter data:

    Use a Source Qualifier transformation : The Source Qualifier transformation filters rows from relationalsources.

    Use a Filter transformation : The Filter transformation filters data within a mapping. The Filter transformationfilters rows from any type of source.

    If you filter rows from the mapping, you can improve efficiency by filtering early in the data flow. Use a filter in theSource Qualifier transformation to remove the rows at the source. The Source Qualifier transformation limits therow set extracted from a relational source.

    If you cannot use a filter in the Source Qualifier transformation, use a Filter transformation and move it as close tothe Source Qualifier transformation as possible to remove unnecessary data early in the data flow. The Filtertransformation limits the row set sent to a target.

    Avoid using complex expressions in filter conditions. You can optimize Filter transformations by using simpleinteger or true/false expressions in the filter condition.

    Note: You can also use a Filter or Router transformation to drop rejected rows from an Update Strategy

    transformation if you do not need to keep rejected rows.

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    12/37

    5.6 Optimizing Datatype Conversions

    You can increase performance by eliminating unnecessary datatype conversions. For example, if a mapping movesdata from an Integer column to a Decimal column, then back to an Integer column, the unnecessary datatypeconversion slows performance. Where possible, eliminate unnecessary datatype conversions from mappings.

    Use the following datatype conversions to improve system performance:

    Use integer values in place of other datatypes when performing comparisons using Lookup and Filtertransformations. For example, many databases store U.S. zip code information as a Char or Varchar datatype. If youconvert the zip code data to an Integer datatype, the lookup database stores the zip code 94303-1234 as 943031234.This helps increase the speed of the lookup comparisons based on zip code.

    Convert the source dates to strings through port-to-port conversions to increase session performance. You

    can either leave the ports in targets as strings or change the ports to Date/Time ports.

    5.7 Optimizing Expressions

    You can also optimize the expressions used in the transformations. When possible, isolate slow expressions and

    simplify them.

    Complete the following tasks to isolate the slow expressions:

    1. Remove the expressions one-by-one from the mapping.

    2. Run the mapping to determine the time it takes to run the mapping without the transformation.

    If there is a significant difference in session run time, look for ways to optimize the slow expression.

    Factoring Out Common LogicIf the mapping performs the same task in multiple places, reduce the number of times the mapping performs the taskby moving the task earlier in the mapping. For example, you have a mapping with five target tables. Each targetrequires a Social Security number lookup. Instead of performing the lookup five times, place the Lookup

    transformation in the mapping before the data flow splits. Next, pass the lookup results to all five targets.

    Minimizing Aggregate Function CallsWhen writing expressions, factor out as many aggregate function calls as possible. Each time you use an aggregatefunction call, the Integration Service must search and group the data. For example, in the following expression, theIntegration Service reads COLUMN_A, finds the sum, then reads COLUMN_B, finds the sum, and finally finds thesum of the two sums:

    SUM(COLUMN_A) + SUM(COLUMN_B)

    If you factor out the aggregate function call, as below, the Integration Service adds COLUMN_A to COLUMN_B,then finds the sum of both.

    SUM(COLUMN_A + COLUMN_B)

    Replacing Common Expressions with Local VariablesIf you use the same expression multiple times in one transformation, you can make that expression a local variable.You can use a local variable only within the transformation. However, by calculating the variable only once, youspeed performance.

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    13/37

    Choosing Numeric Versus String OperationsThe Integration Service processes numeric operations faster than string operations. For example, if you look up large

    amounts of data on two columns, EMPLOYEE_NAME and EMPLOYEE_ID, configuring the lookup around

    EMPLOYEE_ID improves performance.

    Optimizing Char-Char and Char-Varchar ComparisonsWhen the Integration Service performs comparisons between CHAR and VARCHAR columns, it slows each time it

    finds trailing blank spaces in the row. You can use the Treat CHAR as CHAR On Read option when you configure

    the Integration Service in the Administration Console so that the Integration Service does not trim trailing spaces

    from the end of Char source fields

    Choosing DECODE Versus LOOKUPWhen you use a LOOKUP function, the Integration Service must look up a table in a database. When you use a

    DECODE function, you incorporate the lookup values into the expression so the Integration Service does not have

    to look up a separate table. Therefore, when you want to look up a small set of unchanging values, using DECODE

    may improve performance.

    Using Operators Instead of FunctionsThe Integration Service reads expressions written with operators faster than expressions with functions. Where

    possible, use operators to write expressions. For example, you have the following expression that contains nested

    CONCAT functions:

    CONCAT( CONCAT( CUSTOMERS.FIRST_NAME, ) CUSTOMERS.LAST_NAME)

    You can rewrite that expression with the || operator as follows:

    CUSTOMERS.FIRST_NAME || || CUSTOMERS.LAST_NAME

    Optimizing IIF Expressions

    IIF expressions can return a value and an action, which allows for more compact expressions. For example, you

    have a source with three Y/N flags: FLG_A, FLG_B, FLG_C. You want to return values based on the values of each

    flag.

    You use the following expression:

    IIF( FLG_A = 'Y' and FLG_B = 'Y' AND FLG_C = 'Y',

    VAL_A + VAL_B + VAL_C,

    IIF( FLG_A = 'Y' and FLG_B = 'Y' AND FLG_C = 'N',

    VAL_A + VAL_B,

    IIF( FLG_A = 'Y' and FLG_B = 'N' AND FLG_C = 'Y',

    VAL_A + VAL_C,

    IIF( FLG_A = 'Y' and FLG_B = 'N' AND FLG_C = 'N',

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    14/37

    VAL_A ,

    IIF( FLG_A = 'N' and FLG_B = 'Y' AND FLG_C = 'Y',

    VAL_B + VAL_C,

    IIF( FLG_A = 'N' and FLG_B = 'Y' AND FLG_C = 'N',

    VAL_B ,

    IIF( FLG_A = 'N' and FLG_B = 'N' AND FLG_C = 'Y',

    VAL_C,

    IIF( FLG_A = 'N' and FLG_B = 'N' AND FLG_C = 'N', 0.0,

    ))))))))

    This expression requires 8 IIFs, 16 ANDs, and at least 24 comparisons.

    If you take advantage of the IIF function, you can rewrite that expression as:

    IIF(FLG_A='Y', VAL_A, 0.0)+ IIF(FLG_B='Y', VAL_B, 0.0)+ IIF(FLG_C='Y', VAL_C, 0.0)

    This results in three IIFs, two comparisons, two additions, and a faster session.

    Evaluating ExpressionsIf you are not sure which expressions slow performance, evaluate the expression performance to isolate the problem.

    Complete the following steps to evaluate expression performance:

    1. Time the session with the original expressions.

    2. Copy the mapping and replace half of the complex expressions with a constant.

    3. Run and time the edited session.

    4. Make another copy of the mapping and replace the other half of the complex expressions with a constant.

    5. Run and time the edited session.

    5.8 Optimizing External Procedures

    You might want to block input data if the external procedure needs to alternate reading from input groups. Without

    the blocking functionality, you would need to write the procedure code to buffer incoming data. You can block input

    data instead of buffering it which usually increases session performance.

    For example, you need to create an external procedure with two input groups. The external procedure reads a row

    from the first input group and then reads a row from the second input group. If you use blocking, you can write the

    external procedure code to block the flow of data from one input group while it processes the data from the other

    input group. When you write the external procedure code to block data, you increase performance because the

    procedure does not need to copy the source data to a buffer. However, you could write the external procedure to

    allocate a buffer and copy the data from one input group to the buffer until it is ready to process the data. Copying

    source data to a buffer decreases performance.

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    15/37

    5.9 Tips and Tricks

    Avoid executing major sql queries from mapplets or mappings.

    Use optimized queries when we are using them.

    Reduce the number of transformations in the mapping. Active transformations like rank, joiner, filter,

    aggregator etc should be used as less as possible. Remove all the unnecessary links between the transformations from mapping.

    If a single mapping contains many targets, then dividing them into separate mappings can improveperformance.

    If we need to use a single source more than once in a mapping, then keep only one source and sourcequalifier in the mapping. Then create different data flows as required into different targets or same target.

    If a session joins many source tables in one source qualifier, then an optimizing query will improveperformance.

    In the sql query that Informatica generates, ORDERBY will be present. Remove the ORDER BY clause ifnot needed or at least reduce the number of column names in that list. For better performance it is best toorder by the index field of that table.

    Combine the mappings that use same set of source data.

    On a mapping, field with the same information should be given the same type and length throughout themapping. Otherwise time will be spent on field conversions.

    Instead of doing complex calculation in query, use an expression transformer and do the calculation in themapping.

    If data is passing through multiple staging areas, removing the staging area will increase performance.

    Stored procedures reduce performance. Try to keep the stored procedures simple in the mappings.

    Unnecessary data type conversions should be avoided since the data type conversions impact performance.

    Transformation errors result in performance degradation. Try running the mapping after removing alltransformations. If it is taking significantly less time than with the transformations, then we have to fine-tune the transformation.

    Keep database interactions as less as possible.

    6. Optimizing Transformations

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    16/37

    6.1 Overview

    You can further optimize mappings by optimizing the transformations contained in the mappings.

    You can optimize the following transformations in a mapping:

    Aggregator transformations.

    Custom transformations.

    Joiner transformations.

    Lookup transformations.

    Sequence Generator transformations.

    Sorter transformations.

    Source Qualifier transformations.

    SQL transformations

    Update transformation

    Filter transformation

    Expression transformation

    6.2 Optimizing Aggregator Transformations

    Aggregator transformations often slow performance because they must group data before processing it. Aggregatortransformations need additional memory to hold intermediate group results.

    You can use the following guidelines to optimize the performance of an Aggregator transformation:

    Group by simple columns.

    Use sorted input.

    Use incremental aggregation.

    Filter data before you aggregate it.

    Limit port connections.

    Group By Simple ColumnsYou can optimize Aggregator transformations when you group by simple columns. When possible, use numbersinstead of string and dates in the columns used for the GROUP BY. Avoid complex expressions in the Aggregatorexpressions.

    Use Sorted Input

    You can increase session performance by sorting data for the Aggregator transformation. Use the Sorted Inputoption to sort data.

    The Sorted Input option decreases the use of aggregate caches. When you use the Sorted Input option, theIntegration Service assumes all data is sorted by group. As the Integration Service reads rows for a group, itperforms aggregate calculations. When necessary, it stores group information in memory.

    The Sorted Input option reduces the amount of data cached during the session and improves performance. Use thisoption with the Source Qualifier Number of Sorted Ports option or a Sorter transformation to pass sorted data to theAggregator transformation.

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    17/37

    You can benefit from better performance when you use the Sorted Input option in sessions with multiple partitions.

    Use Incremental AggregationIf you can capture changes from the source that affect less than half the target, you can use Incremental Aggregationto optimize the performance of Aggregator transformations.

    When using incremental aggregation, you apply captured changes in the source to aggregate calculations in asession. The Integration Service updates the target incrementally, rather than processing the entire source andrecalculates the same calculations every time you run the session.

    You can increase the index and data cache sizes to hold all data in memory without paging to disk.

    Filter Data before You AggregateFilter the data before you aggregate it. If you use a Filter transformation in the mapping, place the transformationbefore the Aggregator transformation to reduce unnecessary aggregation.

    Limit Port ConnectionsLimit the number of connected input/output or output ports to reduce the amount of data the Aggregatortransformation stores in the data cache.

    Tips and TricksAggregator transformation helps in performing aggregate calculations like SUM, AVERAGE etc.

    1. Aggregator, rank and joiner transformation will decrease performance since they group data beforeprocessing. So to improve performance here, use sorted ports.

    2. In aggregator transformation, in the GROUP BY clause, use numbers instead of strings if possible.

    3. Avoid complex expressions in aggregator conditions.

    4. Limit the number of connected input or output ports. This reduces the cache size.

    6.3 Optimizing Custom Transformations

    The Integration Service can pass a single row to a Custom transformation procedure or a block of rows in an array.You can write the procedure code to specify whether the procedure receives one row or a block of rows. You canincrease performance when the procedure receives a block of rows:

    You can decrease the number of function calls the Integration Service and procedure make. The Integration Servicecalls the input row notification function fewer times, and the procedure calls the output notification function fewertimes.

    You can increase the locality of memory access space for the data.

    You can write the procedure code to perform an algorithm on a block of data instead of each row of data.

    6.4 Optimizing Joiner Transformations

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    18/37

    Joiner transformations can slow performance because they need additional space at run time to hold intermediaryresults. You can view Joiner performance counter information to determine whether you need to optimize the Joinertransformations.

    Use the following tips to improve session performance with the Joiner transformation:

    Designate the master source as the source with fewer duplicate key values. When the Integration Service

    processes a sorted Joiner transformation, it caches rows for one hundred unique keys at a time. If the master sourcecontains many rows with the same key value, the Integration Service must cache more rows, and performance canbe slowed.

    Designate the master source as the source with the fewer rows. During a session, the Joiner transformationcompares each row of the detail source against the master source. The fewer rows in the master, the fewer iterationsof the join comparison occur, which speeds the join process.

    Perform joins in a database when possible. Performing a join in a database is faster than performing a join in thesession. The type of database join you use can affect performance. Normal joins are faster than outer joins and resultin fewer rows. In some cases, you cannot perform the join in the database, such as joining tables from two differentdatabases or flat file systems.

    To perform a join in a database, use the following options:

    Create a pre-session stored procedure to join the tables in a database.

    Use the Source Qualifier transformation to perform the join.

    Join sorted data when possible. You can improve session performance by configuring the Joiner transformationto use sorted input. When you configure the Joiner transformation to use sorted data, the Integration Serviceimproves performance by minimizing disk input and output. You see the greatest performance improvement whenyou work with large data sets. For an unsorted Joiner transformation, designate the source with fewer rows as themaster source.

    Tips and TricksJoiner transformation helps to perform joins of two source tables.

    1. Sort the data before joining.

    2. In joiner transformations, normal joins are faster than outer joins.

    3. Instead of joiner transformation, perform joins in database.

    4. In joiner transformation, the source with lesser number of records should be the master source.

    5. Join on fewer columns as possible.

    6. Use source qualifier to perform joins instead of joiner transformation wherever possible.

    6.5 Optimizing Lookup Transformations

    If the lookup table is on the same database as the source table in your mapping and caching is not feasible, join thetables in the source database rather than using a Lookup transformation.

    If you use a Lookup transformation, perform the following tasks to increase performance:

    Use the optimal database driver.

    Cache lookup tables.

    Optimize the lookup condition.

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    19/37

    Index the lookup table.

    Optimize multiple lookups.

    Using Optimal Database DriversThe Integration Service can connect to a lookup table using a native database driver or an ODBC driver. Native

    database drivers provide better session performance than ODBC drivers.

    Caching Lookup TablesIf a mapping contains Lookup transformations, you might want to enable lookup caching. When you enable caching,the Integration Service caches the lookup table and queries the lookup cache during the session. When this option isnot enabled, the Integration Service queries the lookup table on a row-by-row basis.

    The result of the Lookup query and processing is the same, whether or not you cache the lookup table. However,using a lookup cache can increase session performance for smaller lookup tables. In general, you want to cachelookup tables that need less than 300 MB.

    Complete the following tasks to further enhance performance for Lookup transformations:

    Use the appropriate cache type.Enable concurrent caches

    Optimize Lookup condition matching

    Reduce the number of cached rows.

    Override the ORDER BY statement.

    Use a machine with more memory.

    Types of Caches

    Use the following types of caches to increase performance:

    Shared cache. You can share the lookup cache between multiple transformations. You can share an unnamed

    cache between transformations in the same mapping. You can share a named cache between transformations in thesame or different mappings.

    Persistent cache. If you want to save and reuse the cache files, you can configure the transformation to use apersistent cache. Use this feature when you know the lookup table does not change between session runs. Using apersistent cache can improve performance because the Integration Service builds the memory cache from the cachefiles instead of from the database.

    OPTIMUM CACHE SIZE IN LOOKUPS

    -Calculating Lookup Index Cache

    The lookup index cache holds data for the columns used in the lookup condition. For best session performance,

    specify the maximum lookup index cache size. Use the following information to calculate the minimum and

    maximum lookup index cache for both connected and unconnected Lookup transformations: -

    To calculate the minimum lookup index cache size, use the formula:-

    Columns in lookup cache = 200 * [ + 16]

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    20/37

    To calculate the maximum lookup index cache size, use the formula:-

    Columns in lookup cache = *[ + 16] * 2

    Example:-

    Suppose the lookup table has lookup values based in the field ITEM_ID. It uses the lookup condition, ITEM_ID =IN_ITEM_ID1.

    This ITEM_ID has data type as integer and size as 16.

    Therefore the total column size is 16. The table contains 60000 rows.

    Minimum lookup index cache size = 200 * [16 + 16] = 6400

    Maximum lookup index cache size = 60000 * [16+16] * 2 = 3,840,000

    So this lookup transformation needs an index cache size between 6400 and 3,840,000.

    For best session performance, this lookup transformation needs an index cache size of 3,840,000 bytes.

    -Calculating Lookup Data Cache

    In a connected transformation, the data cache contains data for the connected output ports, not including ports used

    in the lookup condition. In an unconnected transformation, the data cache contains data from the return port.

    To calculate the minimum lookup data cache size, use the formula:-

    Columns in lookup cache = * [ + 8]

    Example:-

    Suppose the lookup table has column names as PROMOTION_ID and DISCOUNT which are connected output

    ports not in lookup condition

    Column size of each is 16. Therefore total column size is 32.The table contains 60000 rows.

    Minimum lookup data cache size = 60000 * [32 + 8] = 2,400,000

    So this lookup transformation needs a data cache size of 2, 40,000 bytes.

    Enable Concurrent CachesWhen the Integration Service processes sessions that contain Lookup transformations, the Integration Service buildsa cache in memory when it processes the first row of data in a cached Lookup transformation. If there are multipleLookup transformations in a mapping, the Integration Service creates the caches sequentially when the first row ofdata is processed by the Lookup transformation. This slows Lookup transformation processing.

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    21/37

    You can enable concurrent caches to improve performance. When the number of additional concurrent pipelines isset to one or more, the Integration Service builds caches concurrently rather than sequentially. Performanceimproves greatly when the sessions contain a number of active transformations that may take time to complete, suchas Aggregator, Joiner, or Sorter transformations. When you enable multiple concurrent pipelines, the IntegrationService no longer waits for active sessions to complete before it builds the cache. Other Lookup transformations inthe pipeline also build caches concurrently.

    Optimize Lookup Condition MatchingWhen the Lookup transformation matches lookup cache data with the lookup condition, it sorts and orders the datato determine the first matching value and the last matching value. You can configure the transformation to returnany value that matches the lookup condition. When you configure the Lookup transformation to return any matchingvalue, the transformation returns the first value that matches the lookup condition. It does not index all ports as itdoes when you configure the transformation to return the first matching value or the last matching value. When youuse any matching value, performance can improve because the transformation does not index on all ports, which canslow performance.

    Reducing the Number of Cached RowsYou can reduce the number of rows included in the cache to increase performance. Use the Lookup SQL Override

    option to add a WHERE clause to the default SQL statement.

    Overriding the ORDER BY StatementBy default, the Integration Service generates an ORDER BY statement for a cached lookup. The ORDER BYstatement contains all lookup ports. To increase performance, you can suppress the default ORDER BY statementand enter an override ORDER BY with fewer columns.

    The Integration Service always generates an ORDER BY statement, even if you enter one in the override. Place twodashes -- after the ORDER BY override to suppress the generated ORDER BY statement.

    For example, a Lookup transformation uses the following lookup condition:

    ITEM_ID = IN_ITEM_ID

    PRICE

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    22/37

    The Integration Service needs to query, sort, and compare values in the lookup condition columns. The index needsto include every column used in a lookup condition.

    You can improve performance for the following types of lookups:

    Cached lookups. To improve performance, index the columns in the lookup ORDER BY statement. The session

    log contains the ORDER BY statement.

    Uncached lookups. To improve performance, index the columns in the lookup condition. The Integration Serviceissues a SELECT statement for each row that passes into the Lookup transformation.

    Optimizing Multiple LookupsIf a mapping contains multiple lookups, even with caching enabled and enough heap memory, the lookups can slowperformance. Tune the Lookup transformations that query the largest amounts of data to improve overallperformance.

    To determine which Lookup transformations process the most data, examine the Lookup_rowsinlookupcachecounters for each Lookup transformation. The Lookup transformations that have a large number in this countermight benefit from tuning their lookup expressions. If those expressions can be optimized, session performance

    improves.

    Tips and TricksLookup transformations are used to lookup a set of values in another table. Lookups slows down the performance.

    1. To improve performance, cache the lookup tables. Informatica can cache all the lookup and referencetables; this makes operations run very fast. (Meaning of cache is given in point 2 of this section and theprocedure for determining the optimum cache size is given at the end of this document.)

    2. Even after caching, the performance can be further improved by minimizing the size of the lookup cache.Reduce the number of cached rows by using a sql override with a restriction.Cache: Cache stores data in memory so that Informatica does not have to read the table each time it is

    referenced. This reduces the time taken by the process to a large extent. Cache is automatically generated

    by Informatica depending on the marked lookup ports or by a user defined sql query.

    Example for caching by a user defined query: -

    Suppose we need to lookup records where employee_id=eno.

    employee_id is from the lookup table, EMPLOYEE_TABLE and eno is the input that comes from the

    from the source table, SUPPORT_TABLE.

    We put the following sql query override in Lookup Transform

    select employee_id from EMPLOYEE_TABLE

    If there are 50,000 employee_id, then size of the lookup cache will be 50,000.

    Instead of the above query, we put the following:-

    select emp employee_id from EMPLOYEE_TABLE e, SUPPORT_TABLE s where e.

    employee_id=s.eno

    If there are 1000 eno, then the size of the lookup cache will be only 1000.

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    23/37

    But here the performance gain will happen only if the number of records in SUPPORT_TABLE is not

    huge. Our concern is to make the size of the cache as less as possible.

    3. In lookup tables, delete all unused columns and keep only the fields that are used in the mapping.4. If possible, replace lookups by joiner transformation or single source qualifier. Joiner transformation takes

    more time than source qualifier transformation.

    5. If lookup transformation specifies several conditions, then place conditions that use equality operator =first in the conditions that appear in the conditions tab.6. In the sql override query of the lookup table, there will be an ORDER BY clause. Remove it if not needed

    or put fewer column names in the ORDER BY list.7. Do not use caching in the following cases: -

    -Source is small and lookup table is large.

    -If lookup is done on the primary key of the lookup table.

    8. Cache the lookup table columns definitely in the following case: --If lookup table is small and source is large.

    9. If lookup data is static, use persistent cache. Persistent caches help to save and reuse cache files. If severalsessions in the same job use the same lookup table, then using persistent cache will help the sessions toreuse cache files. In case of static lookups, cache files will be built from memory cache instead of from thedatabase, which will improve the performance.

    10. If source is huge and lookup table is also huge, then also use persistent cache.11. If target table is the lookup table, then use dynamic cache. The Informatica server updates the lookup cache

    as it passes rows to the target.12. Use only the lookups you want in the mapping. Too many lookups inside a mapping will slow down the

    session.13. If lookup table has a lot of data, then it will take too long to cache or fit in memory. So move those fields to

    source qualifier and then join with the main table.14. If there are several lookups with the same data set, then share the caches.15. If we are going to return only 1 row, then use unconnected lookup.16. All data are read into cache in the order the fields are listed in lookup ports. If we have an index that is even

    partially in this order, the loading of these lookups can be speeded up.

    17. If the table that we use for look up has an index (or if we have privilege to add index to the table in thedatabase, do so), then the performance would increase both for cached and uncached lookups.

    6.6 Optimizing Sequence Generator Transformations

    You can optimize Sequence Generator transformations by creating a reusable Sequence Generator and using it inmultiple mappings simultaneously. You can also optimize Sequence Generator transformations by configuring theNumber of Cached Values property.

    The Number of Cached Values property determines the number of values the Integration Service caches at one time.Make sure that the Number of Cached Value is not too small. You may consider configuring the Number of CachedValues to a value greater than 1,000.

    If you do not have to cache values, set the Number of Cache Values to 0. Sequence Generator transformations thatdo not use cache are faster than those that require cache.

    Tips and TricksA sequence generator transformation is used to generate primary keys in the Informatica.

    1. If we need the sequence generator more than once in a job, then make it reusable & use multiple times inthe folder.

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    24/37

    2. To generate primary keys, use Sequence generator transformation instead of using a stored procedure forgenerating sequence numbers.

    3. We can also opt for sequencing in the source qualifier by adding a dummy field in the source definition andsource qualifier, and then giving a sql query likeselect seq_name.nextval, ... from where .

    Seq_name is the sequence that generates primary key for our source table. . Nextval is a

    sequence generator object in Oracle.

    This method of primary key generation is faster than using sequence generator transformation.

    6.7 Optimizing Sorter Transformations

    Complete the following tasks to optimize a Sorter transformation:

    Allocate enough memory to sort the data.

    Specify a different work directory for each partition in the Sorter transformation.

    Allocating MemoryIf the Integration Service cannot allocate enough memory to sort data, it fails the session. For best performance,configure Sorter cache size with a value less than or equal to the amount of available physical RAM on theIntegration Service machine. Informatica recommends allocating at least 8 MB (8,388,608 bytes) of physicalmemory to sort data using the Sorter transformation. Sorter cache size is set to 8,388,608 bytes by default.

    If the amount of incoming data is greater than the amount of Sorter cache size, the Integration Service temporarilystores data in the Sorter transformation work directory. The Integration Service requires disk space of at least twicethe amount of incoming data when storing data in the work directory. If the amount of incoming data is significantlygreater than the Sorter cache size, the Integration Service may require much more than twice the amount of diskspace available to the work directory.

    Use the following formula to determine the size of incoming data:

    # input rows ([Sum (column size)] + 16)

    Work Directories for PartitionsThe Integration Service creates temporary files when it sorts data. It stores them in a work directory. You canspecify any directory on the Integration Service machine to use as a work directory. By default, the IntegrationService uses the value specified for the $PMTempDir server variable.

    When you partition a session with a Sorter transformation, you can specify a different work directory for each

    partition in the pipeline. To increase session performance, specify work directories on physically separate disks on

    the Integration Service nodes.

    Tips and TricksSorter transformation is used to sort the input data.

    1. While using the sorter transformation, configure sorter cache size to be larger than the input data size.2. Configure the sorter cache size setting to be larger than the input data size while using sorter

    transformation.3. At the sorter transformation, use hash auto keys partitioning or hash user keys partitioning.

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    25/37

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    26/37

    6.12 Optimizing Expression Transformation

    Expression transformation is used to perform simple calculations and also to do source lookups.

    1. Use operators instead of functions.

    2. Minimize the usage of string functions.3. If we use a complex expression multiple times in the expression transformer, then make that expression asa variable. Then we need to use only this variable for all computations.

    7.Optimizing Sessions

    7.1 Overview

    Once you optimize the source database, target database, and mapping, you can focus on optimizing the session. You

    can perform the following tasks to improve overall performance:Use a grid. You can increase performance by using a grid to balance the Integration Service workload.

    Use pushdown optimization. You can increase session performance by pushing transformation logic to the sourceor target database.

    Run sessions and workflows concurrently. You can run independent sessions and workflows concurrently toimprove session and workflow performance.

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    27/37

    Allocate buffer memory. You can increase the buffer memory allocation for sources and targets that requireadditional memory blocks. If the Integration Service cannot allocate enough memory blocks to hold the data, it failsthe session.

    Optimize caches. You can improve session performance by setting the optimal location and size for the caches.

    Increase the commit interval. Each time the Integration Service commits changes to the target, performanceslows. You can increase session performance by increasing the interval at which the Integration Service commits

    changes.

    Disable high precision. Performance slows when the Integration Service reads and manipulates data with the highprecision datatype. You can disable high precision to improve session performance.

    Reduce errors tracing. To improve performance, you can reduce the error tracing level, which reduces thenumber of log events generated by the Integration Service..

    Remove staging areas. When you use a staging area, the Integration Service performs multiple passes on the data.You can eliminate staging areas to improve session performance.

    7.2 Using a Grid

    You can use a grid to increase session and workflow performance. A grid is an alias assigned to a group of nodesthat allows you to automate the distribution of workflows and sessions across nodes.

    When you use a grid, the Integration Service distributes workflow tasks and session threads across multiple nodes.Running workflows and sessions on the nodes of a grid provides the following performance gains:

    Balances the Integration Service workload.

    Processes concurrent sessions faster.

    Processes partitions faster.

    7.3 Using Pushdown Optimization

    You can increase session performance by pushing transformation logic to the source or target database. Based on themapping and session configuration, the Integration Service executes SQL against the source or target databaseinstead of processing the transformation logic within the Integration Service.

    7.4 Run Concurrent Sessions and Workflows

    If possible, run sessions and workflows concurrently to improve performance. For example, if you load data into ananalytic schema, where you have dimension and fact tables, load the dimensions concurrently.

    7.5 Allocating Buffer Memory

    When the Integration Service initializes a session, it allocates blocks of memory to hold source and target data. TheIntegration Service allocates at least two blocks for each source and target partition. Sessions that use a large numberof sources and targets might require additional memory blocks. If the Integration Service cannot allocate enoughmemory blocks to hold the data, it fails the session.

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    28/37

    You can configure the amount of buffer memory, or you can configure the Integration Service to automaticallycalculate buffer settings at run time.

    You can increase the number of available memory blocks by adjusting the following session parameters:

    DTM Buffer Size. Increase the DTM buffer size on the Properties tab in the session properties.Default Buffer Block Size. Decrease the buffer block size on the Config Object tab in the session properties.

    To configure these settings, first determine the number of memory blocks the Integration Service requires toinitialize the session. Then, based on default settings, calculate the buffer size and/or the buffer block size to createthe required number of session blocks.

    If you have XML sources or targets in a mapping, use the number of groups in the XML source or target in thecalculation for the total number of sources and targets.

    For example, you create a session that contains a single partition using a mapping that contains 50 sources and 50targets. Then you make the following calculations:

    1.You determine that the session requires a minimum of 200 memory blocks:

    [(total number of sources + total number of targets)* 2] = (session buffer blocks)

    100 * 2 = 200

    2.Based on default settings, you determine that you can change the DTM Buffer Size to 15,000,000, or you canchange the Default Buffer Block Size to 54,000:

    (session Buffer Blocks) = (.9) * (DTM Buffer Size) / (Default Buffer Block Size) * (number of partitions)

    200 = .9 * 14222222 / 64000 * 1

    or

    200 = .9 * 12000000 / 54000 * 1

    Note: For a session that contains npartitions, set the DTM Buffer Size to at least n times the value for the sessionwith one partition. The Log Manager writes a warning message in the session log if the number of memory blocks is

    so small that it causes performance degradation. The Log Manager writes this warning message even if the numberof memory blocks is enough for the session to run successfully. The warning message also gives a suggestion for theproper value.If you modify the DTM Buffer Size, increase the property by multiples of the buffer block size.

    Increasing DTM Buffer SizeThe DTM Buffer Size setting specifies the amount of memory the Integration Service uses as DTM buffer memory.The Integration Service uses DTM buffer memory to create the internal data structures and buffer blocks used tobring data into and out of the Integration Service. When you increase the DTM buffer memory, the IntegrationService creates more buffer blocks, which improves performance during momentary slowdowns.

    Increasing DTM buffer memory allocation generally causes performance to improve initially and then level off.When you increase the DTM buffer memory allocation, consider the total memory available on the Integration

    Service process system.

    If you do not see a significant increase in performance, DTM buffer memory allocation is not a factor in sessionperformance.

    Note: Reducing the DTM buffer allocation can cause the session to fail early in the process because the IntegrationService is unable to allocate memory to the required processes.

    To increase the DTM buffer size, open the session properties and click the Properties tab. Edit the DTM Buffer Sizeproperty in the Performance settings.

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    29/37

    Increase the property by multiples of the buffer block size, and then run and time the session after each increase.

    Optimizing the Buffer Block SizeDepending on the session source data, you might need to increase or decrease the buffer block size.

    If the machine has limited physical memory and the mapping in the session contains a large number of sources,

    targets, or partitions, you might need to decrease the buffer block size.

    If you are manipulating unusually large rows of data, you can increase the buffer block size to improve performance.If you do not know the approximate size of the rows, you can determine the configured row size by completing thefollowing steps.

    To evaluate needed buffer block size:

    1. In the Mapping Designer, open the mapping for the session.

    2. Open the target instance.

    3. Click the Ports tab.

    4. Add the precision for all columns in the target.

    5. If you have more than one target in the mapping, repeat steps 2 to 4 for each additional target to calculate theprecision for each target.

    6. Repeat steps 2 to 5 for each source definition in the mapping.

    7. Choose the largest precision of all the source and target precisions for the total precision in the buffer block sizecalculation.

    The total precision represents the total bytes needed to move the largest row of data. For example, if the totalprecision equals 33,000, then the Integration Service requires 33,000 bytes in the buffers to move that row. If thebuffer block size is 64,000 bytes, the Integration Service can move only one row at a time.

    Ideally, a buffer accommodates at least 100 rows at a time. So if the total precision is greater than 32,000, increasethe size of the buffers to improve performance.

    To increase the buffer block size, open the session properties and click the Config Object tab. Edit the Default

    Buffer Block Size property in the Advanced settings.Increase the DTM buffer block setting in relation to the size of the rows. As with DTM buffer memory allocation,increasing buffer block size should improve performance. If you do not see an increase, buffer block size is not afactor in session performance.

    7.6 Optimizing Caches

    The Integration Service uses the index and data caches for XML targets and Aggregator, Rank, Lookup, and Joinertransformations. The Integration Service stores transformed data in the data cache before returning it to the pipeline.

    It stores group information in the index cache. Also, the Integration Service uses a cache to store data for Sortertransformations.

    You can configure the amount of cache memory using the cache calculator or by specifying the cache size. You canalso configure the Integration Service to automatically calculate cache memory settings at run time.

    If the allocated cache is not large enough to store the data, the Integration Service stores the data in a temporary diskfile as it processes the session data. Performance slows each time the Integration Service pages to a temporary file.Examine the performance details to determine how often the Integration Service pages to a file.

    Perform the following tasks to optimize caches:

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    30/37

    Limit the number of connected input/output and output only ports.

    Select the optimal cache directory location.

    Increase the cache sizes.

    Use the 64-bit version of PowerCenter to run large cache sessions.

    Limiting the Number of Connected PortsFor transformations that use data cache, limit the number of connected input/output and output only ports. Limitingthe number of connected input/output or output ports reduces the amount of data the transformations store in thedata cache.

    Cache Directory LocationIf you run the Integration Service on a grid and only some Integration Service nodes have fast access to the sharedcache file directory, configure each session with a large cache to run on the nodes with fast access to the directory.To configure a session to run on a node with fast access to the directory, complete the following steps:

    1.Create a PowerCenter resource.2. Make the resource available to the nodes with fast access to the directory.

    3. Assign the resource to the session.

    If all Integration Service processes in a grid have slow access to the cache files, set up a separate, local cache filedirectory for each Integration Service process. An Integration Service process may have faster access to the cachefiles if it runs on the same machine that contains the cache directory.

    Note: You may encounter performance degradation when you cache large quantities of data on a mapped ormounted drive.

    Increasing the Cache SizesIf the allocated cache is not large enough to store the data, the Integration Service stores the data in a temporary diskfile as it processes the session data. Each time the Integration Service pages to the temporary file, performanceslows.

    You can examine the performance details to determine when the Integration Service pages to the temporary file. TheTransformation_readfromdisk orTransformation_writetodisk counters for any Aggregator, Rank, Lookup, or Joinertransformation indicate the number of times the Integration Service must page to disk to process the transformation.Since the data cache is typically larger than the index cache, increase the data cache more than the index cache.

    If the session contains a transformation that uses a cache and you run the session on a machine with ample memory,

    increase the cache sizes so all data can fit in memory.

    Using the 64-bit version of PowerCenter

    If you process large volumes of data or perform memory-intensive transformations, you can use the 64-bitPowerCenter version to increase session performance. The 64-bit version provides a larger memory space that cansignificantly reduce or eliminate disk input/output.

    This can improve session performance in the following areas:

    Caching. With a 64-bit platform, the Integration Service is not limited to the 2 GB cache limit of a 32-bit platform.

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    31/37

    Data throughput. With a larger available memory space, the reader, writer, and DTM threads can process largerblocks of data.

    7.7 Increasing the Commit Interval

    The commit interval setting determines the point at which the Integration Service commits data to the targets. Eachtime the Integration Service commits, performance slows. Therefore, the smaller the commit interval, the more oftenthe Integration Service writes to the target database and the slower the overall performance.

    If you increase the commit interval, the number of times the Integration Service commits decreases and performanceimproves.

    When you increase the commit interval, consider the log file limits in the target database. If the commit interval istoo high, the Integration Service may fill the database log file and cause the session to fail.

    Therefore, weigh the benefit of increasing the commit interval against the additional time you would spendrecovering a failed session.

    Click the General Options settings in the session properties to review and adjust the commit interval.

    7.8 Disabling High Precision

    If a session runs with high precision enabled, disabling high precision might improve session performance.

    The Decimal datatype is a numeric datatype with a maximum precision of 28. To use a high precision Decimaldatatype in a session, configure the Integration Service to recognize this datatype by selecting Enable High Precisionin the session properties. However, since reading and manipulating the high precision datatype slows the IntegrationService, you can improve session performance by disabling high precision.

    When you disable high precision, the Integration Service converts data to a double. The Integration Service reads theDecimal row 3900058411382035317455530282 as 390005841138203 x 1013.

    Click the Performance settings in the session properties to enable high precision.

    7.9 Reducing Error Tracing

    To improve performance, you can reduce the number of log events generated by the Integration Service when it runsthe session. If a session contains a large number of transformation errors, and you do not need to correct them, setthe session tracing level to Terse. At this tracing level, the Integration Service does not write error messages or row-level information for reject data.

    If you need to debug the mapping and you set the tracing level to Verbose, you may experience significantperformance degradation when you run the session. Do not use Verbose tracing when you tune performance.

    The session tracing level overrides any transformation-specific tracing levels within the mapping. This is notrecommended as a long-term response to high levels of transformation errors.

    7.10 Removing Staging Areas

    When you use a staging area, the Integration Service performs multiple passes on the data. When possible, removestaging areas to improve performance. The Integration Service can read multiple sources with a single pass, whichmay alleviate the need for staging areas.

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    32/37

    7.11 Tips and Tricks

    A session specifies the location from where the data is to be taken, where the transformations are done and where

    the data is to be loaded. It has various properties that help us to schedule and run the job in the way we want.

    1. Partition the session: This creates many connections to the source and target, and loads data in parallel

    pipelines. Each pipeline will be independent of the other. But the performance of the session will not

    improve if the number of records is less. Also the performance will not improve if it does updates and

    deletes. So session partitioning should be used only if the volume of data is huge and the job is mainly

    insertion of data.

    2. Run the sessions in parallel rather than serial to gain time, if they are independent of each other.

    3. Drop constraints and indexes before we run session. Rebuild them after the session run completes.Dropping can be done in pre session script and Rebuilding in post session script. But if data is too much,

    dropping indexes and then rebuilding them etc. will be not possible. In such cases, stage all data, pre-create

    the index, use a transportable table space and then load into database.

    4. Use bulk loading, external loading etc. Bulk loading can be used only if the table does not have an index.

    5. In a session we have options to Treat rows as Data Driven, Insert, Update and Delete. If update strategies

    are used, then we have to keep it as Data Driven. But when the session does only insertion of rows into

    target table, it has to be kept as Insert to improve performance.

    6. Increase the database commit level (The point at which the Informatica server is set to commit data to the

    target table. For e.g. commit level can be set at every every 50,000 records)

    7. By avoiding built in functions as much as possible, we can improve the performance. E.g. For

    concatenation, the operator || is faster than the function CONCAT (). So use operators instead of

    functions, where possible. The functions like IS_SPACES (), IS_NUMBER (), IFF (), DECODE () etc.

    reduce the performance to a big extent in this order. Preference should be in the opposite order.

    8. String functions like substring, ltrim, and rtrim reduce the performance. In the sources, use delimited

    strings in case the source flat files or use varchar data type.

    9. Manipulating high precision data types will slow down Informatica server. So disable high precision.

    10. Localize all source and target tables, stored procedures, views, sequences etc. Try not to connect across

    synonyms. Synonyms and aliases slow down the performance.

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    33/37

    8.Optimizing the System

    8.1 Overview

    Often performance slows because the session relies on inefficient connections or an overloaded Integration Serviceprocess system. System delays can also be caused by routers, switches, network protocols, and usage by many users.

    Slow disk access on source and target databases, source and target file systems, and nodes in the domain can slowsession performance. Have the system administrator evaluate the hard disks on the machines.

    After you determine from the system monitoring tools that you have a system bottleneck, make the following globalchanges to improve the performance of all sessions:

    Improve network speed. Slow network connections can slow session performance. Have the system administratordetermine if the network runs at an optimal speed. Decrease the number of network hops between the IntegrationService process and databases.

    Use multiple CPUs. You can use multiple CPUs to run multiple sessions in parallel and run multiple pipelinepartitions in parallel.

    Reduce paging. When an operating system runs out of physical memory, it starts paging to disk to free physicalmemory. Configure the physical memory for the Integration Service process machine to minimize paging to disk.

    Use processor binding. In a multi-processor UNIX environment, the Integration Service may use a large amountof system resources. Use processor binding to control processor usage by the Integration Service process. Also, ifthe source and target database are on the same machine, use processor binding to limit the resources used by thedatabase.

    8.2 Improving Network Speed

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    34/37

    The performance of the Integration Service is related to network connections. A local disk can move data 5 to 20times faster than a network. Consider the following options to minimize network activity and to improve IntegrationService performance.

    If you use flat file as a source or target in a session and the Integration Service runs on a single node, store the fileson the same machine as the Integration Service to improve performance. When you store flat files on a machineother than the Integration Service, session performance becomes dependent on the performance of the network

    connections. Moving the files onto the Integration Service process system and adding disk space might improveperformance.

    If you use relational source or target databases, try to minimize the number of network hops between the source andtarget databases and the Integration Service process. Moving the target database onto a server system might improveIntegration Service performance.

    When you run sessions that contain multiple partitions, have the network administrator analyze the network andmake sure it has enough bandwidth to handle the data moving across the network from all partitions.

    8.3 Using Multiple CPUs

    Configure the system to use more CPUs to improve performance. Multiple CPUs allow the system to run multiple

    sessions in parallel as well as multiple pipeline partitions in parallel.

    However, additional CPUs might cause disk bottlenecks. To prevent disk bottlenecks, minimize the number ofprocesses accessing the disk. Processes that access the disk include database functions and operating systemfunctions. Parallel sessions or pipeline partitions also require disk access.

    8.4 Reducing Paging

    Paging occurs when the Integration Service process operating system runs out of memory for a particular operationand uses the local disk for memory. You can free up more memory or increase physical memory to reduce pagingand the slow performance that results from paging. Monitor paging activity using system tools.

    You might want to increase system memory in the following circumstances:

    You run a session that uses large cached lookups.

    You run a session with many partitions.

    If you cannot free up memory, you might want to add memory to the system.

    8.5 Using Processor Binding

    In a multi-processor UNIX environment, the Integration Service may use a large amount of system resources if yourun a large number of sessions. As a result, other applications on the machine may not have enough systemresources available. You can use processor binding to control processor usage by the Integration Service process

    node. Also, if the source and target database are on the same machine, use processor binding to limit the resourcesused by the database.

    In a Sun Solaris environment, the system administrator can create and manage a processor set using the psrsetcommand. The system administrator can then use the pbind command to bind the Integration Service to a processorset so the processor set only runs the Integration Service. The Sun Solaris environment also provides the psrinfocommand to display details about each configured processor and the psradm command to change the operationalstatus of processors. For more information, see the system administrator and Sun Solaris documentation.

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    35/37

    In an HP-UX environment, the system administrator can use the Process Resource Manager utility to control CPUusage in the system. The Process Resource Manager allocates minimum system resources and uses a maximum capof resources.

    In an AIX environment, system administrators can use the Workload Manager in AIX 5L to manage systemresources during peak demands. The Workload Manager can allocate resources and manage CPU, memory, and diskI/O bandwidth.

    9.Optimizing Database9.1 Tips and Tricks

    To gain the best Informatica performance, the database tables, stored procedures and queries used in Informatica

    should be tuned well.

    1. If the source and target are flat files, then they should be present in the system in which the Informatica

    server is present.

    2. Increase the network packet size.

    3. The performance of the Informatica server is related to network connections.

    Data generally moves across a network at less than 1 MB per second, whereas a local disk moves data five

    to twenty times faster. Thus network connections often affect on session performance. So avoid network

    connections.

    4. Optimize target databases.

  • 7/30/2019 50803329 Informatica PowerCenter 8 6 1 Performance Tuning

    36/37

    10.Optimizing the PowerCenter Components

    10.1 Overview

    You can optimize performance of the following PowerCenter components:

    PowerCenter repository

    Integration Service

    If you run PowerCenter on multiple machines, run the Repository Service and Integration Service on differentmachines. To load large amounts of data, run the Integration Service on the higher processing machine. Also, runthe Repository Service on the machine hosting the PowerCenter repository.

    10.2 Optimizing PowerCenter Repository Performance

    Complete the following tasks to improve PowerCenter repository performance:

    Ensure the PowerCenter repository is on the same machine as the Repository Service process.

    Order conditions in object queries.

    Use a single-node tablespace for the PowerCenter repository if you install it on a DB2 database.

    Location of the Repository Service Process and RepositoryYou can optimize the performance of a Repository Service that you configured without the high availability option.To optimize performance, ensure that the Repository Service process runs on the same machine where the repository

    database resides.

    Ordering Conditions in Object Queries

    When the Repository Service processes a parameter with multiple conditions, it processes them in the order youenter them. To receive expected results and improve performance, enter parameters in the order you want them torun.

    Using a Single-Node DB2 Database TablespaceYou can optimize repository performance on IBM DB2 EEE databases when you store a PowerCenter repository ina single-node tablespace. When setting up an IBM DB2 EEE database, the database administrator can define thedatabase on a single node.

    When the tablespace contains one node, the PowerCenter Client and Integration Service access the repository fasterthan if the repository tables exist on different database nodes.

    If you do not specify the tablespace name when you create, copy, or restore a repository, the DB2 system specifiesthe default tablespace for each repository table. The DB2 system may or may not specify a single-node tablespace.

    10.3 Optimiz