powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вытеснение из кеша страниц, прочитанных через ORDER <index_name> (навигацией)
16 сообщений из 16, страница 1 из 1
Вытеснение из кеша страниц, прочитанных через ORDER <index_name> (навигацией)
    #38474539
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hi all

согласно Писанию, вытеснение страниц из кеша может произойти, если:
1) они были прочитаны full scan'ом;
2) они были прочитаны индексным сканированием (т.е. план был вида T1 INDEX (T1_S)) - там создается битовая карта, а http://www.ibase.ru/devinfo/dataaccesspaths.htm#chapter121 для доступа на основе битовой карты страничный кеш также переводится в режим, описанный в пункте 1.1.1 .(1.1.1 - это фулл скан).

Вижу, однако, что вытеснение происходит также тех страниц, которые были извлечены при PLAN (T1 ORDER T1_S) - хотя в подразделе " Навигация по индексу" ничего про это не говорится.
sample Окно-1: (работает с табличкой в 10 строк, индексирована по полю `s`)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SQL> select min(s) from t1;

PLAN (T1 ORDER T1_S)

MIN                             0E04196F-3C29-4337-9794-F26883AEDF92


Current memory = 2593944
Delta memory = 3312
Max memory = 2614888
Elapsed time= 0.00 sec
Cpu = 0.00 sec
Buffers = 75
Reads = 0 -- ОК, из кеша

Окно-2: (работает с табличкой в 63000 строк, также индексирована по полю `s`)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
SQL> select * from t2 where s starting with 'A';
Current memory = 2593944
Delta memory = 0
Max memory = 2614888
Elapsed time= 0.03 sec
Cpu = 0.00 sec
Buffers = 75
Reads = 1296
Writes = 0
Fetches = 7742

-- once again:
SQL> select * from t2 where s starting with 'A';
Current memory = 2593944
Delta memory = 0
Max memory = 2614888
Elapsed time= 0.03 sec
Cpu = 0.00 sec
Buffers = 75
Reads = 1296
Writes = 0
Fetches = 7742

Окно-1:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SQL> select min(s) from t1;

PLAN (T1 ORDER T1_S)

MIN                             0E04196F-3C29-4337-9794-F26883AEDF92

Current memory = 2593944
Delta memory = 0
Max memory = 2614888
Elapsed time= 0.00 sec
Cpu = 0.00 sec
Buffers = 75
 Reads = 8   -- ?! 
Writes = 0
Fetches = 13


Это так и должно быть ?
Более общий вопрос: существует ли в громадье планов на ФБ-3 нечто, что позволит зафиксировать в кеше (сделать их не вытесняемыми) данные каких-то конкретных таблиц или просто результат какой-то конкретной выборки ?

PS. LI-T3.0.0.30747
...
Рейтинг: 0 / 0
Вытеснение из кеша страниц, прочитанных через ORDER <index_name> (навигацией)
    #38474588
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

так в твоём примере они вытеснены как раз не навигацией по индексу, а индексным сканированием о чём говорится в писании.
...
Рейтинг: 0 / 0
Вытеснение из кеша страниц, прочитанных через ORDER <index_name> (навигацией)
    #38474601
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисв твоём примере они вытеснены как раз не навигацией по индексу, а индексным сканированием о чём говорится в писании.dimitrВ плане выполнения навигация по индексу обозначается словом "ORDER", за которым следует наименование индекса (без скобок, так как такой индекс может быть только один)
Код: plaintext
1.
2.
select min(s) from t1;

PLAN (T1  ORDER T1_S )

Ы?
...
Рейтинг: 0 / 0
Вытеснение из кеша страниц, прочитанных через ORDER <index_name> (навигацией)
    #38474690
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

кэш вытеснен вот этим запросом
Код: sql
1.
select * from t2 where s starting with 'A';
...
Рейтинг: 0 / 0
Вытеснение из кеша страниц, прочитанных через ORDER <index_name> (навигацией)
    #38474696
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денискэш вытеснен вот этим запросом
Код: sql
1.
select * from t2 where s starting with 'A';

я догадываюсь, как бэ... :-)
А почему он был вытеснен, если вроде как не должен ?..
...
Рейтинг: 0 / 0
Вытеснение из кеша страниц, прочитанных через ORDER <index_name> (навигацией)
    #38474705
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

я понял о чём ты. Проверь на 2.5, если там он не вытесняет кеш значит Влад не доделал защиту кеша от вытеснения.
...
Рейтинг: 0 / 0
Вытеснение из кеша страниц, прочитанных через ORDER <index_name> (навигацией)
    #38474719
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисТаблоид,

я понял о чём ты. Проверь на 2.5, если там он не вытесняет кеш значит Влад не доделал защиту кеша от вытеснения.на WI-V2.5.3.26682 - та же картина, вытесняет .
иллюстрация Окно-1:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
SQL> out nul; set stat on;
SQL> select min(s) from t1; -- 10 строк, `s` = индексное поле
PLAN (T1 ORDER T1_S)

Current memory = 727840
Delta memory = 3816
Max memory = 794852
Elapsed time= 0.00 sec
Buffers = 75
Reads =  2 
Writes 0
Fetches = 14

SQL> select min(s) from t1;
PLAN (T1 ORDER T1_S)

Current memory = 727840
Delta memory = 0
Max memory = 794852
Elapsed time= 0.00 sec
Buffers = 75
Reads =  0  -- ОК, взяли из кеша
Writes 0
Fetches = 11

Окно-2:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
C:\MIX\firebird\fb25>isql 192.168.0.201/3252:empty25 -n
Database:  192.168.0.201/3252:empty25
SQL> set stat on;
SQL> out nul;
SQL> select * from t2 where s starting with 'A';
Current memory = 783372
Delta memory = 55532
Max memory = 820760
Elapsed time= 0.13 sec
Buffers = 75
Reads = 1054
Writes 0
Fetches = 6716

-- once again:
SQL> select * from t2 where s starting with 'A';
Current memory = 783372
Delta memory = 0
Max memory = 820760
Elapsed time= 0.11 sec
Buffers = 75
 Reads = 1047  -- в кеш всё не влезло, пришлось лазить на диск
Writes 0
Fetches = 6633

Окно-1:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SQL> select min(s) from t1; -- 10 строк, `s` = индексное поле
PLAN (T1 ORDER T1_S)

Current memory = 783372
Delta memory = 0
Max memory = 820760
Elapsed time= 0.01 sec
Buffers = 75
 Reads = 8  -- "what's that foo ?.."
Writes 0
Fetches = 11
SQL>
...
Рейтинг: 0 / 0
Вытеснение из кеша страниц, прочитанных через ORDER <index_name> (навигацией)
    #38474765
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

значит либо в статье ошибка, либо мы не правильно поняли. Вообще когда я её читал как то не обратил внимание на
http://www.ibase.ru/devinfo/dataaccesspaths.htm#chapter121 для доступа на основе битовой карты страничный кеш также переводится в режим, описанный в пункте 1.1.1.
поэтому думал что так и должно быть. Но ты своим топиком посеял во мне сомнения
...
Рейтинг: 0 / 0
Вытеснение из кеша страниц, прочитанных через ORDER <index_name> (навигацией)
    #38474767
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

стой! Ты в 2.5 проводил эксперимент в супере?
...
Рейтинг: 0 / 0
Вытеснение из кеша страниц, прочитанных через ORDER <index_name> (навигацией)
    #38474773
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисТы в 2.5 проводил эксперимент в супере?C:\1Install\FIREBIRD_2_5\bin\fbserver.exe -s fb25ss
а чё ?
...
Рейтинг: 0 / 0
Вытеснение из кеша страниц, прочитанных через ORDER <index_name> (навигацией)
    #38474782
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гы... перевёл его в SuperClassic - картина стала лучше, t1 из кеша не вышибается. Но в статье-то про эту особенность SS ничего не сказано... %-/
...
Рейтинг: 0 / 0
Вытеснение из кеша страниц, прочитанных через ORDER <index_name> (навигацией)
    #38474787
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидГы... перевёл его в SuperClassic - картина стала лучше, t1 из кеша не вышибается. Но в статье-то про эту особенность SS ничего не сказано... %-/тьфу, блин... туплю. для SC и не должно ничего вышибаться, он же свой у каждого.
...
Рейтинг: 0 / 0
Вытеснение из кеша страниц, прочитанных через ORDER <index_name> (навигацией)
    #38474789
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

в суперклассике как и в классике кеш раздельный. Я не думаю что это
авторТак как ожидаемый объем данных довольно велик, то в процессе чтения страниц таблицы с диска существует проблема вытеснения читаемыми страницами других, потенциально нужных конкурирующим сессиям. Для этого логика работы страничного кеша меняется - текущая страница скана помечается как MRU (most recently used) в течение чтения всех записей с данной страницы. Как только на странице нет больше данных и надо фетчить следующую, то текущая страница освобождается с признаком LRU (least recently used), уходя в "хвост" очереди и будучи таким образом первым кандидатом на удаление из кеша.
вообще работает для файлового кэша. А для раздельного кеша абсолютно пофиг, что ты там делал в другой сессии.
...
Рейтинг: 0 / 0
Вытеснение из кеша страниц, прочитанных через ORDER <index_name> (навигацией)
    #38474848
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоидсогласно Писанию, вытеснение страниц из кеша может произойти, если:
1) они были прочитаны full scan'ом;
там должно быть написано, что фуллскан не вытесняет чужие страницы. Это я так криво написал или ты так криво прочитал?

Таблоид2) они были прочитаны индексным сканированием
это ошибка в статье, уже тут обсуждалось вроде бы. К битмапам вышесказанное не относится, только к фуллскану.

ТаблоидБолее общий вопрос: существует ли в громадье планов на ФБ-3 нечто, что позволит зафиксировать в кеше (сделать их не вытесняемыми) данные каких-то конкретных таблиц или просто результат какой-то конкретной выборки ?
нет никакого громадья планов, есть доделки обещанного ранее. Ничего другого в ФБ3 не будет. Про фиксацию в кеше не буду комментировать, ибо у меня таких планов нет.
...
Рейтинг: 0 / 0
Вытеснение из кеша страниц, прочитанных через ORDER <index_name> (навигацией)
    #38474878
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrТаблоидсогласно Писанию, вытеснение страниц из кеша может произойти, если:
1) они были прочитаны full scan'ом;там должно быть написано, что фуллскан не вытесняет чужие страницы. Это я так криво написал или ты так криво прочитал?там сказано вот так: http://www.ibase.ru/devinfo/dataaccesspaths.htm#chapter111 существует проблема вытеснения читаемыми страницами других, потенциально нужных конкурирующим сессиям. Для этого логика работы страничного кеша меняется - текущая страница скана помечается как MRU (most recently used) в течение чтения всех записей с данной страницы. Как только на странице нет больше данных и надо фетчить следующую, то текущая страница освобождается с признаком LRU (least recently used), уходя в "хвост" очереди и будучи таким образом первым кандидатом на удаление из кеша. Из выделенных кусков можно сделать вывод только о том, что результат фулл-скана САМ БУДЕТ ВЫТЕСНЕН, причём он - первый кандидат на это.
Про то, что он такой "пушистый и добрый" и никого не вытесняет, я НЕ вижу намёков. Но как раз это я и не спрашивал, меня интересовало вытеснение вообще, а не фуллскана / фуллсканом.

dimitrТаблоид2) они были прочитаны индексным сканированиемэто ошибка в статье, уже тут обсуждалось вроде бы. К битмапам вышесказанное не относится, только к фуллскану. 2 kdv: подправить бы надо, а ? в эту статью многих тыкают, а кто-то и сам регулярно в неё лезет.
dimitrТаблоидпозволит зафиксировать в кеше (сделать их не вытесняемыми) данные каких-то конкретных таблиц или просто результат какой-то конкретной выборки ?нет никакого громадья планов, есть доделки обещанного ранее. Ничего другого в ФБ3 не будет. Про фиксацию в кеше не буду комментировать, ибо у меня таких планов нет.Ясно. Хреново. Тогда нынешние сборки должны зваться уже не альфами, а бетами. Ну да ладно.
...
Рейтинг: 0 / 0
Вытеснение из кеша страниц, прочитанных через ORDER <index_name> (навигацией)
    #38474887
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидЯсно. Хреново. Тогда нынешние сборки должны зваться уже не альфами, а бетами. Ну да ладно.
Посмотри в трекере сколько там ещё запланированного до беты. Тогда поймёшь что до неё еще далеко.

Таблоид я не знаю как ты понял. Но вот я понял, что при фулскане (он же натурал) при многопользовательском режиме ничего не вытесняется. А про индексный скан ДЕ уже сказал, что там ошибка.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вытеснение из кеша страниц, прочитанных через ORDER <index_name> (навигацией)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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