Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Том Кайт и индексы  [new]
воспрошающий
Guest
уважаемые участники форума.
читаю кайта 1том где излагаются индексы и приводится пример чтения таблицы организованной и дезорганизованной стр.354.

create table colocated (x int, у varchar2(2000)) pctfree 0;
tkyte@TKYTE816>
begin
for i in 1 . . 100000 loop
insert into colocated values (i, rpad(dbms_random.random, 75, '*'));
end loop;
end;
/
PL/SQL procedure successfully completed.
tkyte@TKYTE816>
alter table colocated add constraint colocated_pk primary key x);
Table altered.

блок базы размером 8кил.
имея среднюю длину строки 85 байт получаем в блоке 8к / 85 = ~ 100 строк.
далее он грит что весьма вероятно что строки с близкими значениями i лежат в одном блоке.

Далеее...
select * from COLOCATED where x between 20000 and 40000;
20001 rows selected.
Elapsed: 00:00:01.02
Execution Flan
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 TABLE ACCESS (BY INDEX ROWID) OF 'COLOCATED'
2 1 INDEX (RANGE SCAN) OF 'COLOCATED_PK' (UNIQUE)

Statistics
0 recursive calls
0 db block gets
2909 consistent gets
258 physical reads
0 redo size
1991367 bytes sent via SQL*Net to client
148387 bytes received via SQL*Net from client
1335 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
20001 rows processed

2909 логический чтений (сюда входят чтения блоков таблицы и индекса) из них 258 физических чтений. т.е. если я правильно понял (при полном отсутсвии блоков таблицы и индеса в кеше на начало запроса).

если запросом затребованы строки в интервале от 20000 до 40000 - это примерно 200 блоков таблицы ну и пусть остальное (58) приходится на индекс и всякие погрешности.
вопрос первый : почему 2909 логический чтений ? прочитано 20000 строк а ллогиический чтений всего 2909 ? Если я правильно понимаю то чтобы прочитать 1 строку таблицы надо прочитать строку индекса это уже 2 логичекий чтенийя на 1 строку таблицы!.

строим дезорганизованную таблицу. выполняем тот же запрос.
логический чтений гораздо больше.
впорос второй - почему ?
по идее логический чтений должно быть столько же (объем полученных данных тот же!). физический чтений диска может быть гораздо больше т.к., т.к. читать придется блокирасположенне далеко друг от друга.

господа гуру прокоментируйте плиз и поправьте если я где не прав!.
3 авг 06, 09:37    [2958377]     Ответить | Цитировать Сообщить модератору
 Re: Том Кайт и индексы  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18486
http://julian.dyke.users.btopenworld.com/com/Presentations/LogicalIO.ppt
3 авг 06, 09:45    [2958420]     Ответить | Цитировать Сообщить модератору
 Re: Том Кайт и индексы  [new]
grexhide
Member [заблокирован]

Откуда: Страна непреодолимых противоречий
Сообщений: 8553
воспрошающий


Читай дальше про фактор кластеризации (index clustering factor)
3 авг 06, 09:47    [2958438]     Ответить | Цитировать Сообщить модератору
 Re: Том Кайт и индексы  [new]
хрюша
Guest
> Читай дальше про фактор кластеризации (index clustering factor)

Этот совет не в кассу. Читать нужно про set arraysize в sql*plus.
3 авг 06, 09:51    [2958469]     Ответить | Цитировать Сообщить модератору
 Re: Том Кайт и индексы  [new]
Я
Guest
Вячеслав Любомудров
http://julian.dyke.users.btopenworld.com/com/Presentations/LogicalIO.ppt
А чем его почитать можно!
3 авг 06, 09:53    [2958477]     Ответить | Цитировать Сообщить модератору
 Re: Том Кайт и индексы  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18486
хрюша
> Читай дальше про фактор кластеризации (index clustering factor)

Этот совет не в кассу. Читать нужно про set arraysize в sql*plus.
В кассу, но и второе правильно

Установив arraysize=120-150, ты должет получить LIO примерно 2*<кол-во физических блоков с данными таблицы/индекса)
3 авг 06, 09:56    [2958498]     Ответить | Цитировать Сообщить модератору
 Re: Том Кайт и индексы  [new]
Падонак
Member [заблокирован]

Откуда: из лесу
Сообщений: 1775
Я
Вячеслав Любомудров
http://julian.dyke.users.btopenworld.com/com/Presentations/LogicalIO.ppt
А чем его почитать можно!


грустно становицо после таких мессаг
3 авг 06, 10:11    [2958587]     Ответить | Цитировать Сообщить модератору
 Re: Том Кайт и индексы  [new]
grexhide
Member [заблокирован]

Откуда: Страна непреодолимых противоречий
Сообщений: 8553
хрюша
> Читай дальше про фактор кластеризации (index clustering factor)

Этот совет не в кассу. Читать нужно про set arraysize в sql*plus.


Есть и такое дело. Впрочем, большинство современных клиенских сред делает это +- автоматически, потому и актуальность слегка подзабывается.
3 авг 06, 10:15    [2958612]     Ответить | Цитировать Сообщить модератору
 Re: Том Кайт и индексы  [new]
во
Guest
вопрос по ходу обсуждения !
как отключить вывод результатов на экран в плюсе ?
set termout off
set echo off
spool file

не проходит! данные все равно показываются на экране!

работаю с девятой версией оракла
3 авг 06, 11:19    [2959135]     Ответить | Цитировать Сообщить модератору
 Re: Том Кайт и индексы  [new]
arhey
Member

Откуда: Санкт-Петербург. Россия... :)
Сообщений: 221
SET AUTOTRACE TRACEONLY
3 авг 06, 11:28    [2959211]     Ответить | Цитировать Сообщить модератору
 Re: Том Кайт и индексы  [new]
вопрощающий
Guest
спасибо всем за ответы. особонно за ссылку.
проведя ряд экспериментов пришел к следующему выводу.

1. Если в блоке помещатся 100 строк таблицы и строки уложены последовательно друг за другом по возрастанию некоторого поля то :
если таблица просматривается по индексу этого поля и требует строки находящиеся в одном блоке, КОЛИЧЕСТВО ЛОГИЧЕСКИЙ ЧТЕНИЙ ПОСТОЯННО, НЕЗАВИСИМО ОТ КОЛИЧЕСТВА ВОЗВРАЩАЕМЫХ СТРОК!. (естественно в пределах количества помещаемых в блок).

2. Если в блоке помещатся 100 строк таблицы и строки уложены последовательно друг за другом по возрастанию некоторого поля то :
если таблица просматривается по индексу этого поля и требует строки находящиеся в двух, трех, четырех соседних блоках, КОЛИЧЕСТВО ЛОГИЧЕСКИЙ ЧТЕНИЙ УВЕЛИЧИВАЕТСЯ НА 1, по сравнению с количеством лог чтения одного, двух, трех смежных блоков.

поправьте если не прав.
3 авг 06, 13:47    [2960210]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить