Subject | Re: [firebird-support] Re: Firebird and sharding ? - Email found in subject |
---|---|
Author | Ann Harrison |
Post date | 2012-03-30T16:16:48Z |
Norm,
that
the performance is bad. Knowing how to fix that bad performance makes
the DBA more magical, raising his value.
I really prefer self-tuning, self-managing statistics. We don't have them
for
indexes, but as I said, index selectivity is not normally as volatile as
cardinality.
There's problem with keeping data ranges (or histograms), given that
Firebird prepares a statement before it knows the values of parameters.
select first_name, last_name from rugby_players where gender = ?
Assuming an index on gender, you'd handle the query one way if the
? = M vs. F
And if it happens during a nested loop join? Re-optimize on every record?
Good luck (and we all need it)
Ann
[Non-text portions of this message have been removed]
> I've no idea how good a suggestion this is, but how difficult (sorryThat way, if the stats are wrong it's the database administrator's fault
> developers!) would it be to do something along the Oracle lines?
>
> RDB$RELATIONS would have columns for cardinality, spread of values and
> so on. These would be recalculated on demand - Oracle used a package
> called DBMS_STATS to gather optimiser stats.
>
> The optimiser in Oracle then reads these stats, and histograms etc form
> other system tables, and uses these to pick the best execution plan.
>
> Granted the stats have to be kept "reasonably" up to date or performance
> suffers, but it's a good way of avoiding dynamic scans to check
> cardinality?
>
that
the performance is bad. Knowing how to fix that bad performance makes
the DBA more magical, raising his value.
I really prefer self-tuning, self-managing statistics. We don't have them
for
indexes, but as I said, index selectivity is not normally as volatile as
cardinality.
There's problem with keeping data ranges (or histograms), given that
Firebird prepares a statement before it knows the values of parameters.
select first_name, last_name from rugby_players where gender = ?
Assuming an index on gender, you'd handle the query one way if the
? = M vs. F
And if it happens during a nested loop join? Re-optimize on every record?
Good luck (and we all need it)
Ann
[Non-text portions of this message have been removed]