Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Кэширование данных  [new]
Alexey123
Member

Откуда: Москва
Сообщений: 360
Создаю таблицу содержащую 100 столбцов типа VARCHAR2(500).
Вставляю 10000 строк с заполнеными первыми 30 столбцами строками длинной 500 символов.
Выполняю запрос только к первому столбцу:
select count(a1)
from table1
where a1 like '%ab%'
Запрос выполняется за доли секунды.
Делаю update таблицы для заполнения оставшихся 70 столбцов также строками длиной 500 символов.
Теперь запрос выполняется более 8 секунд. Данные читаются с диска.
Почему перестаёт кэшироваться 1 столбец? Или оракл кэширует сразу все столбцы, и после заполнения остальных 70 ему не хватает памяти?
6 май 11, 14:34    [10617300]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
Oracle читает данные с диска блоками, которые, в общем случае, содержат N целых строк
6 май 11, 14:36    [10617318]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
Почитай про chained и migrated rows, станет ясно , почему так делать нельзя. Ну и чтения у тебя наверняка одноблочные, по той же причине. Также можешь почитать про опцию cache.
6 май 11, 14:41    [10617375]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
Alexey123
Member

Откуда: Москва
Сообщений: 360
На моей бд размер блока 8192 байта. (100 стобцов )x(500 символов в каждом)=50000 байт на строка. Т.е. 50000/8192=6 блоков на 1 строку.
Из статистики по таблице
NUM_ROWS = 10,988
BLOCKS = 70,277
6 май 11, 14:42    [10617380]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
Alexey123, арифметика не учитывает служебную информацию. При проектировании исходи из того, что строка должна помещаться в блок, с учетом потенциальной миграции при update. В противном случае скорее всего будут серьезные проблемы с производительностью. Нет ничего хуже, как фуллсканить таблицу с chained rows.
6 май 11, 14:52    [10617498]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
брадобрей
Member

Откуда:
Сообщений: 4696
как при запросе
select count(a1)
from table1
where a1 like '%ab%'
могут влиять chained/migrated rows ?
6 май 11, 14:58    [10617592]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
брадобрей
Member

Откуда:
Сообщений: 4696
wurdu
Нет ничего хуже, как фуллсканить таблицу с chained rows.

с чего это?
6 май 11, 14:58    [10617604]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
Elic
Member

Откуда:
Сообщений: 29988
брадобрей
как при запросе
могут влиять migrated rows ?
А подумать?
6 май 11, 15:02    [10617654]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
Alexey123
Member

Откуда: Москва
Сообщений: 360
Спасибо, буду читать про chained и migrated rows.
6 май 11, 15:02    [10617662]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18359
wurdu
Нет ничего хуже, как фуллсканить таблицу с chained rows.

Ммм... Так таки и ничего? Взять хоть тот же delayed block cleanout... :)
6 май 11, 15:04    [10617694]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
брадобрей
Member

Откуда:
Сообщений: 4696
Elic
брадобрей
как при запросе
могут влиять migrated rows ?
А подумать?

давай подумаю вслух,
при фулскане в любом случае читаются все блоки до HWM
никакие chained rows при этом не имеют никакого влияния на I/O

теперь твоя очередь
6 май 11, 15:06    [10617714]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
Петрушка
Member

Откуда:
Сообщений: 139
связанные блоки отнюдь не обязаны идти подряд
6 май 11, 15:14    [10617806]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
брадобрей
Elic
пропущено...
А подумать?

давай подумаю вслух,
при фулскане в любом случае читаются все блоки до HWM
никакие chained rows при этом не имеют никакого влияния на I/O

теперь твоя очередь
Это при migrated он может читать все блоки мультиблочными чтениями и отбрасывать ссылки. Да и то, data pump какого-то хрена читает одноблочными (в 10.2 по крайней мере). А при chained ему надо прочитать часть полей, потом найти блок с другим куском и пристыковать.
6 май 11, 15:22    [10617885]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
брадобрей
Member

Откуда:
Сообщений: 4696
спасибо, полагаю, был не прав
6 май 11, 15:32    [10618021]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
Alexey123
Member

Откуда: Москва
Сообщений: 360
Немного почитал про блоки, chained и migrated rows.
Повторяю эксперимент, только с самого начала создания таблицы вставляю строки с заполненными всеми 100 полями.
Таким образом
- строки никуда мигрировать не должны;
- связанные блоки должны вставляться друг за другом.
Опят выполняю запрос и он работает медленно и читает данные с диска.

wurdu
А при chained ему надо прочитать часть полей, потом найти блок с другим куском и пристыковать.


Если блоки связанные, можно же прочитать(закэшировать) только первые блоки каждой строки, в которых находится требуемый первый столбец?
6 май 11, 15:40    [10618088]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
Петрушка
Member

Откуда:
Сообщений: 139
думаешь ораклу есть дело до
- связанные блоки должны вставляться друг за другом.
один фиг chained rows
6 май 11, 15:52    [10618195]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
Alexey123
Member

Откуда: Москва
Сообщений: 360
Т.е. делаю вывод что оракл читает(кэширует) строки целиком, неважно сколько блоков занимает одна строка, и что не все столбцы требуются. Значит нельзя проектировать таблицы, с размером строки больше размера блока. Иначе это скажется на производительности. Как и написал wurdu.
6 май 11, 16:02    [10618306]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
Alexey123, для кэширования при fullscan есть опция cache. Анализировать, какие блоки в кэше можно через x$bh, там есть ссылка на data_object_id. Также можно сделать trace 10046 и посмотреть, где тратится время.
6 май 11, 16:05    [10618327]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
-2-
Member

Откуда:
Сообщений: 15330
wurdu
Анализировать, какие блоки в кэше можно через x$bh
Что-то может быть уже проанализировано - V$SEGMENT_STATISTICS
6 май 11, 16:09    [10618365]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
huliGUN
Member

Откуда: Ахметов Сити; Санкт Харьков; Донецк (Киев);
Сообщений: 466
Петрушка
думаешь ораклу есть дело до
- связанные блоки должны вставляться друг за другом.
один фиг chained rows


Это раз, а два - это кто вам сказал что связанные блоки должны находиться друг за другом? это смотря как вы екстенты выделяете.
6 май 11, 16:11    [10618386]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
wurdu
А при chained ему надо прочитать часть полей, потом найти блок с другим куском и пристыковать.


Если в запросе не выбираются непоместившиеся поля, то таблица читается до HWM мультиблочными чтениями. Иначе одноблочными чтениями дочитывается часть полей:

+ тест
drop table t purge;
create table t (a varchar2(4000), b varchar2(4000));
insert into t (a) select lpad('x',4000,'x')  from dual connect by level < 32;
commit;
update t set b = lpad('x',4000,'x');
commit;
select count(a), count(b) from t;
alter session set optimizer_dynamic_sampling=0;
alter session set events '10046 trace name context forever , level 12';
alter system flush buffer_cache;
select count(a), count(b) from t;
alter system flush buffer_cache;
select count(a) from t;
alter system flush buffer_cache;
select count(b) from t;


+ трасса
PARSING IN CURSOR #1 len=32 dep=0 uid=76 oct=3 lid=76 tim=3910990331 hv=1932177315 ad='225168f0'
select count(a), count(b) from t
...
WAIT #1: nam='db file sequential read' ela= 131 file#=4 block#=2107 blocks=1 obj#=107639 tim=3910990603
WAIT #1: nam='db file scattered read' ela= 270 file#=4 block#=2108 blocks=5 obj#=107639 tim=3910990950
WAIT #1: nam='db file sequential read' ela= 127 file#=4 block#=149790 blocks=1 obj#=107639 tim=3910991116
WAIT #1: nam='db file sequential read' ela= 116 file#=4 block#=149791 blocks=1 obj#=107639 tim=3910991268
WAIT #1: nam='db file sequential read' ela= 145 file#=4 block#=149792 blocks=1 obj#=107639 tim=3910991448
WAIT #1: nam='db file sequential read' ela= 346 file#=4 block#=149786 blocks=1 obj#=107639 tim=3910991826
WAIT #1: nam='db file sequential read' ela= 128 file#=4 block#=149808 blocks=1 obj#=107639 tim=3910991984
WAIT #1: nam='db file scattered read' ela= 355 file#=4 block#=149129 blocks=8 obj#=107639 tim=3910992392
WAIT #1: nam='db file sequential read' ela= 129 file#=4 block#=149801 blocks=1 obj#=107639 tim=3910992558
WAIT #1: nam='db file sequential read' ela= 121 file#=4 block#=149802 blocks=1 obj#=107639 tim=3910992701
WAIT #1: nam='db file sequential read' ela= 126 file#=4 block#=149803 blocks=1 obj#=107639 tim=3910992860
WAIT #1: nam='db file sequential read' ela= 124 file#=4 block#=149804 blocks=1 obj#=107639 tim=3910993015
WAIT #1: nam='db file sequential read' ela= 120 file#=4 block#=149805 blocks=1 obj#=107639 tim=3910993171
WAIT #1: nam='db file sequential read' ela= 120 file#=4 block#=149806 blocks=1 obj#=107639 tim=3910993322
WAIT #1: nam='db file sequential read' ela= 134 file#=4 block#=149807 blocks=1 obj#=107639 tim=3910993487
WAIT #1: nam='db file sequential read' ela= 121 file#=4 block#=149819 blocks=1 obj#=107639 tim=3910993642
WAIT #1: nam='db file scattered read' ela= 323 file#=4 block#=149138 blocks=7 obj#=107639 tim=3910994011
WAIT #1: nam='db file sequential read' ela= 137 file#=4 block#=149820 blocks=1 obj#=107639 tim=3910994184
WAIT #1: nam='db file sequential read' ela= 125 file#=4 block#=149821 blocks=1 obj#=107639 tim=3910994331
WAIT #1: nam='db file sequential read' ela= 124 file#=4 block#=149822 blocks=1 obj#=107639 tim=3910994487
WAIT #1: nam='db file sequential read' ela= 124 file#=4 block#=149823 blocks=1 obj#=107639 tim=3910994643
WAIT #1: nam='db file sequential read' ela= 120 file#=4 block#=149824 blocks=1 obj#=107639 tim=3910994800
WAIT #1: nam='db file sequential read' ela= 134 file#=4 block#=149818 blocks=1 obj#=107639 tim=3910994965
WAIT #1: nam='db file sequential read' ela= 126 file#=4 block#=149832 blocks=1 obj#=107639 tim=3910995122
WAIT #1: nam='db file scattered read' ela= 349 file#=4 block#=149145 blocks=8 obj#=107639 tim=3910995522
WAIT #1: nam='db file sequential read' ela= 136 file#=4 block#=149825 blocks=1 obj#=107639 tim=3910995693
WAIT #1: nam='db file sequential read' ela= 125 file#=4 block#=149826 blocks=1 obj#=107639 tim=3910995840
WAIT #1: nam='db file sequential read' ela= 124 file#=4 block#=149827 blocks=1 obj#=107639 tim=3910995996
WAIT #1: nam='db file sequential read' ela= 132 file#=4 block#=149828 blocks=1 obj#=107639 tim=3910996217
WAIT #1: nam='db file sequential read' ela= 136 file#=4 block#=149829 blocks=1 obj#=107639 tim=3910996385
WAIT #1: nam='db file sequential read' ela= 151 file#=4 block#=149830 blocks=1 obj#=107639 tim=3910996567
WAIT #1: nam='db file sequential read' ela= 124 file#=4 block#=149831 blocks=1 obj#=107639 tim=3910996727
WAIT #1: nam='db file sequential read' ela= 124 file#=4 block#=149835 blocks=1 obj#=107639 tim=3910996883
WAIT #1: nam='db file scattered read' ela= 199 file#=4 block#=149787 blocks=3 obj#=107639 tim=3910997129
WAIT #1: nam='db file sequential read' ela= 130 file#=4 block#=149836 blocks=1 obj#=107639 tim=3910997290
WAIT #1: nam='db file sequential read' ela= 127 file#=4 block#=149837 blocks=1 obj#=107639 tim=3910997448
WAIT #1: nam='db file sequential read' ela= 130 file#=4 block#=149838 blocks=1 obj#=107639 tim=3910997610
WAIT #1: nam='db file sequential read' ela= 130 file#=4 block#=149834 blocks=1 obj#=107639 tim=3910997814
WAIT #1: nam='db file scattered read' ela= 164 file#=4 block#=149839 blocks=2 obj#=107639 tim=3910998023
...
=====================
PARSING IN CURSOR #2 len=22 dep=0 uid=76 oct=3 lid=76 tim=3911004411 hv=1773031778 ad='2236cc28'
select count(a) from t
...
WAIT #2: nam='db file sequential read' ela= 212 file#=4 block#=2107 blocks=1 obj#=107639 tim=3911004770
WAIT #2: nam='db file scattered read' ela= 299 file#=4 block#=2108 blocks=5 obj#=107639 tim=3911005139
WAIT #2: nam='db file scattered read' ela= 394 file#=4 block#=149129 blocks=8 obj#=107639 tim=3911005601
WAIT #2: nam='db file scattered read' ela= 337 file#=4 block#=149138 blocks=7 obj#=107639 tim=3911005984
WAIT #2: nam='db file scattered read' ela= 385 file#=4 block#=149145 blocks=8 obj#=107639 tim=3911006434
WAIT #2: nam='db file scattered read' ela= 331 file#=4 block#=149786 blocks=7 obj#=107639 tim=3911006828
WAIT #2: nam='db file scattered read' ela= 369 file#=4 block#=149801 blocks=8 obj#=107639 tim=3911007258
WAIT #2: nam='db file scattered read' ela= 351 file#=4 block#=149818 blocks=7 obj#=107639 tim=3911007669
WAIT #2: nam='db file scattered read' ela= 366 file#=4 block#=149825 blocks=8 obj#=107639 tim=3911008093
WAIT #2: nam='db file scattered read' ela= 341 file#=4 block#=149834 blocks=7 obj#=107639 tim=3911008492
...
=====================
PARSING IN CURSOR #1 len=22 dep=0 uid=76 oct=3 lid=76 tim=3911015106 hv=2872739156 ad='21d49468'
select count(b) from t
...
WAIT #1: nam='db file sequential read' ela= 152 file#=4 block#=2107 blocks=1 obj#=107639 tim=3911015395
WAIT #1: nam='db file scattered read' ela= 266 file#=4 block#=2108 blocks=5 obj#=107639 tim=3911015728
WAIT #1: nam='db file sequential read' ela= 134 file#=4 block#=149790 blocks=1 obj#=107639 tim=3911015890
WAIT #1: nam='db file sequential read' ela= 124 file#=4 block#=149791 blocks=1 obj#=107639 tim=3911016048
WAIT #1: nam='db file sequential read' ela= 124 file#=4 block#=149792 blocks=1 obj#=107639 tim=3911016205
WAIT #1: nam='db file sequential read' ela= 133 file#=4 block#=149786 blocks=1 obj#=107639 tim=3911016372
WAIT #1: nam='db file sequential read' ela= 124 file#=4 block#=149808 blocks=1 obj#=107639 tim=3911016527
WAIT #1: nam='db file scattered read' ela= 361 file#=4 block#=149129 blocks=8 obj#=107639 tim=3911016937
WAIT #1: nam='db file sequential read' ela= 126 file#=4 block#=149801 blocks=1 obj#=107639 tim=3911017100
WAIT #1: nam='db file sequential read' ela= 122 file#=4 block#=149802 blocks=1 obj#=107639 tim=3911017257
WAIT #1: nam='db file sequential read' ela= 124 file#=4 block#=149803 blocks=1 obj#=107639 tim=3911017412
WAIT #1: nam='db file sequential read' ela= 185 file#=4 block#=149804 blocks=1 obj#=107639 tim=3911017628
WAIT #1: nam='db file sequential read' ela= 133 file#=4 block#=149805 blocks=1 obj#=107639 tim=3911017791
WAIT #1: nam='db file sequential read' ela= 124 file#=4 block#=149806 blocks=1 obj#=107639 tim=3911017946
WAIT #1: nam='db file sequential read' ela= 124 file#=4 block#=149807 blocks=1 obj#=107639 tim=3911018100
WAIT #1: nam='db file sequential read' ela= 125 file#=4 block#=149819 blocks=1 obj#=107639 tim=3911018256
WAIT #1: nam='db file scattered read' ela= 332 file#=4 block#=149138 blocks=7 obj#=107639 tim=3911018634
WAIT #1: nam='db file sequential read' ela= 126 file#=4 block#=149820 blocks=1 obj#=107639 tim=3911018795
WAIT #1: nam='db file sequential read' ela= 125 file#=4 block#=149821 blocks=1 obj#=107639 tim=3911018950
WAIT #1: nam='db file sequential read' ela= 138 file#=4 block#=149822 blocks=1 obj#=107639 tim=3911019119
WAIT #1: nam='db file sequential read' ela= 130 file#=4 block#=149823 blocks=1 obj#=107639 tim=3911019279
WAIT #1: nam='db file sequential read' ela= 121 file#=4 block#=149824 blocks=1 obj#=107639 tim=3911019422
WAIT #1: nam='db file sequential read' ela= 129 file#=4 block#=149818 blocks=1 obj#=107639 tim=3911019582
WAIT #1: nam='db file sequential read' ela= 126 file#=4 block#=149832 blocks=1 obj#=107639 tim=3911019738
WAIT #1: nam='db file scattered read' ela= 351 file#=4 block#=149145 blocks=8 obj#=107639 tim=3911020136
WAIT #1: nam='db file sequential read' ela= 131 file#=4 block#=149825 blocks=1 obj#=107639 tim=3911020304
WAIT #1: nam='db file sequential read' ela= 142 file#=4 block#=149826 blocks=1 obj#=107639 tim=3911020482
WAIT #1: nam='db file sequential read' ela= 126 file#=4 block#=149827 blocks=1 obj#=107639 tim=3911020637
WAIT #1: nam='db file sequential read' ela= 122 file#=4 block#=149828 blocks=1 obj#=107639 tim=3911020795
WAIT #1: nam='db file sequential read' ela= 138 file#=4 block#=149829 blocks=1 obj#=107639 tim=3911020963
WAIT #1: nam='db file sequential read' ela= 127 file#=4 block#=149830 blocks=1 obj#=107639 tim=3911021120
WAIT #1: nam='db file sequential read' ela= 123 file#=4 block#=149831 blocks=1 obj#=107639 tim=3911021278
WAIT #1: nam='db file sequential read' ela= 139 file#=4 block#=149835 blocks=1 obj#=107639 tim=3911021448
WAIT #1: nam='db file scattered read' ela= 194 file#=4 block#=149787 blocks=3 obj#=107639 tim=3911021688
WAIT #1: nam='db file sequential read' ela= 126 file#=4 block#=149836 blocks=1 obj#=107639 tim=3911021844
WAIT #1: nam='db file sequential read' ela= 126 file#=4 block#=149837 blocks=1 obj#=107639 tim=3911022000
WAIT #1: nam='db file sequential read' ela= 132 file#=4 block#=149838 blocks=1 obj#=107639 tim=3911022174
WAIT #1: nam='db file sequential read' ela= 128 file#=4 block#=149834 blocks=1 obj#=107639 tim=3911022353
WAIT #1: nam='db file scattered read' ela= 203 file#=4 block#=149839 blocks=2 obj#=107639 tim=3911022604
6 май 11, 16:59    [10618749]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
Петрушка
Member

Откуда:
Сообщений: 139
может, это фишечки 11?
на 10 так же?
6 май 11, 17:18    [10618821]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
Петрушка
может, это фишечки 11?
на 10 так же?

Это как раз 10.2.0.4, на 11.2.0.1-2 так же :)
6 май 11, 17:20    [10618825]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
Петрушка
Member

Откуда:
Сообщений: 139
+ тест
SQL> CREATE TABLE ch_test (a VARCHAR2(4000), b VARCHAR2(4000), c VARCHAR2(4000));

Table created.

SQL> INSERT INTO ch_test (a, b, c) SELECT LPAD('x', 4000, 'x'), LPAD('x', 4000, 'x'), LPAD('x', 4000, 'x') FROM dual CONNECT BY LEVEL < 50
  2  /

49 rows created.

SQL> COMMIT;

Commit complete.

SQL> ANALYZE TABLE ch_test COMPUTE STATISTICS;

Table analyzed.

SQL> SELECT chain_cnt FROM user_tables WHERE table_name = 'CH_TEST'
  2  /

 CHAIN_CNT                                                                      
----------                                                                      
        49                                                                      

SQL> ALTER SESSION SET EVENTS '10046 trace name context forever, level 12';

Session altered.

SQL> ALTER SESSION SET optimizer_dynamic_sampling = 0;

Session altered.

SQL> ALTER SYSTEM FLUSH BUFFER_CACHE;

System altered.

SQL> SELECT COUNT(a) FROM ch_test
  2  /

  COUNT(A)                                                                      
----------                                                                      
        49                                                                      

SQL> ALTER SESSION SET EVENTS '10046 trace name context off';

Session altered.

SQL> SPOOL OFF

+ трасса
PARSING IN CURSOR #4 len=28 dep=0 uid=84 oct=3 lid=84 tim=112859258135 hv=833025857 ad='34c7093c' sqlid='b2xr0ucsudxu1'
SELECT COUNT(a) FROM ch_test
END OF STMT
PARSE #4:c=0,e=18291,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,plh=1328505585,tim=112859258133
EXEC #4:c=0,e=35,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=1328505585,tim=112859258290
WAIT #4: nam='SQL*Net message to client' ela= 15 driver id=1111838976 #bytes=1 p3=0 obj#=130861 tim=112859258332
WAIT #4: nam='db file sequential read' ela= 14126 file#=4 block#=168802 blocks=1 obj#=130861 tim=112859272521
WAIT #4: nam='db file scattered read' ela= 457 file#=4 block#=168803 blocks=5 obj#=130861 tim=112859273138
WAIT #4: nam='db file scattered read' ela= 617 file#=4 block#=168808 blocks=8 obj#=130861 tim=112859273882
WAIT #4: nam='db file scattered read' ela= 767 file#=4 block#=168817 blocks=7 obj#=130861 tim=112859274782
WAIT #4: nam='db file scattered read' ela= 608 file#=4 block#=168824 blocks=8 obj#=130861 tim=112859275518
WAIT #4: nam='db file scattered read' ela= 1796 file#=4 block#=168993 blocks=7 obj#=130861 tim=112859277442
WAIT #4: nam='db file scattered read' ela= 601 file#=4 block#=169000 blocks=8 obj#=130861 tim=112859278151
WAIT #4: nam='db file scattered read' ela= 290 file#=4 block#=169009 blocks=7 obj#=130861 tim=112859278570
WAIT #4: nam='db file scattered read' ela= 313 file#=4 block#=169016 blocks=8 obj#=130861 tim=112859279022
WAIT #4: nam='db file scattered read' ela= 301 file#=4 block#=169025 blocks=7 obj#=130861 tim=112859279450
WAIT #4: nam='db file scattered read' ela= 310 file#=4 block#=169032 blocks=8 obj#=130861 tim=112859279913
WAIT #4: nam='db file sequential read' ela= 3161 file#=4 block#=169072 blocks=1 obj#=130861 tim=112859283192
WAIT #4: nam='db file sequential read' ela= 257 file#=4 block#=168801 blocks=1 obj#=130861 tim=112859283579
WAIT #4: nam='db file scattered read' ela= 13274 file#=4 block#=562944 blocks=2 obj#=130861 tim=112859296952
WAIT #4: nam='db file scattered read' ela= 352 file#=4 block#=169041 blocks=7 obj#=130861 tim=112859297455
WAIT #4: nam='db file scattered read' ela= 393 file#=4 block#=169048 blocks=8 obj#=130861 tim=112859297989
WAIT #4: nam='db file scattered read' ela= 363 file#=4 block#=169057 blocks=7 obj#=130861 tim=112859298484
WAIT #4: nam='db file scattered read' ela= 393 file#=4 block#=169064 blocks=8 obj#=130861 tim=112859299001
WAIT #4: nam='db file scattered read' ela= 358 file#=4 block#=169073 blocks=7 obj#=130861 tim=112859299484
WAIT #4: nam='db file scattered read' ela= 371 file#=4 block#=169080 blocks=8 obj#=130861 tim=112859299979
WAIT #4: nam='db file scattered read' ela= 6067 file#=4 block#=563008 blocks=64 obj#=130861 tim=112859306268


а что самое интересное, 'db file scattered read' у меня получился и на select count(b), и на count(с)
+ куски трасс
PARSING IN CURSOR #1 len=28 dep=0 uid=84 oct=3 lid=84 tim=113004660003 hv=1422553581 ad='34c6ef60' sqlid='400br1xacnwgd'
SELECT COUNT(b) FROM ch_test
END OF STMT
PARSE #1:c=0,e=608,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,plh=1328505585,tim=113004660002
EXEC #1:c=0,e=26,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=1328505585,tim=113004660102
WAIT #1: nam='SQL*Net message to client' ela= 2 driver id=1111838976 #bytes=1 p3=0 obj#=130861 tim=113004660126
WAIT #1: nam='db file sequential read' ela= 14548 file#=4 block#=168802 blocks=1 obj#=130861 tim=113004674718
WAIT #1: nam='db file scattered read' ela= 422 file#=4 block#=168803 blocks=5 obj#=130861 tim=113004675340
WAIT #1: nam='db file scattered read' ela= 325 file#=4 block#=168808 blocks=8 obj#=130861 tim=113004675837
WAIT #1: nam='db file scattered read' ela= 298 file#=4 block#=168817 blocks=7 obj#=130861 tim=113004676275
WAIT #1: nam='db file scattered read' ela= 354 file#=4 block#=168824 blocks=8 obj#=130861 tim=113004676786
WAIT #1: nam='db file scattered read' ela= 2752 file#=4 block#=168993 blocks=7 obj#=130861 tim=113004679652
WAIT #1: nam='db file scattered read' ela= 571 file#=4 block#=169000 blocks=8 obj#=130861 tim=113004680354
WAIT #1: nam='db file scattered read' ela= 284 file#=4 block#=169009 blocks=7 obj#=130861 tim=113004680774
WAIT #1: nam='db file scattered read' ela= 312 file#=4 block#=169016 blocks=8 obj#=130861 tim=113004681219
WAIT #1: nam='db file scattered read' ela= 316 file#=4 block#=169025 blocks=7 obj#=130861 tim=113004681729
WAIT #1: nam='db file scattered read' ela= 316 file#=4 block#=169032 blocks=8 obj#=130861 tim=113004682174
WAIT #1: nam='db file sequential read' ela= 3060 file#=4 block#=169072 blocks=1 obj#=130861 tim=113004685406
WAIT #1: nam='db file sequential read' ela= 275 file#=4 block#=168801 blocks=1 obj#=130861 tim=113004685773
WAIT #1: nam='db file scattered read' ela= 13267 file#=4 block#=562944 blocks=2 obj#=130861 tim=113004699150
WAIT #1: nam='db file scattered read' ela= 353 file#=4 block#=169041 blocks=7 obj#=130861 tim=113004699649
WAIT #1: nam='db file scattered read' ela= 377 file#=4 block#=169048 blocks=8 obj#=130861 tim=113004700163
WAIT #1: nam='db file scattered read' ela= 355 file#=4 block#=169057 blocks=7 obj#=130861 tim=113004700651
WAIT #1: nam='db file scattered read' ela= 354 file#=4 block#=169064 blocks=8 obj#=130861 tim=113004701106
WAIT #1: nam='db file scattered read' ela= 369 file#=4 block#=169073 blocks=7 obj#=130861 tim=113004701565
WAIT #1: nam='db file scattered read' ela= 508 file#=4 block#=169080 blocks=8 obj#=130861 tim=113004702151
WAIT #1: nam='db file scattered read' ela= 6206 file#=4 block#=563008 blocks=64 obj#=130861 tim=113004708505



