Hi!

"Firebird doesn't write anything to disk for a Select,..."

That's not true. Firebird writes the resultset on HDD when SELECT contains 
ORDER BY (maybe PLAN SORT affect that), and does the ordering in this file.


--- In [email protected], Ann Harrison <aharrison@...> wrote:
>
> On Thu, Oct 27, 2011 at 11:11 AM, dsaunders1971 <dsaunders1971@...>wrote:
> 
> > I have a question about why Firebird writes / or changes so much data in
> > the database file when you run a simple select query.
> >
> 
> Firebird doesn't write anything to disk for a Select, unless cooperative
> garbage collection is on and there are old record versions to remove.
> 
> I  suspect from your other message that you are creating a new transaction
> for each select.  Every time you start a transaction, Firebird changes the
> "next transaction" value on the database header page.  That change must be
> flushed to disk before any changes made by the transaction and before the
> transaction commits.  Every time you commit or rollback a transaction, the
> final state of the transaction must be recorded on a transaction inventory
> page and that change must be written to disk.  There's a slight possibility
> that recording the transaction's final state will require allocating a new
> transaction inventory page, which causes a few other writes.
> 
> The way to avoid all this, assuming that your query is read only and the
> only statement in the transaction, is to set the transaction state and
> isolation to READ_ONLY and READ_COMMITTED.  In that mode, the transaction
> does not get a unique transaction identifier so it avoids writing the header
> and transaction inventory pages.
> 
> >
> Good luck,
> 
> Ann
> 
> 
> [Non-text portions of this message have been removed]
>


Reply via email to