(Continued from page 14)

While this scheme allows for much larger tables (2^23 pages * page_size), it does not provide for more than 512 rows per page.  The following is a matrix of the maximum number of rows possible per page.  This test was conducted by creating a table with a single column defined as "char(1) not null not default".

Page Size               Max # Rows (per page)
    2 KB                           511
                 4 KB                           138
                 8 KB                           279
               16 KB                           512
               32 KB                           512
               64 KB                           512

This may not be much of an issue when using large tuple sizes, but is definitely an issue that needs to be evaluated prior to implementation.  Given the large tuple overhead and limited row capacity per page it is generally not advisable to use this feature on very small rows.

Row-level locking is a new feature that can be beneficial to some environments (usually those with concurrency problems due to schema and/or transaction design, where it is not feasible to redesign the database and/or those programs).  This feature is only available for the larger page sizes and is set with the "set lockmode" statement.  When row-level locking is used it is very important to increase both the locks per transaction and the maxlocks values (or concurrency will likely decrease instead of improve).  OpenIngres 2.0 / Ingres II provide significantly more locks (up to 2 billion within an installation) to accommodate this feature.

Some of the PROS of using > 2 KB page sizes include: ability to have a larger row size; ability to have row-level locking; potential to improve performance due to decreased I/O; and the potential to save disk space.  Some of the CONS include limited row capacity; increased row overhead; potential to have a negative impact on performance if improperly configured; and the potential to con

sume more disk space.  Also, if tools like "auditdb" are important to your site make sure to test them thoroughly on the larger sized pages.

All in all this is a great feature for many environments.  As with any type of change it is important to define the goal of the change, collect baseline metrics, benchmark the change, and only implement if it makes good business and technical sense.  Please refer to the Ingres II / OpenIngres 2.0 Database Administrator's Guide for more information on the topics discussed in this article.

Chip Nicolett is a senior consultant with Caribou Lake Software. He is a former CA employee, and the current Vice President of the NAIUA. He has been working with Ingres in a variety of positions for many years, with current focus being on Java connectivity.

                                                previous.gif (4291 bytes)        next.gif (4312 bytes)