php-firebird icon indicating copy to clipboard operation
php-firebird copied to clipboard

Make default transaction Read-Commited RecVersion NoWait (more useful parameters than server defaults)

Open safhome opened this issue 5 years ago • 5 comments

safhome avatar Jul 26 '20 23:07 safhome

This is a rather big and breaking change, I would recommend against it.

mrotteveel avatar Jul 27 '20 08:07 mrotteveel

Default "wait" flag is unusable in real web apps because of many parallel requests. Trying to serialize it with "wait" transactions results in fatal performance degradation. Considering that we haven't settings for default transaction's flags, current defaults make unusable almost all existing CMS with Firebird. With this change we successfully use Joomla! versions from 3.1 upto 3.9 for last 5 years with Firebird as main database for it.

safhome avatar Jul 27 '20 10:07 safhome

Well, I think it's better to implement some kind of function or parameter where we can set as default. Maybe via ini settings. In that case you can specify your custom behaviour without breaking other software.

MartinKoeditz avatar Jul 27 '20 11:07 MartinKoeditz

@safhome It may work for you, but that is not the issue. This changes default behaviour that has been in use for years (decades), and it is relied upon by other applications that could break due to this change (in some cases in hard to notice ways). You are changing the isolation level from concurrency (aka snapshot) to read_committed, which has different visibility rules. And changing wait to nowait could break applications that rely on wait for their correct behaviour.

mrotteveel avatar Jul 27 '20 17:07 mrotteveel

Configuring default transaction parameters would be great feature and much appreciated.

mlazdans avatar May 27 '22 22:05 mlazdans