Informix

 View Only
  • 1.  Keep definied tables/columns in shared memory?

    Posted Wed October 16, 2019 06:33 AM
    Hello,

    i´d like to know if there is away for Informix to mark some tables or columns to stay "in memory" at long as possible. 
    I know there is the IWA, but we want a to try a more simple solution.

    Informix 12.10 - Workgroup Edition Linux 64bit

    ------------------------------
    Marc Demhartner
    ------------------------------

    #Informix


  • 2.  RE: Keep definied tables/columns in shared memory?

    Posted Wed October 16, 2019 07:09 AM

    Not explicitly. The buffer pool management algorithm should achieve that if the pages are effectively being used (provided you have enough buffer pool). If the pages are not effectively being used it's a bit useless to keep them in memory (the only advantage would be to guarantee the best possible response time IF a query that require them ever was issued).

    In the manuals (old ones) you may find a statement that once did that (before the changing on the buffer pool management):

    SET TABLE|INDEX <NAME> MEMORY_RESIDENT

    The statement is possible still accepted by the parser, but is ignored since version 9.4

    Regards.



    ------------------------------
    FERNANDO NUNES
    ------------------------------



  • 3.  RE: Keep definied tables/columns in shared memory?

    IBM Champion
    Posted Wed October 16, 2019 07:31 AM
    That was an option in v7.30/9.21 but it turned out to be a performance disaster and was removed in 7.31/9.30. The command tool declares a table memory resident was still recognized the last time I tried it,  but it is no-op now.





  • 4.  RE: Keep definied tables/columns in shared memory?

    Posted Wed October 16, 2019 07:51 AM
    The simple way I approach this is to:

    Create chunk(s)/dbspace(s) with a different page size from the others,
    Assign a separate/dedicated/sufficiently sized bufferpool to that page size,
    Put your subject tables in these dbspaces (and perhaps run a SELECT * FROM table at least once to force it to be read).
    Approach their index space similarly where feasible.

    Always had good results/good performance with this approach in 12.10 on Linux, 11.50 on HP-UX, etc.  I prefer it for mostly/almost always read only tables.

    Assumes you have not already used all the page sizes in the existing dbspaces, assumes you have sufficient RAM for the bufferpools  (which, since you want to keep tables in memory, you probably do).

    Hal Maner
    M Systems International, Inc.