Informix SQL Performance Tuning Tips
|
|
|
- Helen Wilkinson
- 9 years ago
- Views:
Transcription
1 Informix SQL Performance Tuning Tips Jeff Filippi Integrated Data Consulting, LLC Session: B12 Tuesday, April 28, :40 05:40
2 Session: B12 Informix SQL Performance Tuning Tips Jeff Filippi Integrated Data Consulting, LLC International Informix Users Group 2-2-
3 Introduction 19 years of working with Informix products 14 years as an Informix DBA Worked for Informix for 5 years Certified Informix DBA Started my own company in 2001 specializing in Informix Database Administration consulting IBM Business Partner OLTP and Data warehouse systems Informix 4.x, 5.x., 7.x, 9.x, 10.x, 11.10, International Informix Users Group 3-3-
4 Overview Identify Problem SQL Statements Tracing SQL in Informix 11 Options Available with Set Explain & Reading sqexplain output with tuning examples Methods to use for Improving SQL Performance Know your Application in Tuning SQL Case Studies International Informix Users Group 4-4-
5 Identify Problem SQL Statements First you have to identify what SQL statements are the culprits in causing performance issues Use onstat g ntt to identify the last time read/writes occurred Gather slow SQL statements from onstats, 3 rd party tools like Server Studio, Cobrasonic, etc. Look at how many times SQL statements have been executed using SQL Statement Cache (onstat g ssc) Informix 11 tracing feature (SQLTRACE) Review with developers known problem areas in the application Verify update statistics are current Review what tables/indexes have the most reads International Informix Users Group 5-5-
6 Use SQL Statement Cache onstat g ssc Look at SQL's with a large number of executions. Saving even a second on a SQL statement that is executed 1 million times can make a difference in performance. International Informix Users Group 6-6-
7 Use SQL Statement Cache IBM Informix Dynamic Server Version HC2X3 -- On-Line -- Up 23 days 23:46: Kbytes Statement Cache Summary: #lrus currsize maxsize Poolsize #hits nolimit Statement Cache Entries: lru hash ref_cnt hits flag heap_ptr database user F bb ntlcom informix select descr, rowid, seq_nbr from fl_cntrl where uid in ( 'all', 'cschabel' ) and program_name in ( 'all', 'cr_inv_dl' ) and exc_type is not null order by seq_nbr F aa23bc20 ntlcom informix update state_tax set row_status = "V", updt_user_id =? where seq_nbr =? And ( rec_type = 6 or rec_type = 7) F a004f820 ntlcom informix select count ( *) from invoice_state where cde = "CORR" and seq_nbr =? F afa9ec20 ntlcom informix select int_comm, int_comm2, updt_user_id from invoice_cmnts where seq_nbr =? and extend ( updt_dte, year to second) = ( select max ( extend ( updt_dte, year to second)) from invoice_cmnts where seq_nbr =?) International Informix Users Group 7-7-
8 Review number of reads on table/index Use the table SYSPTPROF to look at the buffer reads, page reads, sequencial scans. SELECT tabname[1,25], bufreads, pagreads, isreads, seqscans FROM sysmaster:sysptprof ORDER BY 2 desc International Informix Users Group 8-8-
9 Review number of reads on table/index Cont'd tabname bufreads pagreads isreads trnsit_ trnsit_ trnsit_ im_p_route_ ed_rl_event loc_sup_data ed_rl_event_ _ ed_rl_event_ im_mv_event International Informix Users Group 9-9-
10 After adding index Reduced bufreads tabname bufreads pagreads isreads 140_ cntrct_num _ trnsit trnsit_ix im_p_route_ International Informix Users Group 10-10
11 Tracing SQL in Informix 11 There are more ways to find information to tune in Informix 11 utilizing the tracing of SQL onconfig parameter: SQLTRACE SQL Admin API Ability to trace by database (11.50XC3) Open Admin Tool (OAT) International Informix Users Group 11-11
12 Tracing SQL in Informix 11 There are a couple ways to turn tracing on in Informix 11 Onconfig parameter: SQLTRACE level = [off,low,med,high] ntraces = [# of traces] size = [size of each trace buffer in kb] mode = [global,user] Example: SQLTRACE level=low,ntraces=1000,size=2,mode= global (This allows me to trace the last 1000 sql statements of the instance) Open Admin Tool (OAT) International Informix Users Group 12-12
13 Tracing SQL in Informix Improved SQL tracing with the SQL Admin API in Informix 11.50FC3 You can use these new commands to manage SQL tracing by databases. SET SQL TRACING DATABASE ADD {Database} CLEAR LIST REMOVE {Database} You can also suspend and resume all tracing at the server without deallocating any resources. SET SQL TRACING SUSPEND/RESUME International Informix Users Group 13-13
14 Tracing SQL in Informix 11 (cont d) Here is how you enable tracing thru the sysadmin database by running the following command: EXECUTE FUNCTION task( set sql tracing on,1000,2, low, global ) To validate that tracing is turned on by: onstat g his This option prints information about the SQLTRACE configuration parameter. International Informix Users Group 14-14
15 Tracing SQL in Informix 11 (cont d) onstat g his IBM Informix Dynamic Server Version HC2X3 -- On-Line -- Up 25 days 23:44: Kbytes Statement history: Trace Level Low Trace Mode Global Number of traces 3000 Current Stmt ID Trace Buffer size 2024 Duration of buffer 8241 Seconds Trace Flags 0x Control Block 9df53018 International Informix Users Group 15-15
16 Tracing SQL in Informix 11 (cont d) Statement # 9df68cb0 Database: 0x Statement text: SELECT * FROM invc_state WHERE seq_nbr =? Iterator/Explain ================ ID Left Right Est Cost Est Rows Num Rows Type Index Scan Statement information: Sess_id User_id Stmt Type Finish Time Run Time SELECT 18:44: International Informix Users Group 16-16
17 Tracing SQL in Informix 11 (cont d) Statement Statistics: Page Buffer Read Buffer Page Buffer Write Read Read % Cache IDX Read Write Write % Cache Lock Lock LK Wait Log Num Disk Memory Requests Waits Time (S) Space Sorts Sorts Sorts B Total Total Avg Max Avg I/O Wait Avg Rows Executions Time (S) Time (S) Time (S) IO Wait Time (S) Per Sec Estimated Estimated Actual SQL ISAM Isolation SQL Cost Rows, Rows Error Error Level Memory LC International Informix Users Group 17-17
18 Tracing SQL in Informix 11 (cont d) You can also get information on the tracing thru the syssqltrace table in the sysmaster database. Ex. {# of queries that ran > 2 seconds) SELECT count(*) FROM syssqltrace WHERE sql_totaltime > 2; Another useful table is the syssqltrace_iter which gives information in the form of an iteration tree for each SQL. It allows you to identify which part of the query plan took the most time to run. International Informix Users Group 18-18
19 Use Open Admin Tool (OAT) Use the Open Admin Tool to find slow SQL statements. Under System Reports there is an option to show the 5 slowest SQL s. International Informix Users Group 19-19
20 Use Open Admin Tool (OAT) cont d International Informix Users Group 20-20
21 Options Available with Set Explain Optimizer Directives AVOID_EXECUTE Introduced in Informix 9.30 Generate query plan without executing SQL, useful for getting query plans for inserts, updates and delete where data is manipulated, but you do not want to change data Example: set explain on AVOID_EXECUTE; SQL Statement International Informix Users Group 21-21
22 Options Available with Set Explain Set Explain Enhancements Another improvement with Informix is that you can turn on/off explain statistics thru the onconfig parameter EXPLAIN_STAT. 0 Disables the display of query statistics 1 Enables the display of query statistics FYI, this is an undocumented feature in Informix 10. You can also set it with the following statement: SET EXPLAIN STATISTICS When this is enabled, the inclusion of the Query Statistics section in the explain output file. It shows the query plan s estimated number of rows and the actual number of rows returned. International Informix Users Group 22-22
23 Options Available with Set Explain - Query Statistics QUERY: select * from partsupp where ps_partkey >= 1 and ps_partkey <= 100 and ps_suppkey >= 0 and ps_suppkey <= and ps_availqty >= 1000 and ps_availqty <= Estimated Cost: 49 Estimated # of Rows Returned: 360 1) informix.partsupp: INDEX PATH (1) Index Keys: ps_partkey ps_suppkey ps_availqty (Key-First) (Serial, fragments: ALL) Lower Index Filter: informix.partsupp.ps_partkey >= 1 AND (informix.partsupp.ps_availqty >= 1000 ) AND (informix.partsupp.ps_suppkey >= 0 ) Upper Index Filter: informix.partsupp.ps_partkey <= 100 AND (informix.partsupp.ps_availqty <= ) AND (informix.partsupp.ps_suppkey <= ) Index Key Filters: (informix.partsupp.ps_availqty >= 1000 ) AND (informix.partsupp.ps_availqty <= ) AND (informix.partsupp.ps_suppkey <= ) AND (informix.partsupp.ps_suppkey >= 0 ) Query statistics: Table map : Internal name Table name t1 partsupp type table rows_prod est_rows rows_scan time est_cost scan t :00:00 49 International Informix Users Group 23-23
24 Dynamic Set Explain Dynamically set explain on for a session (Introduced in 9.40) Onmode Y {session id} {0 1} (0 Off/1 On) Output is to a file sqexplain.out.{session id} With Informix 11 there are a couple changes: An additional value 2 (explain without statistics for session, displays query plan only) Also you can specify the file name and directory that you want the explain output to be sent: Onmode Y {session id} {0 1 2} {filename} This is a great feature to allow you to see the SQL statements executed and the explain plan for each SQL statement. NOTE: make sure that you only have this turned on for a short period of time, it creates a large file. International Informix Users Group 24-24
25 Set Explain Output Add set explain on before the statement you want to examine Starting in Informix you can specify the directory that you want the file to go: Set explain file to filename Review the set explain output: UNIX: The file sqexplain.out will be generated in the directory that you run the query from Windows: Look for a file username.out in the directory on the UNIX server %INFORMIXDIR%\sqexpln International Informix Users Group 25-25
26 Set explain output Query Displays the executed query and indicates whether set optimization was set to high or low Directives Followed Lists any directives used for the query Estimated Cost An estimated of the amount of work for the query. The number does not translate into time. Only compare to same query not others. Estimated number of rows returned An estimate of the number of rows returned, number based on information from system catalog tables International Informix Users Group 26-26
27 Set explain output cont d Numbered List The order in which tables are accessed, followed by the access method (index or sequential scan) Index Keys The columns used as filters or indexes Query Statistics Enabled by onconfig parameter EXPLAIN_STAT International Informix Users Group 27-27
28 Examples of Explain Plans The following slides will show tuning of SQL based on the following scenarios: Functions causing index to not be used Criteria from views causing sequential scans Use of Directives Use of substrings in queries Use of functions in queries Using a better index (Creation of new index) International Informix Users Group 28-28
29 Function causes index to not be used QUERY: SELECT DISTINCT BUSINESS_UNIT, VOUCHER_ID, INVOICE_ID, GROSS_AMT, INVOICE_DT, VENDOR_NAME_SHORT, VENDOR_ID, NAME1, VOUCHER_STYLE, ENTRY_STATUS_SRH FROM PS_VOUCHER_SRCH_VW WHERE BUSINESS_UNIT= GH' AND UPPER(INVOICE_ID) LIKE UPPER('KURT') '%' ESCAPE '\' ORDER BY INVOICE_ID, BUSINESS_UNIT, VOUCHER_ID DESC FOR READ ONLY Estimated Cost: Estimated # of Rows Returned: 1 Temporary Files Required For: Order By 1) sysadm.ps_vendor: SEQUENTIAL SCAN 2) sysadm.ps_voucher: INDEX PATH Filters: (sysadm.ps_voucher.entry_status IN ('P', 'R', 'T' )AND UPPER(sysadm.ps_voucher.invoice_id ) LIKE 'KURT%' ESCAPE '\' ) (1) Index Keys: vendor_id vendor_setid business_unit (Serial, fragments: ALL) Lower Index Filter: ((sysadm.ps_voucher.vendor_id = sysadm.ps_vendor.vendor_id AND sysadm.ps_voucher.vendor_setid = sysadm.ps_vendor.setid ) AND sysadm.ps_voucher.business_unit = GH' ) NESTED LOOP JOIN International Informix Users Group 29-29
30 Resolution: Function causes index to not be used QUERY: SELECT DISTINCT BUSINESS_UNIT, VOUCHER_ID, INVOICE_ID, GROSS_AMT, INVOICE_DT, VENDOR_NAME_SHORT, VENDOR_ID, NAME1, VOUCHER_STYLE, ENTRY_STATUS_SRH FROM PS_VOUCHER_SRCH_VW WHERE BUSINESS_UNIT= GH' AND INVOICE_ID LIKE 'KURT' '%' ESCAPE '\' ORDER BY INVOICE_ID, BUSINESS_UNIT, VOUCHER_ID DESC FOR READ ONLY Estimated Cost: Estimated # of Rows Returned: 1 Temporary Files Required For: Order By 1) sysadm.ps_voucher: INDEX PATH Filters: sysadm.ps_voucher.entry_status IN ('P', 'R', 'T' ) (1) Index Keys: business_unit invoice_id (Serial, fragments: ALL) Lower Index Filter: (sysadm.ps_voucher.business_unit = GH' AND sysadm.ps_voucher.invoice_id LIKE 'KURT%' ESCAPE '\' ) 2) sysadm.ps_vendor: INDEX PATH (1) Index Keys: vendor_id setid (Serial, fragments: ALL) Lower Index Filter: (sysadm.ps_voucher.vendor_id = sysadm.ps_vendor.vendor_id AND sysadm.ps_voucher.vendor_setid = sysadm.ps_vendor.setid ) NESTED LOOP JOIN International Informix Users Group 30-30
31 Resolution: Function causes index to not be used Another way is to add a function which converts a character to all upper case and change the index to include the use of the function. CREATE FUNCTION upper_idx(char_up char(20)) RETURNING char(20) WITH (not variant); DEFINE char_out char(20); LET char_out = upper(char_up); RETURN char_out; END FUNCTION; CREATE INDEX upper_idx on ps_vendor(business_unit, (upper_idx(invoice_id)) USING btree; International Informix Users Group 31-31
32 Criteria used to select from view causes sequencial scans QUERY: SELECT BUSINESS_UNIT,INV_ITEM_ID,CM_BOOK,DT_TIMESTAMP,SEQ_NBR, CM_DT_TIMESTAMP_A,CM_SEQ_NBR_A,CM_ORIG_TRANS_DATE,CONSIGNED_FLAG, STORAGE_AREA,INV_LOT_ID,SERIAL_ID,CM_RECEIPT_QTY,CM_DEPLETE_QTY, CM_ONHAND_QTY FROM PS_CM_ONHAND_VW WHERE BUSINESS_UNIT = 'RPRO' AND INV_ITEM_ID = '05-04-CVC-6-KINS' AND CM_BOOK = 'FIN' AND CONSIGNED_FLAG = 'N' AND CM_ONHAND_QTY > 0 ORDER BY CM_ORIG_TRANS_DATE, CM_DT_TIMESTAMP_A, CM_SEQ_NBR_A FOR READ ONLY Estimated Cost: 8425 Estimated # of Rows Returned: 1 Temporary Files Required For: Order By Group By 1) sysadm.ps_cm_deplete: SEQUENTIAL SCAN 2) sysadm.ps_cm_receipts: INDEX PATH (1) Index Keys: business_unit inv_item_id cm_book dt_timestamp seq_nbr cm_dt_timestamp_a cm_seq_nbr_a (Serial, fragments: ALL) Lower Index Filter: ((((((sysadm.ps_cm_receipts.dt_timestamp = sysadm.ps_cm_deplete.cm_dt_timestamp AND sysadm.ps_cm_receipts.cm_dt_timestamp_a = sysadm.ps_cm_deplete.cm_dt_timestamp_a ) AND sysadm.ps_cm_receipts.inv_item_id = sysadm.ps_cm_deplete.inv_item_id ) AND sysadm.ps_cm_receipts.seq_nbr = sysadm.ps_cm_deplete.cm_seq_nbr ) AND sysadm.ps_cm_receipts.cm_seq_nbr_a = sysadm.ps_cm_deplete.cm_seq_nbr_a ) AND sysadm.ps_cm_receipts.business_unit = sysadm.ps_cm_deplete.business_unit ) AND sysadm.ps_cm_receipts.cm_book = sysadm.ps_cm_deplete.cm_book ) NESTED LOOP JOIN International Informix Users Group 32-32
33 Resolution to Criteria used for view causes sequential scans QUERY: SELECT BUSINESS_UNIT,INV_ITEM_ID,CM_BOOK,DT_TIMESTAMP,SEQ_NBR, CM_DT_TIMESTAMP_A,CM_SEQ_NBR_A,CM_ORIG_TRANS_DATE,CONSIGNED_FLAG, STORAGE_AREA,INV_LOT_ID,SERIAL_ID,CM_RECEIPT_QTY,CM_DEPLETE_QTY, CM_ONHAND_QTY FROM PS_CM_ONHAND_VW WHERE BUSINESS_UNIT = 'RPRO' AND INV_ITEM_ID = '04X35-X-042' AND CM_BOOK = 'FIN' AND CONSIGNED_FLAG = 'N' --AND CM_ONHAND_QTY > 0 ORDER BY CM_ORIG_TRANS_DATE, CM_DT_TIMESTAMP_A, CM_SEQ_NBR_A FOR READ ONLY Estimated Cost: 10 Estimated # of Rows Returned: 1 Temporary Files Required For: Order By Group By 1) sysadm.ps_cm_deplete: INDEX PATH (1) Index Keys: business_unit inv_item_id cm_book dt_timestamp seq_nbr cm_dt_timestamp cm_seq_nbr cm_dt_timestamp_a cm_seq_nbr_a (Serial, fragments: ALL) Lower Index Filter: ((sysadm.ps_cm_deplete.inv_item_id = '04X35-X-042' AND sysadm.ps_cm_deplete.business_unit = 'RPRO' ) AND sysadm.ps_cm_deplete.cm_book = 'FIN' ) 2) sysadm.ps_cm_receipts: INDEX PATH Filters: sysadm.ps_cm_receipts.consigned_flag = 'N' (1) Index Keys: business_unit inv_item_id cm_book dt_timestamp seq_nbr cm_dt_timestamp_a cm_seq_nbr_a (Serial, fragments: ALL) Lower Index Filter: ((((((sysadm.ps_cm_receipts.inv_item_id = sysadm.ps_cm_deplete.inv_item_id AND sysadm.ps_cm_receipts.dt_timestamp = sysadm.ps_cm_deplete.cm_dt_timestamp ) AND sysadm.ps_cm_receipts.seq_nbr = sysadm.ps_cm_deplete.cm_seq_nbr ) AND sysadm.ps_cm_receipts.cm_dt_timestamp_a = sysadm.ps_cm_deplete.cm_dt_timestamp_a ) AND sysadm.ps_cm_receipts.cm_seq_nbr_a = sysadm.ps_cm_deplete.cm_seq_nbr_a ) AND sysadm.ps_cm_receipts.business_unit = sysadm.ps_cm_deplete.business_unit ) AND sysadm.ps_cm_receipts.cm_book = sysadm.ps_cm_deplete.cm_book ) NESTED LOOP JOIN International Informix Users Group 33-33
34 View used in query CREATE VIEW "sysadm".ps_cm_onhand_vw (business_unit,inv_item_id,cm_book,dt_timestamp,seq_nbr,cm_dt_timestamp_a,. cm_onhand_qty) AS SELECT x1.business_unit,x1.inv_item_id,x1.cm_book,x1.cm_dt_timestamp,. (x0.qty_base - sum(x1.qty_base) ) FROM "sysadm".ps_cm_receipts x0,"sysadm".ps_cm_deplete x1 WHERE (((((((x0.business_unit = x1.business_unit ) AND (x0.inv_item_id = x1.inv_item_id ) ) AND (x0.cm_book = x1.cm_book) ) AND (x0.dt_timestamp = x1.cm_dt_timestamp ) ) AND (x0.seq_nbr = x1.cm_seq_nbr ) ) AND (x0.cm_dt_timestamp_a = x1.cm_dt_timestamp_a) ) AND (x0.cm_seq_nbr_a = x1.cm_seq_nbr_a ) ) GROUP BY x1.business_unit,x1.inv_item_id,x1.cm_book,x1.cm_dt_timestamp, x1.cm_seq_nbr,x0.cm_dt_timestamp_a,x0.cm_seq_nbr_a, x0.cm_orig_trans_date,x0.consigned_flag,x0.storage_area, x0.inv_lot_id,x0.serial_id,x0.qty_base ; International Informix Users Group 34-34
35 Use of directives for Queries QUERY: SELECT D.BUSINESS_UNIT, D.VENDOR_SETID, E.VENDOR_ID, E.NAME1, E.NAME2, VNDR_LOC FROM PS_PAYMENT_TBL A, PS_PYMNT_VCHR_XREF B, PS_VOUCHER_LINE C, PS_VOUCHER D, PS_VENDOR E, PS_VENDOR_LOC F WHERE A.BANK_SETID = B.BANK_SETID AND A.BANK_CD = B.BANK_CD AND A.BANK_ACCT_KEY = B.BANK_ACCT_KEY AND A.PYMNT_ID = B.PYMNT_ID AND B.BUSINESS_UNIT = C.BUSINESS_UNIT AND B.VOUCHER_ID = C.VOUCHER_ID AND C.BUSINESS_UNIT = D.BUSINESS_UNIT AND C.VOUCHER_ID = D.VOUCHER_ID AND E.VENDOR_ID = D.VENDOR_ID AND A.PYMNT_STATUS = 'P' AND A.PYMNT_DT BETWEEN ' ' AND ' ' AND D.BUSINESS_UNIT IN ('CAT', SNCPY') AND E.SETID = F.SETID AND E.VENDOR_ID = F.VENDOR_ID AND C.WTHD_CD <> F.WTHD_CD Estimated Cost: Estimated # of Rows Returned: 1 International Informix Users Group 35-35
36 Use of Directive for Queries cont d 1) informix.f: INDEX PATH Filters: informix.f.effdt = <subquery> (1) Index Keys: setid vendor_id vndr_loc effdt (desc) eff_status (Serial, fragments: ALL) 2) informix.e: INDEX PATH (1) Index Keys: vendor_id setid (Serial, fragments: ALL) Lower Index Filter: (informix.e.vendor_id = informix.f.vendor_id AND informix.e.setid = informix.f.setid ) NESTED LOOP JOIN 3) informix.d: INDEX PATH Filters: informix.d.business_unit IN ('CAT', SNCPY' ) (1) Index Keys: vendor_id vendor_setid entry_status (Serial, fragments: ALL) Lower Index Filter: informix.d.vendor_id = informix.f.vendor_id NESTED LOOP JOIN 4) informix.c: INDEX PATH Filters: informix.c.wthd_cd!= informix.f.wthd_cd (1) Index Keys: business_unit voucher_id (desc) voucher_line_num (Serial, fragments: ALL) Lower Index Filter: (informix.c.voucher_id = informix.d.voucher_id AND informix.c.business_unit = informix.d.business_unit ) NESTED LOOP JOIN 5) informix.b: INDEX PATH (1) Index Keys: business_unit voucher_id (desc) pymnt_id bank_cd bank_acct_key (Serial, fragments: ALL) Lower Index Filter: (informix.b.voucher_id = informix.c.voucher_id AND informix.b.business_unit = informix.d.business_unit ) NESTED LOOP JOIN 6) informix.a: INDEX PATH Filters: ((informix.a.pymnt_dt >= 01/01/2003 AND informix.a.pymnt_status = 'P' ) AND informix.a.pymnt_dt <= 12/31/2003 ) (1) Index Keys: pymnt_id (desc) bank_acct_key bank_cd bank_setid (Serial, fragments: ALL) Lower Index Filter: (((informix.a.pymnt_id = informix.b.pymnt_id AND informix.a.bank_acct_key = informix.b.bank_acct_key ) AND informix.a.bank_cd = informix.b.bank_cd ) AND informix.a.bank_setid = informix.b.bank_setid ) NESTED LOOP JOIN International Informix Users Group 36-36
37 Use of Directive for Queries cont d QUERY: SELECT --+ORDERED D.BUSINESS_UNIT, D.VENDOR_SETID, E.VENDOR_ID, E.NAME1, E.NAME2, B.VNDR_LOC FROM PS_PAYMENT_TBL A, PS_PYMNT_VCHR_XREF B, PS_VOUCHER_LINE C, PS_VOUCHER D, PS_VENDOR E, PS_VENDOR_LOC F WHERE A.BANK_SETID = B.BANK_SETID AND A.BANK_CD = B.BANK_CD AND A.BANK_ACCT_KEY = B.BANK_ACCT_KEY AND A.PYMNT_ID = B.PYMNT_ID AND B.BUSINESS_UNIT = C.BUSINESS_UNIT AND B.VOUCHER_ID = C.VOUCHER_ID AND C.BUSINESS_UNIT = D.BUSINESS_UNIT AND C.VOUCHER_ID = D.VOUCHER_ID AND E.VENDOR_ID = D.VENDOR_ID AND A.PYMNT_STATUS = 'P' AND A.PYMNT_DT BETWEEN ' ' AND ' ' AND D.BUSINESS_UNIT IN ('CAT', SNCPY') AND E.SETID = F.SETID AND E.VENDOR_ID = F.VENDOR_ID AND C.WTHD_CD <> F.WTHD_CD DIRECTIVES FOLLOWED: ORDERED DIRECTIVES NOT FOLLOWED: Estimated Cost: (Cost of Original Query: 57005) Estimated # of Rows Returned: 1 International Informix Users Group 37-37
38 Use of Directive for Queries cont d 1) informix.a: INDEX PATH Filters: informix.a.pymnt_status = 'P' (1) Index Keys: pymnt_dt name1 remit_setid currency_pymnt (Serial, fragments: ALL) Lower Index Filter: informix.a.pymnt_dt >= 01/01/2003 Upper Index Filter: informix.a.pymnt_dt <= 12/31/2003 2) informix.b: INDEX PATH Filters: informix.b.business_unit IN ('CAT', SNCPY' ) (1) Index Keys: bank_setid bank_cd bank_acct_key pymnt_id (Serial, fragments: ALL) Lower Index Filter: (((informix.a.pymnt_id = informix.b.pymnt_id AND informix.a.bank_acct_key = informix.b.bank_acct_key ) AND informix.a.bank_cd = informix.b.bank_cd ) AND informix.a.bank_setid = informix.b.bank_setid ) NESTED LOOP JOIN 3) informix.c: INDEX PATH (1) Index Keys: business_unit voucher_id (desc) voucher_line_num (Serial, fragments: ALL) Lower Index Filter: (informix.b.voucher_id = informix.c.voucher_id AND informix.b.business_unit = informix.c.business_unit ) NESTED LOOP JOIN 4) informix.d: INDEX PATH (1) Index Keys: voucher_id (desc) business_unit invoice_id (Serial, fragments: ALL) Lower Index Filter: (informix.b.voucher_id = informix.d.voucher_id AND informix.b.business_unit = informix.d.business_unit ) NESTED LOOP JOIN 5) informix.e: INDEX PATH (1) Index Keys: vendor_id setid (Serial, fragments: ALL) Lower Index Filter: informix.e.vendor_id = informix.d.vendor_id NESTED LOOP JOIN 6) informix.f: INDEX PATH Filters: (informix.c.wthd_cd!= informix.f.wthd_cd AND informix.f.effdt = <subquery> ) (1) Index Keys: setid vendor_id vndr_loc effdt (desc) eff_status (Serial, fragments: ALL) Lower Index Filter: (informix.e.vendor_id = informix.f.vendor_id AND informix.e.setid = informix.f.setid ) NESTED LOOP JOIN International Informix Users Group 38-38
39 Use of substrings (Best index not being used) QUERY: SELECT ACLNL.MONETARY_AMOUNT FROM PS_CM_ACCTG_LINE ACLNL WHERE ACLNL.BUSINESS_UNIT = ABCDE' AND ACLNL.PRODUCTION_ID = '12334' AND SUBSTR(ACLNL.ACCOUNT,1,3) IN ( '085', '334', '072' ) Estimated Cost: Estimated # of Rows Returned: 1 1) informix.aclnl: INDEX PATH Filters: (informix.aclnl.production_id = '12334' AND SUBSTR (informix.aclnl.account, 1, 3 ) IN ('085', '334', '072' )) (1) Index Keys: business_unit cm_book gl_distrib_status budget_hdr_status cm_iu_status (Serial, fragments: ALL) Lower Index Filter: informix.aclnl.business_unit = ABCDE' International Informix Users Group 39-39
40 Resolution for Use of substrings QUERY: SELECT ACLNL.MONETARY_AMOUNT FROM PS_CM_ACCTG_LINE ACLNL WHERE ACLNL.BUSINESS_UNIT = ABCDE' AND ACLNL.PRODUCTION_ID = '12334' AND (ACLNL.ACCOUNT matches '085*' OR ACLNL.ACCOUNT matches '334*' OR ACLNL.ACCOUNT matches '072*' ) Estimated Cost: 3 Estimated # of Rows Returned: 1 1) informix.aclnl: INDEX PATH (1) Index Keys: business_unit production_id account (Key-First) (Serial, fragments: ALL) Lower Index Filter: (informix.aclnl.production_id = '12334' AND informix.aclnl.business_unit = ABCDE' ) Key-First Filters: (((informix.aclnl.account MATCHES '085*' OR informix.aclnl.account MATCHES '334*' ) OR informix.aclnl.account MATCHES '072*' ) ) International Informix Users Group 40-40
41 Use of Functions in Queries cause specific Indexes not be used QUERY: SELECT od.order_id AS order_id,od.club_model_id AS club_model_id,od.purchase_type_cd AS purchase_type_cd,od.order_status_cd AS order_status_cd, EXTEND(od.create_ts, YEAR TO DAY) AS create_ts,price AS price, shipping_amt AS shipping_amt,od.session_id AS session_id FROM order_detail od, order_header oh WHERE oh.source_id!= -1 AND oh.source_id IS NOT NULL AND oh.source_id!= AND EXTEND(od.create_ts, YEAR TO DAY) = ' AND od.order_id = oh.order_id AND club_model_id = 10 AND (purchase_type_cd = 'CLUB' OR purchase_type_cd = 'SEYMOS' OR purchase_type_cd = 'DCSSORC' OR purchase_type_cd = 'SHVSSORC' OR purchase_type_cd = 'DDVSSORC' OR purchase_type_cd = 'HSACNUF') Estimated Cost: Estimated # of Rows Returned: International Informix Users Group 41-41
42 Use of Functions in Queries causes specific Indexes not be used 1) informix.od: INDEX PATH Filters: (EXTEND (informix.od.create_ts,year to day) = datetime( ) year to day AND (((((informix.od.purchase_type_cd = 'CLUB' OR informix.od.purchase_type_cd = 'SEYMOS' ) OR informix.od.purchase_type_cd = 'DCSSORC' ) OR informix.od.purchase_type_cd = 'SHVSSORC' ) OR informix.od.purchase_type_cd = 'DDVSSORC' ) OR informix.od.purchase_type_cd = 'HSACNUF' ) ) (1) Index Keys: club_model_id (Serial, fragments: ALL) Lower Index Filter: informix.od.club_model_id = 10 2) informix.oh: INDEX PATH Filters: (informix.oh.source_id!= -1 AND (informix.oh.source_id IS NOT NULL AND informix.oh.source_id!= ) ) (1) Index Keys: order_id (Serial, fragments: ALL) Lower Index Filter: informix.oh.order_id = informix.od.order_id NESTED LOOP JOIN International Informix Users Group 42-42
43 Resolution to Use of Functions in Queries QUERY: SELECT od.order_id AS order_id,od.club_model_id AS club_model_id, od.purchase_type_cd AS purchase_type_cd,od.order_status_cd AS order_status_cd, EXTEND(od.create_ts, YEAR TO DAY) AS create_ts,price AS price, shipping_amt ASshipping_amt,od.session_id AS session_id FROM order_detail od, order_header oh WHERE oh.source_id!= -1 AND oh.source_id IS NOT NULL AND oh.source_id!= AND (od.create_ts >= ' :00: AND od.create_ts <= ' :59:59.999') AND od.order_id = oh.order_id AND club_model_id = 10 AND (purchase_type_cd = 'CLUB' OR purchase_type_cd = 'SEYMOS' OR purchase_type_cd = 'DCSSORC' OR purchase_type_cd = 'SHVSSORC' OR purchase_type_cd = 'DDVSSORC' OR purchase_type_cd = 'HSACNUF') Estimated Cost: 2 (Original Query Cost: ) Estimated # of Rows Returned: 1 International Informix Users Group 43-43
44 Resolution to Use of Functions in Queries 1) informix.od: INDEX PATH (1) Index Keys: create_ts purchase_type_cd order_status_cd club_model_id (Key-First) (Serial, fragments: ALL) Lower Index Filter: informix.od.create_ts >= datetime( :00:00.000) year to fraction(3) Upper Index Filter: informix.od.create_ts <= datetime( :59:59.999) year to fraction(3) Key-First Filters: ((((((informix.od.purchase_type_cd = 'CLUB' OR informix.od.purchase_type_cd = 'SEYMOS' ) OR informix.od.purchase_type_cd = 'DCSSORC' ) OR informix.od.purchase_type_cd = 'SHVSSORC' ) OR informix.od.purchase_type_cd = 'DDVSSORC' ) OR informix.od.purchase_type_cd = 'HSACNUF' ) ) AND (informix.od.club_model_id = 10 ) 2) informix.oh: INDEX PATH Filters: (informix.oh.source_id!= -1 AND (informix.oh.source_id IS NOT NULL AND informix.oh.source_id!= ) ) (1) Index Keys: order_id (Serial, fragments: ALL) Lower Index Filter: informix.oh.order_id = informix.od.order_id NESTED LOOP JOIN International Informix Users Group 44-44
45 Using a better index QUERY: select club_model_id, order_status_cd, count(distinct order_id) as order_count from order_detail where create_ts >= ' :00: and create_ts < ' :00:00.000' and purchase_type_cd = 'CASH' and order_status_cd not in ('REJ', ACCP') group by 1,2 order by 1,2 Estimated Cost: 407 Estimated # of Rows Returned: 1 Temporary Files Required For: Order By Group By 1) informix.order_detail: INDEX PATH Filters: (informix.order_detail.create_ts >= datetime( :00:00.000) year to fraction(3) AND (informix.order_detail.create_ts < datetime( :00:00.000) year to fraction(3) AND informix.order_detail.order_status_cd NOT IN ( REJ', ACCP' )) ) (1) Index Keys: purchase_type_cd (Serial, fragments: ALL) Lower Index Filter: informix.order_detail.purchase_type_cd = 'CASH' International Informix Users Group 45-45
46 Resolution to Using a better index QUERY: (AFTER ADDING A NEW INDEX) select club_model_id, order_status_cd, count(distinct order_id) as order_count from order_detail where create_ts >= ' :00:00.000' and create_ts < ' :00:00.000' and purchase_type_cd = 'CASH' and order_status_cd not in ('REJ', ACCP') group by 1,2 order by 1,2 Estimated Cost: 3 Estimated # of Rows Returned: 1 Temporary Files Required For: Order By Group By 1) informix.order_detail: INDEX PATH (1) Index Keys: create_ts purchase_type_cd order_status_cd club_model_id (Key-First) (Serial, fragments: ALL) Lower Index Filter: informix.order_detail.create_ts >= datetime( :00:00.000) year to fraction(3) Upper Index Filter: informix.order_detail.create_ts < datetime( :00:00.000) year to fraction(3) Key-First Filters: (informix.order_detail.order_status_cd NOT IN ('REJ', ACCP' )) AND (informix.order_detail.purchase_type_cd = 'CASH' International Informix Users Group 46-46
47 Methods to use for Improving SQL Performance Utilize UNIONS when you have OR in where clause Utilize temp tables in optimizing queries by splitting the query into multiple queries Utilize PDQPRIORITY Utilize DS_NONPDQ_QUERY_MEM (V 9.40/10.00) Fragment tables (Understand the use of the data) to eliminate fragments from selection of the data Utilize external directives (V 10.00) International Informix Users Group 47-47
48 Utilize Unions SELECT a. _template_id, b.description, a.club_model_id, a. _log_id, efd.field_id FROM _log a, _template b, _field_data efd WHERE a. _template_id = b. _template_id AND a. _template_id = efd. _template_id AND efd. _log_id = a. _log_id AND efd.field_id in (561, 558) AND a.club_model_id in ('1', '2') AND a. _template_id in ('275','128') UNION SELECT a. _template_id, b.description, a.club_model_id, 0 as _log_id, 0 as field_id FROM _log a, _template b WHERE a. _template_id = b. _template_id AND a.club_model_id in ('1', '2') AND a. _template_id in ('125','2171') UNION SELECT a. _template_id, b.description, a.club_model_id, 1 as _log_id, 1 as field_id FROM _log a, _template b WHERE a. _template_id = b. _template_id AND a.club_model_id in ( 3', 4') AND a. _template_id = '2152'; International Informix Users Group 48-48
49 Utilize Temp Tables SET PDQPRIORITY 100; SELECT acct_n, gender FROM v_master WHERE acct_n MATCHES 90* AND mbr_phase_cde IN ('E','F','M','R') INTO TEMP tmp_v_master WITH NO LOG; NOTE: With V11.10, you can globally set the onconfig parameter TEMPTAB_NOLOG 0 Off (Enable logical logging on temp tables) 1 On (Disable logical logging on temp tables) CREATE INDEX idx_vidmaster ON tmp_v_master(acct_n); UPDATE STATISTICS LOW FOR TABLE tmp_v_master; NOTE: With V11.10 you no longer need to run update statistics on a temp table SELECT pull, equip, type_equip FROM cat_pull WHERE equip in ('S','W','T','M') INTO TEMP temp_cat_pull WITH NO LOG; CREATE INDEX idx_cat_pull ON temp_cat_pull(pull, equip); UPDATE STATISTICS LOW FOR TABLE temp_cat_pull; SELECT --+ORDERED account, m.gender, c.type_equip, FROM v_trans v, tmp_v_master m, temp_cat_pull c WHERE cntrl_num >= AND cntrl_num < AND m.acct_n = v.account AND (v.selection = c.pulland v.equip = c.equip) AND (uimm > 0 OR upos > 0 OR udis > 0 OR ubon > 0 OR udoc > 0 OR ugaf > 0 OR uxdoc > 0 OR ues > 0 OR ufso > 0 OR urain > 0 OR ufree > 0) INTO TEMP tst WITH NO LOG; International Informix Users Group 49-49
50 Utilize PDQPRIORITY SET PDQPRIORITY 100; SELECT accnt, pc, cntrl_wd, mfree, uauto, salestype FROM vid_tran WHERE substr(accnt,11,1) = '7' AND (magz <> '' OR magz IS NOT NULL) AND (pc LIKE 'BV1%' OR pc LIKE 'DA2%' OR pc LIKE 'DVM%' ) AND (cntrl_wd BETWEEN AND ) Estimated Cost: Estimated # of Rows Returned: Maximum Threads: 3 International Informix Users Group 50-50
51 Utilize DS_NONPDQ_QUERY_MEM DS_NONPDQ_QUERY_MEM = 50,000 session #RSAM total used dynamic id user tty pid hostname threads memory memory explain indprod prodtu off tid name rstcb flags curstk status sqlexec c b2c9ac18 ---PR sleeping(forever) Memory pools count 2 name class addr totalsize freesize #allocfrag #freefrag V c b60be _SORT V c b59a name free used name free used sort sqscb sql 0 80 srtmembuf sqscb info scb sqscb optofc pdqpriority sqlstats optcompind directives c b5be61d0 c cb9d Sess SQL Current Iso Lock SQL ISAM F.E. Id Stmt type Database Lvl Mode ERR ERR Vers Explain SELECT elstest CR Wait Off Current SQL statement : select unique b.* from tmp_fids a, name_init b where a.fid = b.fid International Informix Users Group 51-51
52 Utilize DS_NONPDQ_QUERY_MEM DS_NONPDQ_QUERY_MEM 500,000 session #RSAM total used dynamic id user tty pid hostname threads memory memory explain vijays prodtu off Memory pools count 2 name class addr totalsize freesize #allocfrag #freefrag V c a12a _SORT_ V c b3df name free used name free used sort sqscb sql 0 80 srtmembuf (vs with 50,000 DS_NONPDQ_QUERY_MEM) sqscb info scb sqscb optofc pdqpriority sqlstats optcompind directives c ad54a8c0 c a12af Sess SQL Current Iso Lock SQL ISAM F.E. Id Stmt type Database Lvl Mode ERR ERR Vers Explain SELECT elstest CR Wait Off Current SQL statement : select unique b.* from tmp_fids a, name_init b where a.fid = b.fid and a.fid > 0 International Informix Users Group 52-52
53 Fragment Tables SELECT UNIQUE fid, serial_num, total_nos FROM addridx b WHERE name = JOHN" AND b.state = 27 AND value IN (12345, 98765) AND total_nos = 1; Estimated Cost: 1 Estimated # of Rows Returned: 1 1) informix.b: INDEX PATH (1) Index Keys: state value name total_nos serial_num fid (Key-Only) (Serial, fragments: 26) Lower Index Filter: (((informix.b.name = JOHN' AND informix.b.value = ) AND informix.b.state = 27) AND informix.b.total_nos = 1 ) (2) Index Keys: state value name total_nos serial_num fid (Key-Only) (Serial, fragments: 26) Lower Index Filter: (((informix.b.name = JOHN' AND informix.b.value = ) AND informix.b.state = 27) AND informix.b.total_nos = 1 ) International Informix Users Group 53-53
54 Using External Directives External Directives allow you to use directives on SQL statements that cannot be changed. For example, you have an application that you cannot changed the SQL statements in it, but are having an issue with the performance of a specific SQL statement. With the use of external directives, you can override the SQL statement by forcing it to use directives. International Informix Users Group 54-54
55 Using External Directives cont d NOTE CAUTION: The purpose of external directives is to improve the performance of queries that match the query string. The use of such directives can potentially slow other queries, if the query optimizer must compare the query strings of a large number of active external directives with the text of every SELECT statement. For this reason, it is recommended that the DBA not allow the sysdirectives table to accumulate more than a few ACTIVE rows. International Informix Users Group 55-55
56 Use of External Directives cont d Syntax: SAVE EXTERNAL DIRECTIVES /*+ AVOID_INDEX (table1 index1)*/, /*+ FULL(table1) */ ACTIVE FOR SELECT /*+ INDEX( table1 index1 ) */ col1, col2 FROM table1, table2 WHERE table1.col1 = table2.col1 International Informix Users Group 56-56
57 Use of External Directives cont d How do we enable the use of External Directives? ONCONFIG: EX_DIRECTIVES (0 OFF, 1 ON, 2 ON) Individual sessions external directives can be enabled with the following, all other combinations will have external directives OFF: IFX_EXTDIRECTIVES NOT SET/EX_DIRECTIVES = 2 1 / EX_DIRECTIVES = 1 or 2 0 NO External directives no matter what EX_DIRECTIVES is set to International Informix Users Group 57-57
58 Know Your Applications One of the biggest things that I see is that DBA s do not understand the business of the systems they are supporting to effectively support the systems. The most important item is that you understand the business of the system that you are trying to support and tune. Get involved early in the design, work with the developers in designing the systems. International Informix Users Group 58-58
59 Know your Application cont d ISSUE Client where DBA s did not work with development. Developers designed tables. DBA s just maintained production. RESULTS Poor Performance. DBA s did not understand how the application worked. There was finger pointing on who s problem it was, no accountability. International Informix Users Group 59-59
60 Know your Application cont d RECOMENDATIONS Involved the DBA s to work with the developers from the beginning of the projects. Tables created jointly between developers and DBA s during development. RESULTS DBA s now had a handle on enforcing what was approved for production. The number of issues that occurred after a project launch were reduced dramatically. International Informix Users Group 60-60
61 Key Points Know your Applications cont d Be involved early in the process. Go to development meetings, understand current/upcoming projects and how they impact the system. Create a data model of the database. Understand relationship of tables. Identify potential tables that could have scheduled archiving of data. Reduce the amount of data that needs to be searched. Mentor developers on coding tips for efficient SQL programming. Host Lunch & Learn sessions to teach developers on best practices for SQL coding. International Informix Users Group 61-61
62 Case Study 1 Case Studies Case 1 Review the whole business logic, do not just review the specific SQL statements. Example: In reviewing a client s performance issue, I saw that the specific SQL statement was written correctly. The issues were the following: Two tables had 20 times more reads than any other table 87 extents on one table, 98 extents on the other International Informix Users Group 62-62
63 SOLUTION Case Studies Case 1 Reorganize the tables into single extent. Purged data that was no longer needed, which reduced table size by 70%. Created monthly job to purge records that were not needed. Rebuilt indexes that were last created 5 years ago. Added new indexes for improved selection. International Informix Users Group 63-63
64 Case Studies Case 1 RESULTS Performance Improved Dramatically!!!!! Number of buffer reads on the two tables were reduced. They went from being the top two tables in number of reads by 20 times the next table to not even in the top 5. International Informix Users Group 64-64
65 Case Studies Case 2 Case Study 2 Development was changing a process. How can DBA s help in development? Probe them on how the new process will work. Investigate how to improve the process further. International Informix Users Group 65-65
66 Case Studies Case 2 During analysis of the process that was changing, take a step back and look at the whole process, not just the piece that is changing. Review how the change may help or hurt performance and what other changes may need to be made. Review other areas in the application where data is being selected and see if there are improvements that can be made. International Informix Users Group 66-66
67 Case Studies Case 2 The change was to write the data to the cart and cart_item table in real time instead of batch mode. After looking at the tables, I wondered why would the cart table have more records than the child table cart_items? I questioned the developers, should a cart exist with no items, the answer was no there should not be. International Informix Users Group 67-67
68 Case Studies Case 2 After reviewing the new process, I found some improvements to be made. Reduced one table (CART) row count by 90% from 85 million to 4 million by purging cart records with no items. Implementation: Since the system was 24X7, I could not take an outage long enough to rebuild the CART table which would have been optimal. I ended up writing a stored procedure to delete the records and commit after every 100 deletes to keep the transactions small and to not cause any locking issues for the users on the system. Rebuild indexes after purging the data. International Informix Users Group 68-68
69 Case Studies Case 3 Client was having performance issues when load on the system increased. Investigated the index with the highest buffer reads. After reviewing the SQL statements being processed using that index, I identified that it was not the best index on the table being used for the query. International Informix Users Group 69-69
70 Case Studies Case 3 Resolution Ran update statistics high on a column in the index which previously had "medium" statistics on it. Dropped an index that was a duplicate of another index. RESULTS Total number of buffer reads on the system decreased by 50%. During their peak times, there were no performance issues, the system performed flawlessly. International Informix Users Group 70-70
71 Summary Identify Problem SQL Statements Tracing SQL in Informix 11 Options Available with Set Explain & Reading sqexplain output with tuning examples Methods to use for Improving SQL performance Know your Application in Tuning SQL Case Studies International Informix Users Group 71-71
72 QUESTIONS
73 Informix SQL Performance Tuning Tips Session: B12 Jeff Filippi Integrated Data Consulting, LLC International Informix Users Group 73-73
Informix Performance Tuning using: SQLTrace, Remote DBA Monitoring and Yellowfin BI by Lester Knutsen and Mike Walker! Webcast on July 2, 2013!
Informix Performance Tuning using: SQLTrace, Remote DBA Monitoring and Yellowfin BI by Lester Knutsen and Mike Walker! Webcast on July 2, 2013! 1! Lester Knutsen! Lester Knutsen is President of Advanced
PERFORMANCE TUNING FOR PEOPLESOFT APPLICATIONS
PERFORMANCE TUNING FOR PEOPLESOFT APPLICATIONS 1.Introduction: It is a widely known fact that 80% of performance problems are a direct result of the to poor performance, such as server configuration, resource
Analyzing & Optimizing T-SQL Query Performance Part1: using SET and DBCC. Kevin Kline Senior Product Architect for SQL Server Quest Software
Analyzing & Optimizing T-SQL Query Performance Part1: using SET and DBCC Kevin Kline Senior Product Architect for SQL Server Quest Software AGENDA Audience Poll Presentation (submit questions to the e-seminar
Anatomy of a SQL Tuning Session
Anatomy of a SQL Tuning Session Wolfgang Breitling www.centrexcc.com Copyright 2009 Centrex Consulting Corporation. Personal use of this material is permitted. However, permission to reprint/republish
Database Administration with MySQL
Database Administration with MySQL Suitable For: Database administrators and system administrators who need to manage MySQL based services. Prerequisites: Practical knowledge of SQL Some knowledge of relational
Oracle Database 11g: SQL Tuning Workshop
Oracle University Contact Us: + 38516306373 Oracle Database 11g: SQL Tuning Workshop Duration: 3 Days What you will learn This Oracle Database 11g: SQL Tuning Workshop Release 2 training assists database
1Z0-117 Oracle Database 11g Release 2: SQL Tuning. Oracle
1Z0-117 Oracle Database 11g Release 2: SQL Tuning Oracle To purchase Full version of Practice exam click below; http://www.certshome.com/1z0-117-practice-test.html FOR Oracle 1Z0-117 Exam Candidates We
Oracle Database 11g: SQL Tuning Workshop Release 2
Oracle University Contact Us: 1 800 005 453 Oracle Database 11g: SQL Tuning Workshop Release 2 Duration: 3 Days What you will learn This course assists database developers, DBAs, and SQL developers to
Gentran Integration Suite. Archiving and Purging. Version 4.2
Gentran Integration Suite Archiving and Purging Version 4.2 Copyright 2007 Sterling Commerce, Inc. All rights reserved. Additional copyright information is located on the Gentran Integration Suite Documentation
How To Improve Performance In A Database
1 PHIL FACTOR GRANT FRITCHEY K. BRIAN KELLEY MICKEY STUEWE IKE ELLIS JONATHAN ALLEN LOUIS DAVIDSON 2 Database Performance Tips for Developers As a developer, you may or may not need to go into the database
MyOra 3.0. User Guide. SQL Tool for Oracle. Jayam Systems, LLC
MyOra 3.0 SQL Tool for Oracle User Guide Jayam Systems, LLC Contents Features... 4 Connecting to the Database... 5 Login... 5 Login History... 6 Connection Indicator... 6 Closing the Connection... 7 SQL
In this session, we use the table ZZTELE with approx. 115,000 records for the examples. The primary key is defined on the columns NAME,VORNAME,STR
1 2 2 3 In this session, we use the table ZZTELE with approx. 115,000 records for the examples. The primary key is defined on the columns NAME,VORNAME,STR The uniqueness of the primary key ensures that
Enhancing SQL Server Performance
Enhancing SQL Server Performance Bradley Ball, Jason Strate and Roger Wolter In the ever-evolving data world, improving database performance is a constant challenge for administrators. End user satisfaction
W I S E. SQL Server 2008/2008 R2 Advanced DBA Performance & WISE LTD.
SQL Server 2008/2008 R2 Advanced DBA Performance & Tuning COURSE CODE: COURSE TITLE: AUDIENCE: SQSDPT SQL Server 2008/2008 R2 Advanced DBA Performance & Tuning SQL Server DBAs, capacity planners and system
Unit 4.3 - Storage Structures 1. Storage Structures. Unit 4.3
Storage Structures Unit 4.3 Unit 4.3 - Storage Structures 1 The Physical Store Storage Capacity Medium Transfer Rate Seek Time Main Memory 800 MB/s 500 MB Instant Hard Drive 10 MB/s 120 GB 10 ms CD-ROM
Oracle EXAM - 1Z0-117. Oracle Database 11g Release 2: SQL Tuning. Buy Full Product. http://www.examskey.com/1z0-117.html
Oracle EXAM - 1Z0-117 Oracle Database 11g Release 2: SQL Tuning Buy Full Product http://www.examskey.com/1z0-117.html Examskey Oracle 1Z0-117 exam demo product is here for you to test the quality of the
Monitoring Agent for PostgreSQL 1.0.0 Fix Pack 10. Reference IBM
Monitoring Agent for PostgreSQL 1.0.0 Fix Pack 10 Reference IBM Monitoring Agent for PostgreSQL 1.0.0 Fix Pack 10 Reference IBM Note Before using this information and the product it supports, read the
Optimizing Your Database Performance the Easy Way
Optimizing Your Database Performance the Easy Way by Diane Beeler, Consulting Product Marketing Manager, BMC Software and Igy Rodriguez, Technical Product Manager, BMC Software Customers and managers of
Ron Flannery, One Point Solutions (www.one-point.com): 248-887-8470x40, [email protected]
INFORMIX DATABASE ADMINISTRATION An on-site training experience customized for your needs Based on Informix Handbook and provided by One Point Solutions, the Informix Specialists PRESENTED BY: BASED ON:
IBM DB2: LUW Performance Tuning and Monitoring for Single and Multiple Partition DBs
coursemonster.com/au IBM DB2: LUW Performance Tuning and Monitoring for Single and Multiple Partition DBs View training dates» Overview Learn how to tune for optimum performance the IBM DB2 9 for Linux,
OpenAdmin Tool for Informix (OAT) October 2012
OpenAdmin Tool for Informix (OAT) October 2012 What is OpenAdmin Tool for Informix? OAT is a web-based administration tool for the IBM Informix database server A single OAT installation can administer
ICOM 6005 Database Management Systems Design. Dr. Manuel Rodríguez Martínez Electrical and Computer Engineering Department Lecture 2 August 23, 2001
ICOM 6005 Database Management Systems Design Dr. Manuel Rodríguez Martínez Electrical and Computer Engineering Department Lecture 2 August 23, 2001 Readings Read Chapter 1 of text book ICOM 6005 Dr. Manuel
Oracle DBA Course Contents
Oracle DBA Course Contents Overview of Oracle DBA tasks: Oracle as a flexible, complex & robust RDBMS The evolution of hardware and the relation to Oracle Different DBA job roles(vp of DBA, developer DBA,production
Choosing a Data Model for Your Database
In This Chapter This chapter describes several issues that a database administrator (DBA) must understand to effectively plan for a database. It discusses the following topics: Choosing a data model for
MyOra 3.5. User Guide. SQL Tool for Oracle. Kris Murthy
MyOra 3.5 SQL Tool for Oracle User Guide Kris Murthy Contents Features... 4 Connecting to the Database... 5 Login... 5 Login History... 6 Connection Indicator... 6 Closing the Connection... 7 SQL Editor...
ENHANCEMENTS TO SQL SERVER COLUMN STORES. Anuhya Mallempati #2610771
ENHANCEMENTS TO SQL SERVER COLUMN STORES Anuhya Mallempati #2610771 CONTENTS Abstract Introduction Column store indexes Batch mode processing Other Enhancements Conclusion ABSTRACT SQL server introduced
DBMS / Business Intelligence, SQL Server
DBMS / Business Intelligence, SQL Server Orsys, with 30 years of experience, is providing high quality, independant State of the Art seminars and hands-on courses corresponding to the needs of IT professionals.
Monitoring PostgreSQL database with Verax NMS
Monitoring PostgreSQL database with Verax NMS Table of contents Abstract... 3 1. Adding PostgreSQL database to device inventory... 4 2. Adding sensors for PostgreSQL database... 7 3. Adding performance
MS SQL Performance (Tuning) Best Practices:
MS SQL Performance (Tuning) Best Practices: 1. Don t share the SQL server hardware with other services If other workloads are running on the same server where SQL Server is running, memory and other hardware
Oracle Database 11 g Performance Tuning. Recipes. Sam R. Alapati Darl Kuhn Bill Padfield. Apress*
Oracle Database 11 g Performance Tuning Recipes Sam R. Alapati Darl Kuhn Bill Padfield Apress* Contents About the Authors About the Technical Reviewer Acknowledgments xvi xvii xviii Chapter 1: Optimizing
Chapter 6: Physical Database Design and Performance. Database Development Process. Physical Design Process. Physical Database Design
Chapter 6: Physical Database Design and Performance Modern Database Management 6 th Edition Jeffrey A. Hoffer, Mary B. Prescott, Fred R. McFadden Robert C. Nickerson ISYS 464 Spring 2003 Topic 23 Database
DB2 for Linux, UNIX, and Windows Performance Tuning and Monitoring Workshop
DB2 for Linux, UNIX, and Windows Performance Tuning and Monitoring Workshop Duration: 4 Days What you will learn Learn how to tune for optimum performance the IBM DB2 9 for Linux, UNIX, and Windows relational
Chapter 13: Query Processing. Basic Steps in Query Processing
Chapter 13: Query Processing! Overview! Measures of Query Cost! Selection Operation! Sorting! Join Operation! Other Operations! Evaluation of Expressions 13.1 Basic Steps in Query Processing 1. Parsing
D61830GC30. MySQL for Developers. Summary. Introduction. Prerequisites. At Course completion After completing this course, students will be able to:
D61830GC30 for Developers Summary Duration Vendor Audience 5 Days Oracle Database Administrators, Developers, Web Administrators Level Technology Professional Oracle 5.6 Delivery Method Instructor-led
Advanced Query for Query Developers
for Developers This is a training guide to step you through the advanced functions of in NUFinancials. is an ad-hoc reporting tool that allows you to retrieve data that is stored in the NUFinancials application.
SQL Server Database Coding Standards and Guidelines
SQL Server Database Coding Standards and Guidelines http://www.sqlauthority.com Naming Tables: Stored Procs: Triggers: Indexes: Primary Keys: Foreign Keys: Defaults: Columns: General Rules: Rules: Pascal
DMS Performance Tuning Guide for SQL Server
DMS Performance Tuning Guide for SQL Server Rev: February 13, 2014 Sitecore CMS 6.5 DMS Performance Tuning Guide for SQL Server A system administrator's guide to optimizing the performance of Sitecore
The Database is Slow
The Database is Slow SQL Server Performance Tuning Starter Kit Calgary PASS Chapter, 19 August 2015 Randolph West, Born SQL Email: [email protected] Twitter: @rabryst Basic Internals Data File Transaction Log
Partitioning under the hood in MySQL 5.5
Partitioning under the hood in MySQL 5.5 Mattias Jonsson, Partitioning developer Mikael Ronström, Partitioning author Who are we? Mikael is a founder of the technology behind NDB
DB Audit Expert 3.1. Performance Auditing Add-on Version 1.1 for Microsoft SQL Server 2000 & 2005
DB Audit Expert 3.1 Performance Auditing Add-on Version 1.1 for Microsoft SQL Server 2000 & 2005 Supported database systems: Microsoft SQL Server 2000 Microsoft SQL Server 2005 Copyright SoftTree Technologies,
Oracle. Brief Course Content This course can be done in modular form as per the detail below. ORA-1 Oracle Database 10g: SQL 4 Weeks 4000/-
Oracle Objective: Oracle has many advantages and features that makes it popular and thereby makes it as the world's largest enterprise software company. Oracle is used for almost all large application
Improving SQL Server Performance
Informatica Economică vol. 14, no. 2/2010 55 Improving SQL Server Performance Nicolae MERCIOIU 1, Victor VLADUCU 2 1 Prosecutor's Office attached to the High Court of Cassation and Justice 2 Prosecutor's
User's Guide - Beta 1 Draft
IBM Tivoli Composite Application Manager for Microsoft Applications: Microsoft Cluster Server Agent vnext User's Guide - Beta 1 Draft SC27-2316-05 IBM Tivoli Composite Application Manager for Microsoft
Using Database Performance Warehouse to Monitor Microsoft SQL Server Report Content
Using Database Performance Warehouse to Monitor Microsoft SQL Server Report Content Applies to: Enhancement Package 1 for SAP Solution Manager 7.0 (SP18) and Microsoft SQL Server databases. SAP Solution
AV-005: Administering and Implementing a Data Warehouse with SQL Server 2014
AV-005: Administering and Implementing a Data Warehouse with SQL Server 2014 Career Details Duration 105 hours Prerequisites This career requires that you meet the following prerequisites: Working knowledge
EMC Unisphere for VMAX Database Storage Analyzer
EMC Unisphere for VMAX Database Storage Analyzer Version 8.1.0 Online Help (PDF version) Copyright 2014-2015 EMC Corporation. All rights reserved. Published in USA. Published September, 2015 EMC believes
David Dye. Extract, Transform, Load
David Dye Extract, Transform, Load Extract, Transform, Load Overview SQL Tools Load Considerations Introduction David Dye [email protected] HTTP://WWW.SQLSAFETY.COM Overview ETL Overview Extract Define
Data Access Guide. BusinessObjects 11. Windows and UNIX
Data Access Guide BusinessObjects 11 Windows and UNIX 1 Copyright Trademarks Use restrictions Patents Copyright 2004 Business Objects. All rights reserved. If you find any problems with this documentation,
Performance rule violations usually result in increased CPU or I/O, time to fix the mistake, and ultimately, a cost to the business unit.
Is your database application experiencing poor response time, scalability problems, and too many deadlocks or poor application performance? One or a combination of zparms, database design and application
ERserver. iseries. Work management
ERserver iseries Work management ERserver iseries Work management Copyright International Business Machines Corporation 1998, 2002. All rights reserved. US Government Users Restricted Rights Use, duplication
DB2 LUW Performance Tuning and Monitoring for Single and Multiple Partition DBs
Kod szkolenia: Tytuł szkolenia: CL442PL DB2 LUW Performance Tuning and Monitoring for Single and Multiple Partition DBs Dni: 5 Opis: Learn how to tune for optimum the IBM DB2 9 for Linux, UNIX, and Windows
Performance Counters. Microsoft SQL. Technical Data Sheet. Overview:
Performance Counters Technical Data Sheet Microsoft SQL Overview: Key Features and Benefits: Key Definitions: Performance counters are used by the Operations Management Architecture (OMA) to collect data
WW TSS-02\03 MS SQL Server Extended Performance & Tuning
Slide 1 WW TSS-02\03 MS SQL Server Extended Performance & Tuning Pierluigi Iodice Regional Solution Support Engineer, Wonderware Invensys Software Email: [email protected] Javier Aldan social.invensys.com
Introduction. Part I: Finding Bottlenecks when Something s Wrong. Chapter 1: Performance Tuning 3
Wort ftoc.tex V3-12/17/2007 2:00pm Page ix Introduction xix Part I: Finding Bottlenecks when Something s Wrong Chapter 1: Performance Tuning 3 Art or Science? 3 The Science of Performance Tuning 4 The
Monitor and Manage Your MicroStrategy BI Environment Using Enterprise Manager and Health Center
Monitor and Manage Your MicroStrategy BI Environment Using Enterprise Manager and Health Center Presented by: Dennis Liao Sales Engineer Zach Rea Sales Engineer January 27 th, 2015 Session 4 This Session
Web Development using PHP (WD_PHP) Duration 1.5 months
Duration 1.5 months Our program is a practical knowledge oriented program aimed at learning the techniques of web development using PHP, HTML, CSS & JavaScript. It has some unique features which are as
Execution Strategies for SQL Subqueries
Execution Strategies for SQL Subqueries Mostafa Elhemali, César Galindo- Legaria, Torsten Grabs, Milind Joshi Microsoft Corp With additional slides from material in paper, added by S. Sudarshan 1 Motivation
SAP Business Objects Business Intelligence platform Document Version: 4.1 Support Package 7 2015-11-24. Data Federation Administration Tool Guide
SAP Business Objects Business Intelligence platform Document Version: 4.1 Support Package 7 2015-11-24 Data Federation Administration Tool Guide Content 1 What's new in the.... 5 2 Introduction to administration
CA Unified Infrastructure Management
CA Unified Infrastructure Management Probe Guide for Informix Database Monitoring informix v4.1 series Copyright Notice This online help system (the "System") is for your informational purposes only and
Raima Database Manager Version 14.0 In-memory Database Engine
+ Raima Database Manager Version 14.0 In-memory Database Engine By Jeffrey R. Parsons, Senior Engineer January 2016 Abstract Raima Database Manager (RDM) v14.0 contains an all new data storage engine optimized
Monitoreo de Bases de Datos
Monitoreo de Bases de Datos Monitoreo de Bases de Datos Las bases de datos son pieza fundamental de una Infraestructura, es de vital importancia su correcto monitoreo de métricas para efectos de lograr
DBA Tutorial Kai Voigt Senior MySQL Instructor Sun Microsystems [email protected] Santa Clara, April 12, 2010
DBA Tutorial Kai Voigt Senior MySQL Instructor Sun Microsystems [email protected] Santa Clara, April 12, 2010 Certification Details http://www.mysql.com/certification/ Registration at Conference Closed Book
ImageNow for Microsoft SQL Server
ImageNow for Microsoft SQL Server Best Practices Guide ImageNow Version: 6.7. x Written by: Product Documentation, R&D Date: July 2013 2013 Perceptive Software. All rights reserved CaptureNow, ImageNow,
There are numerous ways to access monitors:
Remote Monitors REMOTE MONITORS... 1 Overview... 1 Accessing Monitors... 1 Creating Monitors... 2 Monitor Wizard Options... 11 Editing the Monitor Configuration... 14 Status... 15 Location... 17 Alerting...
Top 10 Performance Tips for OBI-EE
Top 10 Performance Tips for OBI-EE Narasimha Rao Madhuvarsu L V Bharath Terala October 2011 Apps Associates LLC Boston New York Atlanta Germany India Premier IT Professional Service and Solution Provider
Cognos Performance Troubleshooting
Cognos Performance Troubleshooting Presenters James Salmon Marketing Manager [email protected] Andy Ellis Senior BI Consultant [email protected] Want to ask a question?
Execution Plans: The Secret to Query Tuning Success. MagicPASS January 2015
Execution Plans: The Secret to Query Tuning Success MagicPASS January 2015 Jes Schultz Borland plan? The following steps are being taken Parsing Compiling Optimizing In the optimizing phase An execution
Teradata SQL Assistant Version 13.0 (.Net) Enhancements and Differences. Mike Dempsey
Teradata SQL Assistant Version 13.0 (.Net) Enhancements and Differences by Mike Dempsey Overview SQL Assistant 13.0 is an entirely new application that has been re-designed from the ground up. It has been
Module 15: Monitoring
Module 15: Monitoring Overview Formulate requirements and identify resources to monitor in a database environment Types of monitoring that can be carried out to ensure: Maximum availability Optimal performance
Using Sentinel to Monitor and Manage your IDS Server Performance
Using Sentinel to Monitor and Manage your IDS Server Performance Lester Knutsen Advanced DataTools Corporation IDUG/IIUG North American Conference 2007 May 6-10, 2007 San Jose California 6 half day Educational
In-memory Tables Technology overview and solutions
In-memory Tables Technology overview and solutions My mainframe is my business. My business relies on MIPS. Verna Bartlett Head of Marketing Gary Weinhold Systems Analyst Agenda Introduction to in-memory
Table of Contents. Chapter 1: Introduction. Chapter 2: Getting Started. Chapter 3: Standard Functionality. Chapter 4: Module Descriptions
Table of Contents Chapter 1: Introduction Chapter 2: Getting Started Chapter 3: Standard Functionality Chapter 4: Module Descriptions Table of Contents Table of Contents Chapter 5: Administration Table
Database Studio is the new tool to administrate SAP MaxDB database instances as of version 7.5.
1 2 3 4 Database Studio is the new tool to administrate SAP MaxDB database instances as of version 7.5. It replaces the previous tools Database Manager GUI and SQL Studio from SAP MaxDB version 7.7 onwards
Relational Database: Additional Operations on Relations; SQL
Relational Database: Additional Operations on Relations; SQL Greg Plaxton Theory in Programming Practice, Fall 2005 Department of Computer Science University of Texas at Austin Overview The course packet
Recovery Principles in MySQL Cluster 5.1
Recovery Principles in MySQL Cluster 5.1 Mikael Ronström Senior Software Architect MySQL AB 1 Outline of Talk Introduction of MySQL Cluster in version 4.1 and 5.0 Discussion of requirements for MySQL Cluster
System Monitoring and Diagnostics Guide for Siebel Business Applications. Version 7.8 April 2005
System Monitoring and Diagnostics Guide for Siebel Business Applications April 2005 Siebel Systems, Inc., 2207 Bridgepointe Parkway, San Mateo, CA 94404 Copyright 2005 Siebel Systems, Inc. All rights reserved.
low-level storage structures e.g. partitions underpinning the warehouse logical table structures
DATA WAREHOUSE PHYSICAL DESIGN The physical design of a data warehouse specifies the: low-level storage structures e.g. partitions underpinning the warehouse logical table structures low-level structures
PUBLIC Performance Optimization Guide
SAP Data Services Document Version: 4.2 Support Package 6 (14.2.6.0) 2015-11-20 PUBLIC Content 1 Welcome to SAP Data Services....6 1.1 Welcome.... 6 1.2 Documentation set for SAP Data Services....6 1.3
Throwing Hardware at SQL Server Performance problems?
Throwing Hardware at SQL Server Performance problems? Think again, there s a better way! Written By: Jason Strate, Pragmatic Works Roger Wolter, Pragmatic Works Bradley Ball, Pragmatic Works Contents Contents
Lecture 1: Data Storage & Index
Lecture 1: Data Storage & Index R&G Chapter 8-11 Concurrency control Query Execution and Optimization Relational Operators File & Access Methods Buffer Management Disk Space Management Recovery Manager
SQL Performance for a Big Data 22 Billion row data warehouse
SQL Performance for a Big Data Billion row data warehouse Dave Beulke dave @ d a v e b e u l k e.com Dave Beulke & Associates Session: F19 Friday May 8, 15 8: 9: Platform: z/os D a v e @ d a v e b e u
2015 OSIsoft TechCon. Optimizing SQL Queries for Performance using PI OLEDB Enterprise
2015 OSIsoft TechCon Optimizing SQL Queries for Performance using PI OLEDB Enterprise 1 P a g e Table of Contents Contents Table of Contents... 1 Optimizing SQL Queries for Performance using PI OLEDB
Facebook Twitter YouTube Google Plus Website Email
PHP MySQL COURSE WITH OOP COURSE COVERS: PHP MySQL OBJECT ORIENTED PROGRAMMING WITH PHP SYLLABUS PHP 1. Writing PHP scripts- Writing PHP scripts, learn about PHP code structure, how to write and execute
White Paper. Optimizing the Performance Of MySQL Cluster
White Paper Optimizing the Performance Of MySQL Cluster Table of Contents Introduction and Background Information... 2 Optimal Applications for MySQL Cluster... 3 Identifying the Performance Issues.....
SQL Server. DMVs in Action. Better Queries with. Dynamic Management Views MANNING IANW. STIRK. Shelter Island
SQL Server DMVs in Action Better Queries with Dynamic Management Views IANW. STIRK II MANNING Shelter Island contents preface xix acknowledgements about this book xxii xx Part 1 Starting the journey 1
IBM Tivoli Composite Application Manager for Microsoft Applications: Microsoft Internet Information Services Agent Version 6.3.1 Fix Pack 2.
IBM Tivoli Composite Application Manager for Microsoft Applications: Microsoft Internet Information Services Agent Version 6.3.1 Fix Pack 2 Reference IBM Tivoli Composite Application Manager for Microsoft
Using AS/400 Database Monitor To Identify and Tune SQL Queries
by Rick Peterson Dale Weber Richard Odell Greg Leibfried AS/400 System Performance IBM Rochester Lab May 2000 Page 1 Table of Contents Introduction... Page 4 What is the Database Monitor for AS/400 tool?...
SQL Server Performance Tuning for DBAs
ASPE IT Training SQL Server Performance Tuning for DBAs A WHITE PAPER PREPARED FOR ASPE BY TOM CARPENTER www.aspe-it.com toll-free: 877-800-5221 SQL Server Performance Tuning for DBAs DBAs are often tasked
SSIS Scaling and Performance
SSIS Scaling and Performance Erik Veerman Atlanta MDF member SQL Server MVP, Microsoft MCT Mentor, Solid Quality Learning Agenda Buffers Transformation Types, Execution Trees General Optimization Techniques
Oracle Database 12c: Performance Management and Tuning NEW
Oracle University Contact Us: 1.800.529.0165 Oracle Database 12c: Performance Management and Tuning NEW Duration: 5 Days What you will learn In the Oracle Database 12c: Performance Management and Tuning
Informix Administration Overview
Informix Administration Overview John F. Miller III August 2008 August 18, 2008 Overview Information Management IDS Architecture Overview OAT Administrators Feature Overview Performance Monitoring Managing
IBM Informix. IBM Informix Dynamic Server Performance Guide. Version 11.1 G229-6385-00
IBM Informix Version 11.1 IBM Informix Dynamic Server Performance Guide G229-6385-00 IBM Informix Version 11.1 IBM Informix Dynamic Server Performance Guide G229-6385-00 Note: Before using this information
SQL Server Query Tuning
SQL Server Query Tuning A 12-Step Program By Thomas LaRock, Technical Evangelist and Head Geek Confio Software 4772 Walnut Street, Suite 100 Boulder, CO 80301 www.confio.com Introduction Query tuning is
PTC System Monitor Solution Training
PTC System Monitor Solution Training Patrick Kulenkamp June 2012 Agenda What is PTC System Monitor (PSM)? How does it work? Terminology PSM Configuration The PTC Integrity Implementation Drilling Down
ODEX Enterprise. Introduction to ODEX Enterprise 3 for users of ODEX Enterprise 2
ODEX Enterprise Introduction to ODEX Enterprise 3 for users of ODEX Enterprise 2 Copyright Data Interchange Plc Peterborough, England, 2013. All rights reserved. No part of this document may be disclosed
Database Performance Report Using PivotalVRP
Database Performance Report Using PivotalVRP Sample Report Date: July 2013 Created by: Shahar Harap Table of Content 1. Executive Summary... 3 2. Overall resource consumption overview... 4 2.1. Peak investigation...
SQL Performance and Tuning. DB2 Relational Database
SQL Performance and Tuning DB2 Relational Database 1 Course Overview The DB2 Optimizer SQL Coding Strategies and Guidelines DB2 Catalog Filter Factors for Predicates Runstats and Reorg Utilities DB2 Explain
Physical Database Design and Tuning
Chapter 20 Physical Database Design and Tuning Copyright 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1. Physical Database Design in Relational Databases (1) Factors that Influence
