|
su.dbms.sql- SU.DBMS.SQL ------------------------------------------------------------------ From : Dmitry Kuzmenko 2:5020/400 14 Feb 2001 17:23:46 To : All Subject : Re: Проблема с большими таблицами --------------------------------------------------------------------------------
Hello, Ilya!
Ilya Zvyagin wrote:
> >А как может помочь индекс при вычислении count(*) - ей-богу не пойму :)
>
> Любой индекс (по крайней мере уникальный) должен содержать количество
> листьев в нем (значений).
> Которое равно кол-ву записей в таблице.
в версионных серверах (Interbase и Postgres) не существует возможности
узнать количество записей, кроме как их прямым перебором. Приведу
пример:
в таблице - 100 записей.
стартует транзакция 1 в режиме read_committed
транзакция 1 добавляет 5 записей
стартует транзакция 2 в режиме snapshot (repeatable_read)
стартует транзакция 3 в режиме read_committed
транзакция 3 удаляет 10 записей
если сделать select count в этот момент, то
транзакция 1 будет видеть 105 записей,
транзакция 2 будет видеть 100 записей,
транзакция 3 будет видеть 90 записей.
продолжаем:
транзакция 1 делает commit.
стартует транзакция 4
если сделать select count в этот момент, то
всего версий записей на диске - 115 (100 + 5 + 10).
транзакция 2 будет видеть 100 записей,
транзакция 3 будет видеть 95 записей (100 - 10 своих + 5 новых транзакции 1).
транзакция 4 будет видеть 105 записей (100 + 5 новых транзакции 1)
транзакция 3 делает commit.
теперь все новые транзакции будут видеть 95 записей,
транзакция 2 видит все те же 100 записей,
транзакция 4 будет видеть 95 записей.
Так что вот. Определить кол-во записей в версионниках можно только полным
перебором записей и их версий с определением, какие можно показывать данной
транзакции, а какие - нет.
Вопросы?
--
Dmitry Kuzmenko, Epsylon Technologies.
TechSupport Manager. InterBase support.
Welcome to http://ib.demo.ru/ (1251)
(095) 530-28-06.
Отправлено через сервер Talk.Ru - http://www.talk.ru
--- ifmail v.2.15dev5
* Origin: Epsylon Technologies (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /su.dbms.sql/2108a7c0a320.html, оценка из 5, голосов 10
|