Hello, Dmitry!

Dmitry Voroshin wrote:

Недостатки такой реализации перевешивают достоинства.

Неужели проблема вообще не решаема. Ведь при чисто индексном скане выигрыш в
скорости может быть значительным.

как бы, "проблем" было несколько. Основная - медленная сборка мусора в сильно
неуникальных индексах. Эта проблема решена в IB 7.5 (может и в 7.1),
и в FB 2.0.

Другая проблема - медленные агрегаты вроде
select count(field) from table.

здесь можно было бы использовать ключ вместо записи, если бы в ключе был
номер транзакции. Но таких запросов IMHO бывает очень мало.

Еще одна потенциальная проблема - выборка ключей для where и т.п.
Но неизвестно, проблема-ли это. То есть, что проще - выбрать
все подходящие ключи, а потом уже показывать записи или нет,
или при выборке ключей проверять их "видимость", а потом
отбирать записи.
В read_committed второй вариант даст эффект "замораживания видимости"
версий на момент выборки из индекса.

--
Dmitri Kuzmenko, www.ibase.ru, (495) 953-13-34

Ответить