Informix Transaction Logging
Posted in 2000
Topics: Server Administration, Transactions, Locking & Isolation
I have a question about transaction logging in Informix Dynamic Server
7.3 Our database is in unbuffered logging mode. When I issue an SQL
command in dbaccess, such as "DELETE FROM table1", I soon get an SQL 458
error message - "Long Transaction aborted". There are about 50,000 rows
in this table. I am not issuing a BEGIN WORK statement, so I am curious as
to why transaction logging is still occuring.
To make matters more confusing, we have another database instance (also
in unbuffered logging mode) on our machine and when I issue a "DELETE FROM
table1" command in dbaccess in the other instance, it works fine. The table
in this other instance still has 50,000 rows in it. However, the
transaction log files do not appear to be growing in size when issuing this
command in the second instance. This is the behavior I would expect if I do
not issue a BEGIN WORK statement.
Can somebody shed some light on this as to why I may be getting this
long transaction error message when I have not specified a BEGIN WORK
statement? Thanks.
- Mike Bloom
mbloom@erols.com
Mike,
There is a implicit 'command-level' begin work/commit work arround all
statements. The only time that the implicet begin work is not done is when the
user does an explicit begin work. If you are deleting rows from a logged table,
then the before images of the row is placed into the log. This way the command
can 'rollback' if the command is unsuccessful.
As far as the other table goes - I don't know why you would not be seeing any
logging. The only way that there should not be any logging would be if the
database (or table) is not logged. If I were in your position, I'd cross-check
about the other table that appears not to be logging. If you can verify that it
is not logging, then I'd contact tech support as to why it is not.
Mike Bloom wrote:
> I have a question about transaction logging in Informix Dynamic Server
> 7.3 Our database is in unbuffered logging mode. When I issue an SQL
> command in dbaccess, such as "DELETE FROM table1", I soon get an SQL 458
> error message - "Long Transaction aborted". There are about 50,000 rows
> in this table. I am not issuing a BEGIN WORK statement, so I am curious as
> to why transaction logging is still occuring.
> To make matters more confusing, we have another database instance (also
> in unbuffered logging mode) on our machine and when I issue a "DELETE FROM
> table1" command in dbaccess in the other instance, it works fine. The table
> in this other instance still has 50,000 rows in it. However, the
> transaction log files do not appear to be growing in size when issuing this
> command in the second instance. This is the behavior I would expect if I do
> not issue a BEGIN WORK statement.
> Can somebody shed some light on this as to why I may be getting this
> long transaction error message when I have not specified a BEGIN WORK
> statement? Thanks.
>
> - Mike Bloom
> mbloom@erols.com