powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / drop index большой таблицы: от чего возникает 100500 млн marks ?
12 сообщений из 12, страница 1 из 1
drop index большой таблицы: от чего возникает 100500 млн marks ?
    #38370286
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hi all

Есть табличка и на ней висит индекс:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
     Index T_ID (0)
        Root page: 4277245, depth: 3, leaf buckets: 431472, nodes: 1000000000
        Average node length: 6.99, total dup: 0, max dup: 0
        Average key length: 3.00, compression ratio: 1.74
        Average prefix length: 4.22, average data length: 1.00
        Clustering factor: 4273505, ratio: 0.00
        Fill distribution:
             0 - 19% = 1
            20 - 39% = 0
            40 - 59% = 0
            60 - 79% = 0
            80 - 99% = 431471
(.fdb имеет размер страницы = 16К).

Выполняю drop index t_id + commit и вот что вижу:
Код: plaintext
1.
2.
3.
4.
2013-08-19T08:56:03.6110 (1582:0x7f2318c656c0) COMMIT_TRANSACTION
	t10e9 (ATT_206, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
	C:\MIX\firebird\fb25\bin\isql.exe:1568
		(TRA_416, READ_COMMITTED | NO_REC_VERSION | WAIT | READ_WRITE)
  338238  ms, 389887 read(s), 2 write(s), 473776 fetch(es),  431830 mark(s) 

Вопрос, собс-сно, простой. Пробегается ли ФБ по самим индексным страницам, отмечая их чем-то типа "свободна", когда выполняется удаление индекса ? И если нет, то чем объяснить такое время выполнения, ведь PIP уже считана в кеш и возня с ней, расписанная тут , не может занимать столько времени...
...
Рейтинг: 0 / 0
drop index большой таблицы: от чего возникает 100500 млн marks ?
    #38370300
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидВопрос, собс-сно, простой. Пробегается ли ФБ по самим индексным страницам, отмечая их чем-то типа "свободна", когда выполняется удаление индекса ? И если нет, то чем объяснить такое время выполнения
ФБ читает все страницы индекса, чтобы их освободить. Этим и объясняется "такое время выполнения". Сами страницы при этом не изменяются, насколько я помню. Marks относятся к PIP.
...
Рейтинг: 0 / 0
drop index большой таблицы: от чего возникает 100500 млн marks ?
    #38370308
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrТаблоидВопрос, собс-сно, простой. Пробегается ли ФБ по самим индексным страницам, отмечая их чем-то типа "свободна", когда выполняется удаление индекса ? И если нет, то чем объяснить такое время выполнения
ФБ читает все страницы индекса, чтобы их освободить. Этим и объясняется "такое время выполнения". Сами страницы при этом не изменяются, насколько я помню. Marks относятся к PIP.Если сами страницы не меняются, то что значит "их освободить" ?
Читаю вот это: http://www.ibphoenix.com/resources/documents/design/doc_19 Page Type 7 is an index or b-tree page.

All indexes in Firebird are a b-tree variant, starting with a single page at the top - confusingly called the root - confusing both because the root is at the top and because the root of an index is different from the table’s index root page.

The additional header data in a b-tree page includes the number of the page with the next higher values for this level of the index, the address of the page with the next lower values for this level, the total amount of space which is saved on this page by the use of prefix compression, the relation id of the table this index describes, the amount of space used on this page , the identifier of the index in which this page participates, and the level of this page in the index.- и не вижу тут намёков про "свободно" / "занято", кроме разве что выделенного текста. Это оно меняется ?
...
Рейтинг: 0 / 0
drop index большой таблицы: от чего возникает 100500 млн marks ?
    #38370361
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидЕсли сами страницы не меняются, то что значит "их освободить"?
пометить в TIP как свободные. Для этого надо знать номера страниц. Кроме как из самого индекса (прочитав все страницы каждого уровня) их получить неоткуда.
...
Рейтинг: 0 / 0
drop index большой таблицы: от чего возникает 100500 млн marks ?
    #38370363
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrпометить в TIP
в PIP, конечно же
...
Рейтинг: 0 / 0
drop index большой таблицы: от чего возникает 100500 млн marks ?
    #38370629
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrв PIP, конечно жеПонятно, спс.
...
Рейтинг: 0 / 0
drop index большой таблицы: от чего возникает 100500 млн marks ?
    #38370636
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrКроме как из самого индекса (прочитав все страницы каждого уровня) их получить неоткуда.А, нет! Стой!
Почему нельзя, читая индексные страницы, формировать битовую карту их номеров, и только по окончании её формирования один раз занулить соотв-щие биты в PIP'e ? Быстрее ведь должно быть, КМК...
...
Рейтинг: 0 / 0
drop index большой таблицы: от чего возникает 100500 млн marks ?
    #38370654
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

стоимость 431830 марков пренебрежимо мала по сравнению со стоимостью 389887 чтений
...
Рейтинг: 0 / 0
drop index большой таблицы: от чего возникает 100500 млн marks ?
    #38371475
Евгений Килин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrТаблоидВопрос, собс-сно, простой. Пробегается ли ФБ по самим индексным страницам, отмечая их чем-то типа "свободна", когда выполняется удаление индекса ? И если нет, то чем объяснить такое время выполнения
ФБ читает все страницы индекса, чтобы их освободить. Этим и объясняется "такое время выполнения". Сами страницы при этом не изменяются, насколько я помню. Marks относятся к PIP.
А как обстоят дела с этим:
ДЕ 10 сентября 2012 г. 12:19 - "Можно попробовать. У нас есть уровень дерева на каждой странице, так что
по идее все ссылки вниз со страницы 1-го уровня ведут к листьям, на
которых хоть и есть "боковые" страничные указатели, но они нас не
интересуют, т.к. весь пакет страниц мы уже видим. Я озадачил этим
вопросом Влада."
...
Рейтинг: 0 / 0
drop index большой таблицы: от чего возникает 100500 млн marks ?
    #38371484
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений КилинА как обстоят дела с этим:
ДЕ 10 сентября 2012 г. 12:19 - "Можно попробовать. У нас есть уровень дерева на каждой странице, так что по идее все ссылки вниз со страницы 1-го уровня ведут к листьям, на
которых хоть и есть "боковые" страничные указатели, но они нас не интересуют, т.к. весь пакет страниц мы уже видим."
я вчера помнил об этом разговоре. Но у меня возникли сомнения в том, что "все ссылки вниз со страницы 1-го уровня ведут к листьям". Если цепочка дубликатов занимает более одной страницы, то ссылка сверху будет только на первую из них. Мне так кажется (с)
...
Рейтинг: 0 / 0
drop index большой таблицы: от чего возникает 100500 млн marks ?
    #38371545
Евгений Килин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrЕсли цепочка дубликатов занимает более одной страницы, то ссылка сверху будет только на первую из них. Мне так кажется (с)Как-то бы с этим вопросом определиться без "кажется"? :)
...
Рейтинг: 0 / 0
drop index большой таблицы: от чего возникает 100500 млн marks ?
    #38371615
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrЕсли цепочка дубликатов занимает более одной страницы, то ссылка сверху будет только на первую из них. Мне так кажется (с)Зря тебе так кажется :)
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / drop index большой таблицы: от чего возникает 100500 млн marks ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]