[ http://issues.apache.org/jira/browse/DERBY-367?page=comments#action_12314634 ]
Suresh Thalamati commented on DERBY-367: ---------------------------------------- It might be good idea to mention about this new procedure in Server/Admin Guide: Reclaiming unused space: Chapter . > include documentation for SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE() in the > documentation > ---------------------------------------------------------------------------------------- > > Key: DERBY-367 > URL: http://issues.apache.org/jira/browse/DERBY-367 > Project: Derby > Type: Improvement > Components: Documentation > Versions: 10.1.1.0 > Reporter: Mike Matrigali > Assignee: Jeff Levitt > Priority: Minor > Fix For: 10.1.1.0 > Attachments: derby367modified.zip > > Include documentation for SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE in the > reference manual. It should be in the same section as the current > documentation for SYSCS_UTIL.SYSCS_COMPRESS_TABLE() > Here is a badly formatted version of what should go there: > <p> > Use the SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE system procedure to reclaim > unused, allocated space in a table and its indexes. Typically, unused > allocated > space exists when a large amount of data is deleted from a table, and there > have not been subsequent inserts to use the space freed by the deletes. > By default, Derby does not return unused space to the operating system. For > example, once a page has been allocated to a table or index, it is not > automatically returned to the operating system until the table or index is > destroyed. SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE allows you to return > unused > space to the operating system. > <p> > This system procedure can be used to force 3 levels of in place compression > of a SQL table: PURGE_ROWS, DEFRAGMENT_ROWS, TRUNCATE_END. Unlike > SYSCS_UTIL.SYSCS_COMPRESS_TABLE() all work is done in place in the existing > table/index. > <p> > Syntax: > SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE( > IN SCHEMANAME VARCHAR(128), > IN TABLENAME VARCHAR(128), > IN PURGE_ROWS SMALLINT, > IN DEFRAGMENT_ROWS SMALLINT, > IN TRUNCATE_END SMALLINT) > <p> > SCHEMANAME: > An input argument of type VARCHAR(128) that specifies the schema of the > table. Passing a null will result in an error. > <p> > TABLENAME: > An input argument of type VARCHAR(128) that specifies the table name of the > table. The string must exactly match the case of the table name, and the > argument of "Fred" will be passed to SQL as the delimited identifier 'Fred'. > Passing a null will result in an error. > <p> > PURGE_ROWS: > If PURGE_ROWS is set to non-zero then a single pass is made through the table > which will purge committed deleted rows from the table. This space is then > available for future inserted rows, but remains allocated to the table. > As this option scans every page of the table, it's performance is linearly > related to the size of the table. > <p> > DEFRAGMENT_ROWS: > If DEFRAGMENT_ROWS is set to non-zero then a single defragment pass is made > which will move existing rows from the end of the table towards the front > of the table. The goal of the defragment run is to empty a set of pages > at the end of the table which can then be returned to the OS by the > TRUNCATE_END option. It is recommended to only run DEFRAGMENT_ROWS, if also > specifying the TRUNCATE_END option. This option scans the whole table and > needs to update index entries for every base table row move, and thus > execution > time is linearly related to the size of the table. > <p> > TRUNCATE_END: > If TRUNCATE_END is set to non-zero then all contiguous pages at the end of > the table will be returned to the OS. Running the PURGE_ROWS and/or > DEFRAGMENT_ROWS passes options may increase the number of pages affected. > This option itself does no scans of the table, so performs on the order of a > few system calls. > <p> > SQL example: > To compress a table called CUSTOMER in a schema called US, using all > available compress options: > call SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE('US', 'CUSTOMER', 1, 1, 1); > To quickly just return the empty free space at the end of the same table, > this option will run much quicker than running all phases but will likely > return much less space: > call SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE('US', 'CUSTOMER', 0, 0, 1); > Java example: > To compress a table called CUSTOMER in a schema called US, using all > available compress options: > CallableStatement cs = conn.prepareCall > ("CALL SYSCS_UTIL.SYSCS_COMPRESS_TABLE(?, ?, ?, ?, ?)"); > cs.setString(1, "US"); > cs.setString(2, "CUSTOMER"); > cs.setShort(3, (short) 1); > cs.setShort(4, (short) 1); > cs.setShort(5, (short) 1); > cs.execute(); > To quickly just return the empty free space at the end of the same table, > this option will run much quicker than running all phases but will likely > return much less space: > CallableStatement cs = conn.prepareCall > ("CALL SYSCS_UTIL.SYSCS_COMPRESS_TABLE(?, ?, ?, ?, ?)"); > cs.setString(1, "US"); > cs.setString(2, "CUSTOMER"); > cs.setShort(3, (short) 0); > cs.setShort(4, (short) 0); > cs.setShort(5, (short) 1); > cs.execute(); > <p> > It is recommended that the SYSCS_UTIL.SYSCS_COMPRESS_TABLE procedure is > issued in auto-commit mode. > Note: This procedure acquires an exclusive table lock on the table being > compressed. All statement plans dependent on the table or its indexes are > invalidated. For information on identifying unused space, see the Derby > Server and Administration Guide. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira