Presentation is loading. Please wait.

Presentation is loading. Please wait.

DB-16: In Any Case, the Devil’s in the DataServer Details David Moloney Principal, Progress OpenEdge That which we persist in doing becomes easier, not.

Similar presentations


Presentation on theme: "DB-16: In Any Case, the Devil’s in the DataServer Details David Moloney Principal, Progress OpenEdge That which we persist in doing becomes easier, not."— Presentation transcript:

1 DB-16: In Any Case, the Devil’s in the DataServer Details David Moloney Principal, Progress OpenEdge That which we persist in doing becomes easier, not that the task itself has become easier, but that our ability to perform it has improved. Ralph Waldo EmersonRalph Waldo Emerson (1803 - 1882)

2 © 2007 Progress Software Corporation 2 DB-16: In Any Case, the Devil’s in the DataServer Details Agenda  A Story  Terminology & Technology Sync-up  The Devils in the Details Case Studies –ABL & DataServer –ABL & the RDBMS –DataServer & RDBMS –DataServer & API Access Drivers  DataServer Performance  Summary & Questions

3 © 2007 Progress Software Corporation 3 DB-16: In Any Case, the Devil’s in the DataServer Details A Story Mary and the three DataServers Once Upon A Time …

4 © 2007 Progress Software Corporation 4 DB-16: In Any Case, the Devil’s in the DataServer Details Mary meets Compiler For Each Display Cust ABL

5 © 2007 Progress Software Corporation 5 DB-16: In Any Case, the Devil’s in the DataServer Details Client meets Server OpenEdge ™ Database OpenEdge ™ Database

6 © 2007 Progress Software Corporation 6 DB-16: In Any Case, the Devil’s in the DataServer Details Where’s the love ? Where’s my pie ? Oracle Microsoft SQL Server Microsoft SQL Server IBM DB2 IBM DB2

7 © 2007 Progress Software Corporation 7 DB-16: In Any Case, the Devil’s in the DataServer Details For Each What ? For Each Display Cust ABL Habla “For Each” ?

8 © 2007 Progress Software Corporation 8 DB-16: In Any Case, the Devil’s in the DataServer Details Hmmm…. For Each Display Cust ABL

9 © 2007 Progress Software Corporation 9 DB-16: In Any Case, the Devil’s in the DataServer Details I’ve got Bingo ! For Each Display Cust ABL

10 © 2007 Progress Software Corporation 10 DB-16: In Any Case, the Devil’s in the DataServer Details OE DB Trusted friends For Each Display Cust ABL ODBC Driver Manager Driver Data Source InformixSybase DB2 Driver Data Source Data Source OCI API SQL*Net Oracle Data Source

11 © 2007 Progress Software Corporation 11 DB-16: In Any Case, the Devil’s in the DataServer Details Mary makes a house call For Each Display Cust ABL Hey Man … It’s all about the “For Each” OE DB

12 © 2007 Progress Software Corporation 12 DB-16: In Any Case, the Devil’s in the DataServer Details Bravo !

13 © 2007 Progress Software Corporation 13 DB-16: In Any Case, the Devil’s in the DataServer Details The End

14 © 2007 Progress Software Corporation 14 DB-16: In Any Case, the Devil’s in the DataServer Details That was then … For Each Display Cust ABL OE DB

15 © 2007 Progress Software Corporation 15 DB-16: In Any Case, the Devil’s in the DataServer Details Terminology & Technology Sync-up OpenEdge Database OpenEdge Database Oracle SQL Server Oracle SQL Server MS SQL Server MS SQL Server

16 © 2007 Progress Software Corporation 16 DB-16: In Any Case, the Devil’s in the DataServer Details Terminology & Technology Sync-up OpenEdge Database OpenEdge Database Oracle SQL Server Oracle SQL Server DataServer Broker SQL -- -- MS SQL Server MS SQL Server

17 © 2007 Progress Software Corporation 17 DB-16: In Any Case, the Devil’s in the DataServer Details Terminology & Technology Sync-up OpenEdge Database OpenEdge Database INTCHAR INTCHAR 1J 2Alsop Oracle SQL Server Oracle SQL Server INTVARCHAR2 5L 6Ellison DataServer Broker SQL -- -- MS SQL Server MS SQL Server INTVARCHAR 3B 4Gates Item-no Item_no

18 © 2007 Progress Software Corporation 18 DB-16: In Any Case, the Devil’s in the DataServer Details Terminology & Technology Sync-up OpenEdge Database OpenEdge Database INTCHAR INTCHAR 1J 2Alsop Oracle SQL Server Oracle SQL Server INTVARCHAR2 5L 6Ellison DataServer Broker SQL -- -- MS SQL Server MS SQL Server INTVARCHAR 3B 4Gates Item-no Item_no

19 © 2007 Progress Software Corporation 19 DB-16: In Any Case, the Devil’s in the DataServer Details Terminology & Technology Sync-up OpenEdge Database OpenEdge Database INTCHAR INTCHAR 1J 2Alsop Oracle SQL Server Oracle SQL Server INTVARCHAR2 5L 6Ellison DataServer Broker SQL -- -- MS SQL Server MS SQL Server INTVARCHAR 3B 4Gates Item-no Item_no

20 © 2007 Progress Software Corporation 20 DB-16: In Any Case, the Devil’s in the DataServer Details Sync-up: 4-Tier Perspective OpenEdge Database OpenEdge Database Oracle SQL Server Oracle SQL Server INTVARCHAR2 5L 6Ellison DataServer Broker SQL -- -- MS SQL Server MS SQL Server INTVARCHAR 3B 4Gates INTCHAR INTCHAR 1J 2Alsop

21 © 2007 Progress Software Corporation 21 DB-16: In Any Case, the Devil’s in the DataServer Details Sync-up: Self-Service Client 3-Tier Perspective Oracle SQL Server Oracle SQL Server INTVARCHAR2 5L 6Ellison MS SQL Server MS SQL Server INTVARCHAR 3B 4Gates OpenEdge Database OpenEdge Database INTCHAR INTCHAR 1J 2Alsop

22 © 2007 Progress Software Corporation 22 DB-16: In Any Case, the Devil’s in the DataServer Details OpenEdge Client DataServer Sync-up: Application-centric SELECT UPPERCASE (name) FROM Customer FOR EACH Customer Oracle CBA SELECT TO UPPER(name) FROM Customer OpenEdge DB2 ZYX 321 SELECT TO UPPER(name) FROM Customer SELECT UPPER(name) FROM Customer --- --- --- Application Centric - Just another Oracle OCI or ODBC Client SQL Server SQL Server OpenEdge Schema PULL Schema PUSH

23 © 2007 Progress Software Corporation 23 DB-16: In Any Case, the Devil’s in the DataServer Details Sync-up: Client-Server Perspective Oracle SQL Server Oracle SQL Server INTVARCHAR2 5L 6Ellison MS SQL Server MS SQL Server INTVARCHAR 3B 4Gates OpenEdge Database OpenEdge Database INTCHAR INTCHAR 1J 2Alsop DataServer Broker SQL -- --

24 © 2007 Progress Software Corporation 24 DB-16: In Any Case, the Devil’s in the DataServer Details Sync-up: Component Perspective OpenEdge Database OpenEdge Database Oracle SQL Server Oracle SQL Server INTVARCHAR2 5L 6Ellison MS SQL Server MS SQL Server INTVARCHAR 3B 4Gates INTCHAR INTCHAR 1J 2Alsop

25 © 2007 Progress Software Corporation 25 DB-16: In Any Case, the Devil’s in the DataServer Details Sync-up: DataServer Component Layers Progress ABL Dataserver Layer Dataserver Client Dataserver Server MS SQL Srvr ODBC Oracle OCI

26 © 2007 Progress Software Corporation 26 DB-16: In Any Case, the Devil’s in the DataServer Details OpenEdge Reference Architecture For Service Oriented Business Applications Design for longevity, flexibility, and competitive advantage Presentation Business Components Data Access Data Sources Common Infrastructure Enterprise Services

27 © 2007 Progress Software Corporation 27 DB-16: In Any Case, the Devil’s in the DataServer Details Case Study: Components

28 © 2007 Progress Software Corporation 28 DB-16: In Any Case, the Devil’s in the DataServer Details  Appreciate intricacies amongst components  Demonstrate the somewhat “arbitrary” diversity DataServer issues  Create opportunities to discuss important aspects of the DataServer architecture.  Promote the interest of a problem-solver audience Case Study: Goals

29 © 2007 Progress Software Corporation 29 DB-16: In Any Case, the Devil’s in the DataServer Details  DataServer deference given to the database On Security On Transaction Control On Lock Management On Cursor Consistency Case Study: Prerequisite & Disclaimer

30 © 2007 Progress Software Corporation 30 DB-16: In Any Case, the Devil’s in the DataServer Details I ran a pro-to- migration and compiled some code against the schema holder it built. Everything compiled just fine. Then I built a separate schema holder, pulled definitions from the very same SQL database, and connected to it. But, against this schema holder, the compiled code fails. Why would it matter how we create the schema holder as long as the structure of the SQL database remains exactly the same ! The Devils in the Details: Case Study #1 ++

31 © 2007 Progress Software Corporation 31 DB-16: In Any Case, the Devil’s in the DataServer Details DataServer Migration OpenEdge Database OpenEdge Database INTCHAR Oracle SQL Server Oracle SQL Server INTVARCHAR2 5L 6Ellison DataServer Broker SQL -- -- MS SQL Server MS SQL Server INTVARCHAR 3B 4Gates Item-no Item_no OpenEdge Database OpenEdge Database INTCHAR 1J 2Alsop Item_no Item-no

32 © 2007 Progress Software Corporation 32 DB-16: In Any Case, the Devil’s in the DataServer Details Why don’t my schema holder “pull” definitions match the OpenEdge Database they were derived from ? The script that built the SQL Database came directly from OpenEdge Database ! The Devils in the Details: Case Study #1 (cont.)

33 © 2007 Progress Software Corporation 33 DB-16: In Any Case, the Devil’s in the DataServer Details DataServer Pushed & Pulled Independently OpenEdge Database OpenEdge Database INTCHAR Oracle SQL Server Oracle SQL Server INTVARCHAR2 5L 6Ellison DataServer Broker SQL -- -- MS SQL Server MS SQL Server INTVARCHAR 3B 4Gates Item_no OpenEdge Database OpenEdge Database INTCHAR 1J 2Alsop Item_no Item-no

34 © 2007 Progress Software Corporation 34 DB-16: In Any Case, the Devil’s in the DataServer Details Pull & Adjust Schema OpenEdge Database OpenEdge Database INTCHAR Oracle SQL Server Oracle SQL Server INTVARCHAR2 5L 6Ellison DataServer Broker SQL -- -- MS SQL Server MS SQL Server INTVARCHAR 3B 4Gates Item-no Item_no OpenEdge Database OpenEdge Database INTCHAR 1J 2Alsop Item_no Item-no

35 © 2007 Progress Software Corporation 35 DB-16: In Any Case, the Devil’s in the DataServer Details The Devils in the Details: Case Study #2  We deployed a new schema holder to our customers and their production applications started crashing with no warning. We didn’t make any code changes but if we do, the application still crashes, only with a different error. What would cause the DataServer’s inconsistent behavior and how can we get an indication of the problem ? ++ +

36 © 2007 Progress Software Corporation 36 DB-16: In Any Case, the Devil’s in the DataServer Details The Devils in the Details: Case Study #3  I compiled my application against an OpenEdge Database. Then, I did the same against my Schema Holder. Why did the DataServer r-code grow larger than my OpenEdge database r-code ? + +

37 © 2007 Progress Software Corporation 37 DB-16: In Any Case, the Devil’s in the DataServer Details The Devils in the Details: Case Study #4  During a migration, I’m getting truncation errors loading data into my SQL Server database. I elected the “load data” option. The schema copied fine but migrating data from my OpenEdge database to a DataServer schema holder fails. Why would the migration create definitions too small for my data ? ++

38 © 2007 Progress Software Corporation 38 DB-16: In Any Case, the Devil’s in the DataServer Details The Devils in the Details: Case Study #5  I’m migrating an OpenEdge database to a DataServer schema. When I elect to load data, I get NULL-constraint and unique-constraint violations. ++

39 © 2007 Progress Software Corporation 39 DB-16: In Any Case, the Devil’s in the DataServer Details  Record Write & Availability DEFINE BUFFER xcust FOR cust. CREATE cust. cust-num = 111. FIND xcust WHERE xcust.cust-num = 111. The Devils in the Details: Case Study #6 (Intro.) ++

40 © 2007 Progress Software Corporation 40 DB-16: In Any Case, the Devil’s in the DataServer Details  Record Write & Availability DEFINE BUFFER xcust FOR cust. CREATE cust. cust-num = 111. VALIDATE cust. /* or RELEASE cust. */ FIND xcust WHERE xcust.cust-num = 111. The Devils in the Details: Case Study #6 (Intro.) ++

41 © 2007 Progress Software Corporation 41 DB-16: In Any Case, the Devil’s in the DataServer Details The Devils in the Details: Case Study #6  I’m getting a STOP condition trying to assign a column value after a FIND statement. The application exits after the ASSIGN. How can I be sure this isn’t corrupting my database ? DO TRANSACTION: FIND FIRST cust. ASSIGN name = FILL(“a”,35) NO-ERROR. END. ++

42 © 2007 Progress Software Corporation 42 DB-16: In Any Case, the Devil’s in the DataServer Details The Devils in the Details: Case Study #6 (cont.) ++  But, I’m still getting the error condition DO TRANSACTION: FIND FIRST cust. ASSIGN name = FILL(“a”,35) NO-ERROR. VALIDATE cust. END.

43 © 2007 Progress Software Corporation 43 DB-16: In Any Case, the Devil’s in the DataServer Details The Devils in the Details: Case Study #6 (cont.) ++ DO TRANSACTION: FIND FIRST cust. ASSIGN name = FILL(“a”,35) /* NO-ERROR */. VALIDATE cust NO-ERROR. IF error-status:error THEN DO: UNDO, LEAVE. END. END.

44 © 2007 Progress Software Corporation 44 DB-16: In Any Case, the Devil’s in the DataServer Details The Devils in the Details: Case Study #6 (cont.) ++  But, I’m still getting the error condition DO TRANSACTION ON ERROR UNDO,LEAVE: FIND FIRST cust. ASSIGN name = FILL(“a”,35) NO-ERROR. VALIDATE cust. CATCH Progress.Lang.AppError ae: MESSAGE "Inside AppError Catch". IF ae:GetMessage(1) <> ? THEN MESSAGE ae:GetMessage(1) ae:GetMessageNum(1). ELSE MESSAGE "ReturnError" ae:returnvalue view-as alert-box. DELETE OBJECT ae. END CATCH. CATCH Progress.Lang.ProError pe: MESSAGE "Inside ProError Catch". REPEAT i = 1 TO pe:NumMessages: PUT UNFORMATTED " Error Number: " pe:GetMessageNum(i) FORMAT ">>>>>9" SKIP "Message: " pe:GetMessage(i) FORMAT "x(73)" SKIP. END. DELETE OBJECT pe. END CATCH. END.

45 © 2007 Progress Software Corporation 45 DB-16: In Any Case, the Devil’s in the DataServer Details The Devils in the Details: Case Study #6 (cont.) ++  Warning: DO TRANSACTION: FIND FIRST cust EXCLUSIVE-LOCK. ASSIGN name = FILL(“a”,35) NO-ERROR. VALIDATE cust. CONTENTION EXPOSURE ! END.

46 © 2007 Progress Software Corporation 46 DB-16: In Any Case, the Devil’s in the DataServer Details The Devils in the Details: Case Study #7  I have two clients running simultaneously. Both create records and lock records exclusively on the same table. Why are they getting “table is use by another user” errors ? DO TRANSACTION: FIND FIRST cust EXCLUSIVE-LOCK. IF AVAILABLE cust THEN ASSIGN name = “Bob”. REPEAT: FIND NEXT cust EXCLUSIVE-LOCK. IF NOT AVAILABLE cust THEN LEAVE. Cnt = Cnt + 1. ASSIGN name = “Bob” + STRING(cnt). END. END. ++

47 © 2007 Progress Software Corporation 47 DB-16: In Any Case, the Devil’s in the DataServer Details The Devils in the Details: Case Study #7 (cont.) DO TRANSACTION: FIND FIRST cust EXCLUSIVE-LOCK. IF AVAILABLE cust THEN ASSIGN name = “Bob”. REPEAT: DO TRANSACTION: FIND NEXT cust EXCLUSIVE-LOCK. IF NOT AVAILABLE cust THEN LEAVE. Cnt = Cnt + 1. ASSIGN name = “Bob” + STRING(cnt). END. END. END. END. ++

48 © 2007 Progress Software Corporation 48 DB-16: In Any Case, the Devil’s in the DataServer Details The Devils in the Details: Case Study #7 (cont.) DO TRANSACTION: FIND FIRST cust EXCLUSIVE-LOCK. IF AVAILABLE cust THEN ASSIGN name = “Bob”. END. REPEAT: DO TRANSACTION: FIND NEXT cust EXCLUSIVE-LOCK. IF NOT AVAILABLE cust THEN LEAVE. Cnt = Cnt + 1. ASSIGN name = “Bob” + STRING(cnt). END. END. END. ++

49 © 2007 Progress Software Corporation 49 DB-16: In Any Case, the Devil’s in the DataServer Details The Devils in the Details: Case Study #7 (cont.)  Another example regarding cursor consistency DEFINE VARIABLE num AS INT INITIAL 103. DO TRANSACTION: FIND cust WHERE cust = num EXCLUSIVE-LOCK. ASSIGN name = “Bob”. END. FIND cust WHERE cust-num = num. DISPLAY name. ++

50 © 2007 Progress Software Corporation 50 DB-16: In Any Case, the Devil’s in the DataServer Details The Devils in the Details: Case Study #8  Parenthesis around names in the WHERE clause of our join is [slow/fast], generates multiple queries and sends index hints with the queries. For each customer, each order WHERE (order.custnum) = (cust.custnum): Oracle documentation says joins won’t pass index hints on a server join. If we just remove the parenthesis: For each customer, each order WHERE order.custnum = cust.custnum: We only get one query, [better/worse] performance and no hints. +

51 © 2007 Progress Software Corporation 51 DB-16: In Any Case, the Devil’s in the DataServer Details The Devils in the Details: Case Study #9 - Part I  In our Oracle DataServer application, one of our users got a locked record error: “ in use by on. Wait or press CTRL-C to exit. (121)“ Pressing CTRL-C does not actually do anything. Our client script isn’t trapping CTRL-C, so what is ? NOTE: stty on Unix shows Ctrl-C is mapped ++

52 © 2007 Progress Software Corporation 52 DB-16: In Any Case, the Devil’s in the DataServer Details The Devils in the Details: Case Study #9 - Part II  Why did I get a “System Error 126” on Windows connecting through the ODBC DataServer ? "Specified driver could not be loaded due to system error 126" ++

53 © 2007 Progress Software Corporation 53 DB-16: In Any Case, the Devil’s in the DataServer Details  Our Oracle DataServer application is running fine. Why does our application all of a sudden have a problem with an invalid cursor and then exit ? The Devils in the Details: Case Study #10 ++

54 © 2007 Progress Software Corporation 54 DB-16: In Any Case, the Devil’s in the DataServer Details  We migrated our legacy Oracle DataServer application from an earlier Progress implementation, that used “shadow columns”, to OpenEdge where it uses Function-based indexes. Why are we now seeing performance problems that appear to be related to Function Based Indexes ? The Devils in the Details: Case Study #11 ++

55 © 2007 Progress Software Corporation 55 DB-16: In Any Case, the Devil’s in the DataServer Details  DataServer Rule: USE-INDEX and BY clauses affect the SQL ORDER BY clause. This guarantees the order of the results but does NOT guarantee the index selections of an execution plan. The Devils in the Details: Case Study #11 (cont.) ++

56 © 2007 Progress Software Corporation 56 DB-16: In Any Case, the Devil’s in the DataServer Details  We’ve converted our legacy DB2/400 database to run against the ODBC DataServer. Some of our existing tables don’t have indexes so we describe indexes in the schema holder that satisfy the DataServer’s ROWID requirements. But when we display results for these tables, from a query like the following, why do some records show up twice in our result set ? FOR EACH : DISPLAY. END. The Devils in the Details: Case Study #12 + + +

57 © 2007 Progress Software Corporation 57 DB-16: In Any Case, the Devil’s in the DataServer Details FOR EACH SHARE-LOCK: DISPLAY. END. The Devils in the Details: Case Study #12 (cont.) + + +

58 © 2007 Progress Software Corporation 58 DB-16: In Any Case, the Devil’s in the DataServer Details FOR EACH EXCLUSIVE-LOCK: DISPLAY. END. ___________________________________ SELECT FROM WHERE = -- or -- = The Devils in the Details: Case Study #12 (cont.) + + +

59 © 2007 Progress Software Corporation 59 DB-16: In Any Case, the Devil’s in the DataServer Details  DataServer Rule: Uniqueness is critical to proper functioning of DataServer cursors. Random access reads and all transactional activity is dependent on being able to locate an individual row. The Devils in the Details: Case Study #12 (cont.) + + +

60 © 2007 Progress Software Corporation 60 DB-16: In Any Case, the Devil’s in the DataServer Details  Why can’t data access through a DataServer be a fast as OpenEdge native access ? The Devils in the Details: Performance Study

61 © 2007 Progress Software Corporation 61 DB-16: In Any Case, the Devil’s in the DataServer Details FIND FIRST Customer NO-LOCK NO-ERROR. IF AVAILABLE Customer THEN Cnt = 1. REPEAT: FIND NEXT Customer NO-ERROR. IF NOT AVAILABLE (Customer) THEN LEAVE. Cnt = Cnt + 1. END. OPEN QUERY q FOR EACH Customer NO-LOCK. REPEAT: GET NEXT q. IF NOT AVAILABLE Customer THEN LEAVE. Cnt = Cnt + 1. END. CLOSE QUERY q. The Devils in the Details: Performance Study

62 © 2007 Progress Software Corporation 62 DB-16: In Any Case, the Devil’s in the DataServer Details  Replace FIND statements with FORs & QUERYs FIND FIRST customer -> FOR FIRST customer: END. FIND LAST order -> bBuffer:FIND-LAST().  Be explicit about lock type  Field Lists FOR EACH customer FIELDS(cust-num name) NO-LOCK: Make sure to include all fields you reference. This compiles: FIND FIRST customer FIELDS(cust-num) WHERE CAN-FIND(FIRST order WHERE order.st = cust.st)  Write JOIN-BY-SQLDB queries FOR EACH customer, EACH order:  Index Reposition OPEN QUERY q1 FOR EACH order INDEXED-REPOSITION REPOSITION q1 to recid myid The Devils in the Details: Performance Study

63 © 2007 Progress Software Corporation 63 DB-16: In Any Case, the Devil’s in the DataServer Details  Query structure Don’t get fancy –WHERE (city + STRING(“,”) + state) = … –Complex joins may require a client join or client selection WHERE col1 = INTEGER(‘123’) is better than WHERE STRING(col1) = “123” Try to make your BY clause and the expected INDEX selection compatible to avoid reordering: WHERE col1 = <> AND col2 = <> By col1, BY col2 The Devils in the Details: Performance Study

64 © 2007 Progress Software Corporation 64 DB-16: In Any Case, the Devil’s in the DataServer Details  Query Tuning CACHE-SIZE( ) REVERSE-FROM (no-index-hint hint “run fast”) NO-BIND-WHERE NO-UNIQUE-ORDER-ADDED  Database Optimizations Indexes, covering idx’s (clustered idx (MSS) & “included” columns– MSS2005) Updated Statistics Index rebuild/reorg & Fill Factors, etc. The Devils in the Details: Performance Study

65 © 2007 Progress Software Corporation 65 DB-16: In Any Case, the Devil’s in the DataServer Details  Remember you can always conditionalize: Compile Time &GLOBAL-DEFINE DB-TYPE ORACLE &IF DEFINED ({&ORACLE}) &THEN … Run Time IF DBTYPE(dbname) = “PROGRESS” THEN RUN OpenEdge-optimized-code ELSE RUN DataServer-optimized-code The Devils in the Details: Performance Study

66 © 2007 Progress Software Corporation 66 DB-16: In Any Case, the Devil’s in the DataServer Details  Use stored procedures: RUN STORED-PROC send-sql-statement hdl1 = PROC-HANDLE (“select name, cust_num FROM customer”). FOR EACH proc-text-buffer WHERE PROC-HANDLE = hdl1: DISPLAY proc-text. END. CLOSE STORED-PROC send-sql-statement rtn-stat = PROC-STATUS WHERE PROC-HANDLE = hdl1. DEF VAR ttHndl AS HANDLE DEF TEMP-TABLE tt1 …. ttHndl = TEMP-TABLE tt1:HANDLE. RUN STORED-PROC send-sql-statement (“select name, cust_num FROM customer”) LOAD-RESULT-INTO ttHndl. DEF VAR ttHndl AS HANDLE EXTENT 2. DEF TEMP-TABLE tt1 … ttHndl[1] = TEMP-TABLE tt1:HANDLE. DEF TEMP-TABLE tt2 … ttHndl[2] = TEMP-TABLE tt2:HANDLE. RUN STORED-PROC send-sql-statement (“select name FROM customer; select order-num FROM order”) LOAD-RESULT-INTO ttHndl. The Devils in the Details: Performance Study

67 © 2007 Progress Software Corporation 67 DB-16: In Any Case, the Devil’s in the DataServer Details In Summary  Know thy Client Component (ABL & DataServer)  Know thy access component (drivers & configuration)  Know thy database component (data manager & engine)

68 © 2007 Progress Software Corporation 68 DB-16: In Any Case, the Devil’s in the DataServer Details For More Information, go to…  PSDN “DataServer Best Practices” http://www.psdn.com/library/servlet/KbServlet/ download/1320-102-620/ds_best_practices.pdf  Exchange 07: DB-21 Data Management and Platforms Roadmap and Info Exchange (Wednesday 1:30-3:00 Room #200)

69 © 2007 Progress Software Corporation 69 DB-16: In Any Case, the Devil’s in the DataServer Details Questions?

70 © 2007 Progress Software Corporation 70 DB-16: In Any Case, the Devil’s in the DataServer Details Thank you for your time!

71 © 2007 Progress Software Corporation 71 DB-16: In Any Case, the Devil’s in the DataServer Details


Download ppt "DB-16: In Any Case, the Devil’s in the DataServer Details David Moloney Principal, Progress OpenEdge That which we persist in doing becomes easier, not."

Similar presentations


Ads by Google