home *** CD-ROM | disk | FTP | other *** search
/ Shareware 1 2 the Maxx / sw_1.zip / sw_1 / TEXT / PDX_ALL.ZIP / TI527.ASC < prev    next >
Text File  |  1991-09-11  |  27KB  |  727 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.   PRODUCT  :  PARADOX                                NUMBER  :  527
  9.   VERSION  :  ALL
  10.        OS  :  DOS
  11.      DATE  :  September 11, 1991                      PAGE  :  1/11
  12.  
  13.     TITLE  :  Performance Notes for Paradox 3.0 Reviewers
  14.  
  15.  
  16.  
  17.  
  18.   Paradox  provides  an  environment  in  which  even  a relatively
  19.   inexperienced database user can  work  quickly  and productively.
  20.   Part of its power  comes  from the fact that it hides unnecessary
  21.   detail from the user.    As  Paradox  is executing an interactive
  22.   command from the user, it may also be building tables  that allow
  23.   major changes to  be  undone, updating the display or environment
  24.   as  appropriate,  managing  memory,  checking  the  integrity  of
  25.   tables, or ensuring  that  consistency  is  maintained  between a
  26.   table and its forms and reports.  The extra services that Paradox
  27.   performs  as  a  part  of  many  operations  allow  the  user  to
  28.   concentrate more on the work to be done than on the  steps needed
  29.   to get there.  This makes Paradox easier to learn and use, but no
  30.   less powerful; in fact, Paradox's unobtrusive assistance makes it
  31.   more powerful for many users than competitive products.
  32.  
  33.   Consider  a  menu  selection that makes a given record number the
  34.   current record.  Even for such a simple operation,   Paradox does
  35.   more than it is asked to  do:    it also refreshes the display to
  36.   show the new current record (in context in its table, if the user
  37.   is  in "table view").  This is a task that might require a second
  38.   command in  another database product.  The effect of anticipating
  39.   the user's likely next request and performing it automatically is
  40.   to maintain the continuity of the session, allowing  the  user to
  41.   accomplish more work with less effort.
  42.  
  43.   When reviewing Paradox 3.0's performance, it is important to take
  44.   into account that a Paradox command may do more work  and deliver
  45.   more benefits  than  are  obvious  at  first.   In this paper, we
  46.   provide a narrative on the  many ways that Paradox provides extra
  47.   support  behind  the  scenes, along with tips on specific ways to
  48.   measure performance  without  inadvertently  including  the extra
  49.   support as well.    We  have  tried to organize the discussion by
  50.   functional areas, but some topics cut across several  areas.   In
  51.   particular,  benchmark  results for almost  every  operation  are
  52.   affected by Paradox's virtual memory  management,  so  we discuss
  53.   this topic first.
  54.  
  55.   Memory Management________________________________________________
  56.  
  57.   Paradox's virtual memory manager makes good use of as much memory
  58.   as is available, both  to  hold  recently-used  blocks of data in
  59.   memory and to store PAL procedures.  Consequently, timing results
  60.   are sensitive to the amount  of memory available, relative to the
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.   PRODUCT  :  PARADOX                                NUMBER  :  527
  75.   VERSION  :  ALL
  76.        OS  :  DOS
  77.      DATE  :  September 11, 1991                      PAGE  :  2/11
  78.  
  79.     TITLE  :  Performance Notes for Paradox 3.0 Reviewers
  80.  
  81.  
  82.  
  83.  
  84.   size of the tables used.  When tables are fairly small  and there
  85.   is ample memory,  many  operations  will  find most or all of the
  86.   data they need already in memory, and will run quickly.   Paradox
  87.   2.0 can also use expanded memory -- either LIM 3.2 EMS or EEMS --
  88.   and Paradox 3.0 adds support for LIM 4.0 EMS.
  89.  
  90.   One  of  the  benefits of Paradox's memory management is that the
  91.   second and later accesses  to  a  record  are usually much faster
  92.   than  the  first.   This is an advantage in everyday use that may
  93.   not show up in benchmark tests, which often start  from  a  clean
  94.   state or do sequential  operations  on  large  files.  In general
  95.   use, many operations do  access  the  same  fairly small group of
  96.   records that previous operations have loaded into memory. Paradox
  97.   can be expected to perform well in these cases.
  98.  
  99.   Especially in Paradox 386 and  Paradox OS/2, you should tune both
  100.   the amount of  memory  taken and its distribution between storage
  101.   of recently-used blocks of  data,  and  storage of PAL procedures
  102.   according to your application's needs.    Because  these products
  103.   offer  address spaces far larger than  DOS's  one  megabyte,  the
  104.   amount  of  memory  available  to  Paradox at start-up  can  vary
  105.   widely.  This gives you more leeway:  if you  are  running a very
  106.   complex application, you should favor procedure storage space; if
  107.   you  are  managing  very large tables, you should favor space for
  108.   data  blocks.    Note that Paradox  OS/2  cannot  tell  how  much
  109.   physical memory  is  available,  so  it  takes  relatively little
  110.   memory by default, on  the  assumption  that  you will be running
  111.   several  other  sessions  as  well.   Knowing how much memory  is
  112.   available and how many sessions you are likely to  run,  you  can
  113.   apportion memory for better performance.
  114.  
  115.   Memory Management Benchmarking Tips______________________________
  116.  
  117.   Virtual memory
  118.  
  119.        Remember that tests that start  with memory clear do not let
  120.        Paradox's memory management work to  best  advantage.   Some
  121.        tests should reflect the fact that in everyday  work,  it is
  122.        common to repeatedly use the same small set of data.
  123.  
  124.   EMS
  125.        Use  expanded  memory,  preferably expanded memory following
  126.        the LIM 4.0 or AST EEMS spec., if possible.
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.   PRODUCT  :  PARADOX                                NUMBER  :  527
  141.   VERSION  :  ALL
  142.        OS  :  DOS
  143.      DATE  :  September 11, 1991                      PAGE  :  3/11
  144.  
  145.     TITLE  :  Performance Notes for Paradox 3.0 Reviewers
  146.  
  147.  
  148.  
  149.  
  150.   Paradox 386 and Paradox OS/2
  151.  
  152.        If using Paradox 386 or  Paradox  OS/2,  match  your command
  153.        line options to your environment and to the kind of work you
  154.        will be doing in Paradox.
  155.  
  156.   Queries
  157.  
  158.        Paradox's Query-by-Example facility  provides  many examples
  159.        of extra services that are provided without explicit request
  160.        from  the  user.    Probably  the  most  fundamental is  its
  161.        handling   of  duplicate  records.    Queries  often   yield
  162.        duplicates, even when based on keyed tables, and usually you
  163.        do not want duplicates in  the answer.  Paradox was designed
  164.        with  the  idea  that query results, in  addition  to  being
  165.        correct, should be  presented  in an easy and usable format.
  166.        Accordingly, Paradox  suppresses  duplicate  records  in the
  167.        ANSWER  table by default and, in the  course  of  doing  so,
  168.        provides another service:  it  sorts the ANSWER table.  (You
  169.        can use CheckPlus instead of Check in the query statement to
  170.        omit  the  sort  and  retain  duplicates, if desired.)    In
  171.        Paradox  3.0,  you  can select the sort  fields  and  choose
  172.        ascending or descending sort for each,  making  a subsequent
  173.        sort step unnecessary.
  174.  
  175.        FIND queries also provide more  support for the user than is
  176.        evident initially.  When a FIND query is performed, the only
  177.        outward consequence  is that the cursor is positioned to the
  178.        first record that satisfies  the  query.    However, Paradox
  179.        also builds an  ANSWER  table  containing  all  records that
  180.        match the selection  criteria,  making it easy to locate the
  181.        desired  record  even  if it is not the first match.  If you
  182.        know you do not want to see any record but the  first match,
  183.        it is faster to use Image/Zoom/Record instead (and note that
  184.        here too Paradox positions to the desired record, so you can
  185.        see it in context).
  186.  
  187.        One  final  example:    Whenever  a query changes  a  table,
  188.        Paradox keeps a log of  the affected records in the CHANGED,
  189.        INSERTED, or DELETED table (depending on the type of query).
  190.        In the event of a  mistake, the entire operation can quickly
  191.        be  undone using this log table.  As a result, it is safe to
  192.        make complex changes to a table  without  writing procedural
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.   PRODUCT  :  PARADOX                                NUMBER  :  527
  207.   VERSION  :  ALL
  208.        OS  :  DOS
  209.      DATE  :  September 11, 1991                      PAGE  :  4/11
  210.  
  211.     TITLE  :  Performance Notes for Paradox 3.0 Reviewers
  212.  
  213.  
  214.  
  215.  
  216.        code and without exhaustive testing -- if you make the wrong
  217.        changes, you  can always reverse them and redo the operation
  218.        correctly.  Overall productivity is improved as a result.
  219.  
  220.   Query Benchmarking Tips__________________________________________
  221.  
  222.   Duplicates
  223.  
  224.        If  a  query  will not select duplicates -- for instance, if
  225.        the table's key field(s)  are  selected  -- use CheckPlus to
  226.        prevent sorting.
  227.  
  228.   Finding just one record
  229.  
  230.        Use Image/Zoom/Record or the  PAL  LOCATE  command to find a
  231.        single record in a table.
  232.  
  233.   Controlling the ANSWER table's layout
  234.  
  235.        Use   query   capabilities   such   as    column   rotation,
  236.        CheckDescending, and the AS  operator,  to  give  the ANSWER
  237.        table the desired  layout.   This can eliminate a subsequent
  238.        sort or restructure step.
  239.  
  240.   Indexes
  241.  
  242.        Although  Paradox  queries  always  give  the  same  results
  243.        whether  the  queried  tables  are  indexed  or   not,  they
  244.        sometimes run much faster when appropriate indexes do exist.
  245.        We turn to this topic next.
  246.  
  247.        Paradox offers a variety of indexing  alternatives.   First,
  248.        you may chose to define a primary key for a table  (in which
  249.        case it is sorted and no  two  records may have the same key
  250.        values) or you may leave the table unkeyed (in which case it
  251.        is not  ordered and duplicate records are allowed).  Second,
  252.        you may create a  secondary  index for any field in a table,
  253.        whether it has a primary key or not.  Finally, you may chose
  254.        to rebuild a table's secondary indexes whenever the table is
  255.        changed (for indexed tables only)  or only when the table is
  256.        queried.  No matter what kind of data a  table  contains  or
  257.        how it is queried and  updated,  one  of  these alternatives
  258.        will be suitable.
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.   PRODUCT  :  PARADOX                                NUMBER  :  527
  273.   VERSION  :  ALL
  274.        OS  :  DOS
  275.      DATE  :  September 11, 1991                      PAGE  :  5/11
  276.  
  277.     TITLE  :  Performance Notes for Paradox 3.0 Reviewers
  278.  
  279.  
  280.  
  281.  
  282.        A table that will be queried should generally have a primary
  283.        index,  since this will speed up  searches  on  key  values.
  284.        Non-key  fields  that  are  often  the  basis  of  selection
  285.        criteria will benefit from having  secondary  indexes.   You
  286.        will  notice  that  it is not even necessary to tell Paradox
  287.        which fields to  create  secondary indexes for; just ask for
  288.        QuerySpeedup on the most common  queries,  and  Paradox will
  289.        decide  where  indexes  are  most  needed.  This is a  prime
  290.        example of Paradox's ability to increase  rather  than limit
  291.        users' choices  by hiding detail.  For most applications, it
  292.        is better to request maintained secondary indexes (these are
  293.        selected in the Custom Configuration  Program,  or  by using
  294.        the  MAINTAINED option of the INDEX  command).    There  are
  295.        exceptions, however; for instance,  a  large  table  that is
  296.        only updated overnight and is queried heavily during the day
  297.        is a good candidate for non-maintained secondary indexes.
  298.  
  299.  
  300.   Index Benchmarking Tips__________________________________________
  301.  
  302.   Building an index
  303.  
  304.        As  we  will  see  below,  Modify/Restructure  can  create a
  305.        primary index, but does too much additional work to give you
  306.        an  accurate  measure  of indexing time.  To see how quickly
  307.        Paradox builds an  index,  use  PAL's  INDEX  command, which
  308.        builds a secondary index on a specified field.
  309.  
  310.   Using an index
  311.  
  312.        When you want  to  measure query performance using an index,
  313.        on  the  other  hand,  it  is  important  that  you  do  not
  314.        inadvertently include the time taken to  rebuild  the index.
  315.        You will want to use maintained indexes here.
  316.  
  317.   Changing a Table's Structure
  318.  
  319.        Another area  in which Paradox provides more support than is
  320.        evident at first glance  is  Modify/Restructure.    From the
  321.        user's point of view, Restructure allows changing  a table's
  322.        primary  key,  adding, deleting, or  reordering  fields,  or
  323.        changing field names and lengths.  In the  course  of making
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.   PRODUCT  :  PARADOX                                NUMBER  :  527
  339.   VERSION  :  ALL
  340.        OS  :  DOS
  341.      DATE  :  September 11, 1991                      PAGE  :  6/11
  342.  
  343.     TITLE  :  Performance Notes for Paradox 3.0 Reviewers
  344.  
  345.  
  346.  
  347.  
  348.        these changes, Restructure  does three other important kinds
  349.        of work behind the scenes:
  350.  
  351.              o  Unless  requested  not  to,  Restructure  builds  a
  352.                 PROBLEMS table containing any records in which data
  353.                 would be lost  or  truncated as a result of changes
  354.                 to field types or lengths.    Like  other temporary
  355.                 tables, PROBLEMS is presented to the user in sorted
  356.                 order.
  357.  
  358.              o  It  also removes references to deleted fields  from
  359.                 forms,  reports,  image   settings,   and  validity
  360.                 checks.  Users have as much flexibility as possible
  361.                 to change existing  tables without losing the forms
  362.                 and reports they have  defined  for  them,  yet are
  363.                 guaranteed   that  these  forms  and  reports   are
  364.                 consistent  with the new table structure.  [expand:
  365.                 users have  object-oriented  view  --  field either
  366.                 exists or it doesn't -- and this gives flexibility,
  367.                 integrity, and simplicity]
  368.  
  369.              o  Finally,  Restructure  always   rebuilds   a  table
  370.                 completely:  it  brings  records back into physical
  371.                 sequence, consolidates partly-full blocks of  data,
  372.                 returns the space freed by this rebuilding  to DOS,
  373.                 and rebuilds primary and secondary indexes. Clearly
  374.                 it is not appropriate to compare Paradox's  time to
  375.                 change  a  field's  type,  for instance, to another
  376.                 product's  time  for the same  change,  unless  the
  377.                 other product  also  provides  the  same integrity-
  378.                 checking and table-rebuilding capabilities.
  379.  
  380.   Restructure Benchmarking Tips____________________________________
  381.  
  382.   Changing table structure
  383.  
  384.        You cannot get a time for a simple table  change  (delete  a
  385.        field,  change a field's data type,  add  a  primary  index,
  386.        etc.) that does not include  the  additional  work discussed
  387.        above.   Since these operations are not done frequently once
  388.        a table contains data and is being used regularly, Paradox's
  389.        design favors thoroughness and  data  integrity  over speedy
  390.        execution, in this case.
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.   PRODUCT  :  PARADOX                                NUMBER  :  527
  405.   VERSION  :  ALL
  406.        OS  :  DOS
  407.      DATE  :  September 11, 1991                      PAGE  :  7/11
  408.  
  409.     TITLE  :  Performance Notes for Paradox 3.0 Reviewers
  410.  
  411.  
  412.  
  413.  
  414.   Compacting a table
  415.  
  416.        You can force Paradox to  rebuild a table as described above
  417.        by entering the Restructure  subsystem  and  pressing Do_It!
  418.        without  making any changes.  If  the  table  contains  many
  419.        deleted records, this will  compact  it  and, thus, speed up
  420.        operations  that  use  it.    Many  Paradox  users regularly
  421.        restructure their tables for just this reason, and it may be
  422.        appropriate to do so when benchmarking as well.
  423.  
  424.   Building an index
  425.  
  426.        As  we have seen, the PAL command  INDEX,  which  builds  or
  427.        rebuilds a secondary index  on  the  field you select, gives
  428.        the best measure of indexing time.
  429.  
  430.   Renaming fields in ANSWER
  431.  
  432.        Use the  AS  operator  in  a  query  to rename fields in the
  433.        ANSWER table.  This is especially useful for CALC queries or
  434.        when two tables in the query have fields with the same name.
  435.  
  436.   Import/Export and Reporting
  437.  
  438.        Sometimes Paradox provides several ways to perform  the same
  439.        general operation, each with its own options and advantages.
  440.        Which alternative you choose will  depend  on  your specific
  441.        circumstances  and objectives.  When optimum performance  is
  442.        the objective, it  is  especially  important  to  select the
  443.        alternative that best satisfies your needs.  We will look at
  444.        two examples, one that involves inputting data into Paradox,
  445.        and one that involves report output.
  446.  
  447.        Paradox  imports  data  in  more  formats  than  most  other
  448.        database products,  and  can  in  every  case  determine the
  449.        structure   of   the  target  table   without   the   user's
  450.        involvement.  When importing data in a  well-defined format,
  451.        such as DIF, this  is  straightforward.   For other formats,
  452.        such as 1-2-3  spreadsheets and comma-delimited ASCII files,
  453.        Paradox must pass through the  file  to  be  imported twice,
  454.        once to select data types and once to import the data.  This
  455.        is slow, but gives the best possible support for interactive
  456.        use.  In an application, if the format of the  incoming data
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.   PRODUCT  :  PARADOX                                NUMBER  :  527
  471.   VERSION  :  ALL
  472.        OS  :  DOS
  473.      DATE  :  September 11, 1991                      PAGE  :  8/11
  474.  
  475.     TITLE  :  Performance Notes for Paradox 3.0 Reviewers
  476.  
  477.  
  478.  
  479.  
  480.        is  known  and  the  data  is  clean,  you can  instead  use
  481.        Ascii/Import/AppendDelimited.  In this case, you provide the
  482.        target table, and Paradox  only  makes  one pass through the
  483.        data, building a PROBLEMS table  if any input records do not
  484.        have the necessary structure.
  485.  
  486.        Users often want to  borrow  reports  from an existing table
  487.        for  a  newly-created  table,  most  often  to  associate an
  488.        already-defined report  with a new ANSWER table.  In Paradox
  489.        2.0, Copy/JustFamily is usually the best  tool  to associate
  490.        forms or reports with a table; to empty the target table and
  491.        add  records  into  it  is  slower.    In  Paradox  3.0,  an
  492.        individual  form  or  report may be copied from one table to
  493.        another.
  494.  
  495.   Import/Export and Report Benchmarking Tips_______________________
  496.  
  497.   Joining tables
  498.  
  499.        In  Paradox 3.0, you can use external  tables  in  a  report
  500.        specification to satisfy most requests for reports that draw
  501.        data from several tables.   Only  the  most  complex reports
  502.        require a query step to assemble the data before reporting.
  503.  
  504.   Sorting
  505.  
  506.        Grouping  in  a  report implies sorting; there is no need to
  507.        sort a table before reporting on it.
  508.  
  509.   Copying reports to an ANSWER table
  510.  
  511.        In  general,  copying  a  single  report from one  table  to
  512.        another is the fastest way to use an existing report  with a
  513.        new ANSWER table.
  514.  
  515.   Ascii Import
  516.  
  517.        For fast import into an ASCII table, define the target table
  518.        ahead of time and use the AppendDelimited option to fill it.
  519.  
  520.   PAL
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.   PRODUCT  :  PARADOX                                NUMBER  :  527
  537.   VERSION  :  ALL
  538.        OS  :  DOS
  539.      DATE  :  September 11, 1991                      PAGE  :  9/11
  540.  
  541.     TITLE  :  Performance Notes for Paradox 3.0 Reviewers
  542.  
  543.  
  544.  
  545.  
  546.        A program  in Paradox's programming language, PAL, can be as
  547.        simple as a small macro or a few recorded  keystrokes.    At
  548.        the   other   extreme,  PAL  provides   many   features   of
  549.        contemporary  programming languages, such as arrays, DO  and
  550.        FOR  statements,  procedures  with  arguments   and  private
  551.        variables,  and  many  functions  for testing system status.
  552.        Using these  features,  developers  can  write  complex  and
  553.        sophisticated Paradox applications.
  554.  
  555.        It  is possible to write a  PAL  application  without  using
  556.        procedures.   However, programs that use procedures,  beside
  557.        being cleaner and easier to debug, usually run faster.  Once
  558.        an application is completed, it  is  generally  desirable to
  559.        store  its  procedures  in  procedure libraries.  Procedures
  560.        from libraries  usually run faster than those in scripts (as
  561.        PAL   programs  are  often  called),  especially  in   large
  562.        applications, because libraries allow procedure swapping.
  563.  
  564.   PAL Benchmarking Tips____________________________________________
  565.  
  566.   Procedures
  567.  
  568.        Keep PAL procedures fairly small,  store  them  in procedure
  569.        libraries and use procedure calls that  allow  swapping, and
  570.        let Paradox manage loading and releasing of procedures.
  571.  
  572.   Network Topics
  573.  
  574.        Paradox's support  for  local-area  networks  is  a  natural
  575.        extension of its single-user feature set.  One  of  its main
  576.        objectives   is  to  allow  concurrent  operation   wherever
  577.        possible.  Many users can read a table -- for the purpose of
  578.        viewing it, querying  it,  reporting from it, or graphing it
  579.        -- simultaneously.  Although only  one user can edit a table
  580.        at  a time, a second update mode,  CoEdit,  is  provided  to
  581.        allow   several   users  to  change   a   table's   contents
  582.        concurrently.  In  CoEdit,  users lock only the records they
  583.        are changing;  other  users  are  prevented  from  trying to
  584.        change  a  record  as long as it is locked, but may lock and
  585.        change  any other records.  Still,  other  users  may  view,
  586.        query, or report from the table while it is being coedited.
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.   PRODUCT  :  PARADOX                                NUMBER  :  527
  603.   VERSION  :  ALL
  604.        OS  :  DOS
  605.      DATE  :  September 11, 1991                     PAGE  :  10/11
  606.  
  607.     TITLE  :  Performance Notes for Paradox 3.0 Reviewers
  608.  
  609.  
  610.  
  611.  
  612.        Paradox never allows concurrent access  that  would  put the
  613.        integrity of the data  at  risk,  however.   To prevent such
  614.        access, it  places  locks  on  resources  --  tables, forms,
  615.        reports, and other Paradox objects -- that are in use. Other
  616.        users  may  or  may not be allowed to share these resources,
  617.        depending on what type of lock is in force and what  type of
  618.        locks they require for the operations they want to perform.
  619.  
  620.        Here again,  we see how unobtrusively Paradox works to allow
  621.        you to concentrate on the work to be  done  and  not  on the
  622.        mechanics of getting it done.  While you continue to work as
  623.        you  would  on  a  single-user installation, Paradox ensures
  624.        that  needed  resources  are  available  and  locks  them to
  625.        prevent inappropriate concurrent use by others.    You never
  626.        have to inquire if a table or record is  locked  before  you
  627.        try  to  use  it, and you are never penalized if you fail to
  628.        check what other users are doing before you begin your work.
  629.        As long as  there  is  no  conflict,  you do not need to pay
  630.        attention  to  what  other users on the network are doing --
  631.        and  as  soon  as  there  is a conflict, Paradox tells  you.
  632.        Moreover, Paradox does not just  tell you that a resource is
  633.        unavailable; it also tells who  is  using  the  resource you
  634.        need.
  635.  
  636.        You can, however, ask Paradox  to keep you posted on changes
  637.        other  users are making to the tables  you  are  viewing  or
  638.        using.   By adjusting the AutoRefresh interval, you can have
  639.        their work reflected on your screen almost instantly, so you
  640.        will always know as  you  begin  updating  a record that the
  641.        values you are looking at are completely up-to-date.  Or you
  642.        can turn off  AutoRefresh.   In either case, Paradox informs
  643.        you of changes you need to know about -- for example, if you
  644.        attempt to lock a record when your display of it  is out-of-
  645.        date, Paradox will update  your  display  before it lets you
  646.        begin entering your changes.
  647.  
  648.   Network Benchmarking Tips________________________________________
  649.  
  650.   Locking
  651.  
  652.        In addition to  the  implicit locking discussed above, it is
  653.        also possible to lock tables  explicitly through PAL.  In an
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.   PRODUCT  :  PARADOX                                NUMBER  :  527
  669.   VERSION  :  ALL
  670.        OS  :  DOS
  671.      DATE  :  September 11, 1991                     PAGE  :  11/11
  672.  
  673.     TITLE  :  Performance Notes for Paradox 3.0 Reviewers
  674.  
  675.  
  676.  
  677.  
  678.        application, it is  better  to lock explicitly and test that
  679.        the lock succeeded.
  680.  
  681.   Using CoEdit
  682.  
  683.        CoEdit in a shared directory gives maximum  concurrency, but
  684.        the additional overhead of record-locking  inevitably causes
  685.        some   performance   degradation.      Edit   gives   better
  686.        performance.  CoEdit  with  exclusive use of a directory can
  687.        be  faster  than  Edit, because it can omit both the record-
  688.        locking and the transaction log that Edit maintains.
  689.  
  690.   Improving network performance
  691.  
  692.        Our default  time of three seconds for AutoRefresh assumes a
  693.        fairly  powerful network, and gives up  a  fraction  of  its
  694.        resources  in order to keep all users  up-to-date.    For  a
  695.        heavily-loaded network, you may want to set  the AutoRefresh
  696.        interval  higher, to work in forms  view  instead  of  table
  697.        view, or to use  DataEntry  instead of CoEdit.  Any of these
  698.        will decrease network traffic.
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.