Subject | Re: Hanging by a Thread |
---|---|
Author | Adam |
Post date | 2007-09-29T07:24:46Z |
--- In firebird-support@yahoogroups.com, "inoffensive_2006"
<larryl_ya-hoo_groups@...> wrote:
the application and database engine are on the same machine or not.
Just be aware that the database file must be on a locally attached
drive to the machine running Firebird, not a share.
connection for each thread. This may explain your hanging if you are
not doing this.
Firebird, because the data pages must all be visited to do the count.
Locking databases can just store the count against the table metadata,
but MGA databases need to offer a different number depending on the
transaction isolation.
Adam
<larryl_ya-hoo_groups@...> wrote:
>This is fine, there is no difference (except for performance) whether
> Hi Folks:
>
> I'm developing an application on Window's XP media,
> a dual core AMD, with Visual C++ 6.0. Firebird 2.0.1
> Super Server and the current IBPP. The database is
> running on the same machine as the application, but
> I'd like to give users the option of running Firebird
> on remote machines.
the application and database engine are on the same machine or not.
Just be aware that the database file must be on a locally attached
drive to the machine running Firebird, not a share.
>Firebird connections are not thread-safe. You will need to create a
> The app needs to be able to run on any computer
> with a newer version of Windows.
>
> My application needs to share records between
> independent processes. So I'm saving a few columns
> of each row of the largest table in paged backed
> file mapped nodes of a binary tree. "Page Backed"
> means it's in shared memory, and not a disk file.
>
> Loading this table from the database, withd all
> of the overhead of manipulating the mapped nodes,
> slows the IO. So I want this loaded by a thread,
> while the app's main thread is setting up, with
> other queries on the database, dialogs, and user
> log ins.
connection for each thread. This may explain your hanging if you are
not doing this.
>Count * is generally a pretty slow operation in a MGA database such as
> Sometimes the thread to fill the mapped memory
> tree runs fine, and sometimes the thread seems to
> freeze.
>
> The first task the thread performs is a count
> of the records in the database. Then it runs
> a SELECT on a small number of columns of the
> table to fill the mapped tree.
>
> The thread starts it's own transaction, and
> gets a count of the number of rows in the table
> with this SQL
>
> The SQL for this is:
>
> SELECT
> COUNT(*)
> FROM
> CON;
>
Firebird, because the data pages must all be visited to do the count.
Locking databases can just store the count against the table metadata,
but MGA databases need to offer a different number depending on the
transaction isolation.
Adam