SQL/MX 2.x Database and Application Migration Guide (G06.23+, H06.04+, J06.03+)

Converting SQL/MP Applications to SQL/MX
Applications
HP NonStop SQL/MX Database and Application Migration Guide540435-005
10-25
Access Options and Isolation Levels
standard. Isolation levels for transactions are SQL:1999 compliant; you set transaction
isolation levels with the SET TRANSACTION statement.
Isolation Levels Contrasted Between NonStop SQL/MP and NonStop
SQL/MX
BROWSE (NonStop SQL/MP) and READ UNCOMMITTED (NonStop SQL/MX)
have the same implementation. This option is available only for the SELECT
statement.
STABLE (NonStop SQL/MP) and STABLE (NonStop SQL/MX) have the same
implementation. This option is available only for the SELECT statement.
REPEATABLE (NonStop SQL/MP and NonStop SQL/MX) and SERIALIZABLE
(NonStop SQL/MX) have the same implementation; this option holds locks on data
until the end of the transaction.
STABLE Access
How STABLE Access Works
In both SQL/MX and SQL/MP cursor operations using STABLE access, you are
guaranteed another transaction cannot update the row and that the row can be safely
updated without having to check versions of the row data (using UPDATE WHERE
CURRENT OF or DELETE WHERE CURRENT OF). The number of rows that are
locked depends on the value you have set for SYSTEM_DEFAULT attribute
MAX_ROWS_LOCKED_FOR_STABLE_ACCESS.
If you specify STABLE access for an updatable SELECT statement, NonStop SQL/MX
uses that access method. For other statements, NonStop SQL/MX changes the access
method to READ COMMITTED. NonStop SQL/MX does not choose STABLE access
for rowsets.
How READ COMMITTED Differs From STABLE Access
If you choose READ COMMITTED, read a row, and decide to update that row, in the
time between reading the row and making the update, the value might change because
no lock is acquired on the row. If your applications use STABLE access, you might
want to evaluate that use and decide whether you should change the access to
Note. Unless you are writing applications for portability, use isolation levels at the statement
level. The SET TRANSACTION statement might cause a dynamic recompilation of DML
statements within the next transaction. Further, NonStop SQL/MX does not have the
opportunity to optimize query execution plans as it does during static compilation. You can
achieve better performance if you specify isolation levels for individual DML statements.
Note. If your SQL/MP application uses the BROWSE, STABLE, and REPEATABLE keywords,
NonStop SQL/MX accepts the keywords as synonyms for READ UNCOMMITTED, STABLE,
and SERIALIZABLE.