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