PARSING IN CURSOR #3 len=28 dep=0 uid=84 oct=3 lid=84 tim=113038693339 hv=1994503755 ad='34c61d08' sqlid='0xn38m9vf3dkb'
SELECT COUNT(c) FROM ch_test
END OF STMT
PARSE #3:c=0,e=655,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,plh=1328505585,tim=113038693338
EXEC #3:c=0,e=30,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=1328505585,tim=113038693433
WAIT #3: nam='SQL*Net message to client' ela= 2 driver id=1111838976 #bytes=1 p3=0 obj#=130861 tim=113038693458
WAIT #3: nam='db file sequential read' ela= 19665 file#=4 block#=168802 blocks=1 obj#=130861 tim=113038713167
WAIT #3: nam='db file scattered read' ela= 460 file#=4 block#=168803 blocks=5 obj#=130861 tim=113038713780
WAIT #3: nam='db file scattered read' ela= 324 file#=4 block#=168808 blocks=8 obj#=130861 tim=113038714230
WAIT #3: nam='db file scattered read' ela= 320 file#=4 block#=168817 blocks=7 obj#=130861 tim=113038714701
WAIT #3: nam='db file scattered read' ela= 323 file#=4 block#=168824 blocks=8 obj#=130861 tim=113038715150
WAIT #3: nam='db file scattered read' ela= 2826 file#=4 block#=168993 blocks=7 obj#=130861 tim=113038718117
WAIT #3: nam='db file scattered read' ela= 570 file#=4 block#=169000 blocks=8 obj#=130861 tim=113038718830
WAIT #3: nam='db file scattered read' ela= 288 file#=4 block#=169009 blocks=7 obj#=130861 tim=113038719258
WAIT #3: nam='db file scattered read' ela= 304 file#=4 block#=169016 blocks=8 obj#=130861 tim=113038719698
WAIT #3: nam='db file scattered read' ela= 288 file#=4 block#=169025 blocks=7 obj#=130861 tim=113038720074
WAIT #3: nam='db file scattered read' ela= 338 file#=4 block#=169032 blocks=8 obj#=130861 tim=113038720546
WAIT #3: nam='db file sequential read' ela= 3177 file#=4 block#=169072 blocks=1 obj#=130861 tim=113038723857
WAIT #3: nam='db file sequential read' ela= 283 file#=4 block#=168801 blocks=1 obj#=130861 tim=113038724243
WAIT #3: nam='db file scattered read' ela= 13283 file#=4 block#=562944 blocks=2 obj#=130861 tim=113038737598
WAIT #3: nam='db file scattered read' ela= 372 file#=4 block#=169041 blocks=7 obj#=130861 tim=113038738108
WAIT #3: nam='db file scattered read' ela= 377 file#=4 block#=169048 blocks=8 obj#=130861 tim=113038738630
WAIT #3: nam='db file scattered read' ela= 357 file#=4 block#=169057 blocks=7 obj#=130861 tim=113038739123
WAIT #3: nam='db file scattered read' ela= 391 file#=4 block#=169064 blocks=8 obj#=130861 tim=113038739652
WAIT #3: nam='db file scattered read' ela= 324 file#=4 block#=169073 blocks=7 obj#=130861 tim=113038740112
WAIT #3: nam='db file scattered read' ela= 376 file#=4 block#=169080 blocks=8 obj#=130861 tim=113038740625
WAIT #3: nam='db file scattered read' ela= 6128 file#=4 block#=563008 blocks=64 obj#=130861 tim=113038746966
6 май 11, 17:39    [10618902]     Ответить | Цитировать Сообщить модератору
 Re: Кэширование данных  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
Петрушка,

Не удивительно - хвосты лежат рядом, потому и читаются многоблочными чтениями.
6 май 11, 17:45    [10618923]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить