Please enable JavaScript to view this site.

R:BASE 11 Help

Navigation: Command Index > S > SET

PAGELOCK

Scroll Prev Top Next More

Operating Condition

 

Syntax: SET PAGELOCK ON/OFF

 

Mode: Multi-user

 

Default: ON

 

PAGELOCK specifies how R:BASE locks data when updating and deleting rows.

 

The settings for PAGELOCK are:

 

ON - R:BASE uses page locking or row locking as appropriate. When PAGELOCK is ON and two or more users are updating rows within the same page of data, R:BASE only lets the first user update rows--the other users are locked out until the first user's update has been completed.        

 

OFF - R:BASE uses a fast row-locking method where only row locking is applied with no page locking. When PAGELOCK is OFF, you can lock rows of data instead of locking a page of data. You increase multi-user performance when PAGELOCK is OFF. And even more so when STATICDB and FASTLOCK are on.        

 

If you know that your application mainly updates or deletes data a row at a time, rather than many rows, set PAGELOCK to OFF for row locking. In this case, R:BASE locks a row, reads the row, makes the change, and then releases the row. Otherwise, set PAGELOCK ON for page locking when you are doing an UPDATE and/or DELETE affecting many rows in a table.

 

Keep in mind that the PAGELOCK setting can be changed dynamically and can be different for different users using the same database.

 

For the value of PAGELOCK to have any impact at all, ROWLOCKS must first be ON.

 

Technically, the efficient and fastest method for updating data in multi-user environment is to SET STATICDB ON, SET ROWLOCKS ON, SET FASTLOCK ON, and SET PAGELOCK OFF. This particular combination will result in the fewest contentions between users.

 

Notes:

 

FASTLOCK and PAGELOCK can be set on at the same time.

Setting STATICDB and FASTLOCK to ON (in that order), with PAGELOCK set to OFF will significantly increase multi-user performance with individual row changes.

PAGELOCK is not the same as SET ROWLOCKS.

Setting the value of PAGELOCK does not change the setting of ROWLOCKS.

The PAGELOCK setting can be changed dynamically and can be different for different users using the same database.

 

Example for Testing:

 

 -- The UPDATE must alter the values for many rows

SET FEEDBACK ON

SET PAGELOCK ON -- use page locking

UPDATE <tablename> SET <columnname> = value  -- no WHERE Clause

SET PAGELOCK OFF -- use row locking

SET FEEDBACK OFF

CLS

 

See Also:

 

Environment Optimization