powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Можно ли как-нибудь вычислить используемость Индекса
28 сообщений из 28, показаны все 2 страниц
Можно ли как-нибудь вычислить используемость Индекса
    #32176835
Дело в том, что индексы у меня генерируются автоматически по мета-базе, и похоже на то, что их слишком много, хотя они и простые (по одному полю каждый).

Дело усугубляется еще и тем, что и большинство запросов также строятся автоматически по той же мета-базе.

Рукописных запросов счетное количество и для их оптимизации я еще дополнительно насоздавал индексы (чаше по двум-трем полям).

Один раз провел чистку автоматических индексов -- почти все удалил.
На следующий день получил "драму в трех частях без антракта" и вынужден был быстренько все восстановить.

Теперь вот сижу и гадаю: где бы подсмотреть какие и сколько раз использованы индексы, а вернее какие вообще не используются...

Я сам не смогу перебрать (для получения Execution Plan) все те варианты запросов, которые получаются у юзеров в процессе работы.

Oracle 8.1.6i, Win2000
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32176957
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно по статистике определить в целом как использовались индексы.
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32176997
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно и детально по индексам. У Тома Кайта был пример
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32177095
ХАЧУ!
Именно это мне и нужно.
Не могли бы вы хотя бы вектор поисков обозначить из этого примера?
А то пока я его отыщу...
И еще: боюсь я не совсем понял ссылку "у Тома Кайта".
Уточните, плиз, Том Кайт - это автор монографии?
Какой (издание,название)? (чукча (я) не читатель -- чукча писатель!)
Или что-то другое? (псевдоним местного гуру, адрес в и-нете, ...)
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32177116
Delerium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mozhesh poiskatj v http://asktom.oracle.com
Eto forum Tom Kyte, gde on otvechajet na razniji vaprosi.
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32177127
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В целом:
Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
select distinct
  name,
  to_char(value)as value
 from
  v$sysstat
 where
  name like  'table scan%' or
  name like  'index fast full%' or
  name like  'table fetch%' or
  name like '%rowid%'
union
select 
  'Процентое соотношение по ROWID' as name, to_char((b.value/(a.value+b.value))* 100 ,'99.99') as value
 from
  (select 
     sum(value) as value
    from
     v$sysstat
    where
     name =  'table scans (short tables)' or
     name =  'table scans (long tables)' 
  ) a,
  (select 
     sum(value) as value
    from
     v$sysstat
    where
      name =  'table fetch by rowid'   
  )  b

NAME                                                             VALUE                                   
 ---------------------------------------------------------------- ----------------------------------------
 
index fast full scans (direct read)                               0                                        
index fast full scans (full)                                      3                                        
index fast full scans (rowid ranges)                              0                                        
table fetch by rowid                                              1846603                                  
table fetch continued row                                         190                                      
table scan blocks gotten                                          1647654                                  
table scan rows gotten                                            11694566                                 
table scans (cache partitions)                                    0                                        
table scans (direct read)                                         0                                        
table scans (long tables)                                         91                                       
table scans (rowid ranges)                                        0                                        
table scans (short tables)                                        3904                                     
Процентое соотношение по ROWID                                     99 . 78                                   
 13  rows selected.
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32177188
MBasil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В Oracle9i включаем проверку использовния :

ALTER INDEX summit.orders_id_idx
MONITORING USAGE

Делаем запрос в :
V$OBJECT_USAGE

Отключаем
ALTER INDEX summit.orders_id_idx
NOMONITORING USAGE
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32177196
Добавил в свою систему контроль указанного параметра.
table scans / (table scans + fetch by rowid) в процентах.

В моей системе получилось ажно 44,896%.
Думаю, что это неплохо.

Теперь вот еще до индивидуальных индексов добраться...
Скорее всего у меня-таки есть избыток индексов.

Большое спасибо за подсказку и наводку.
Пойду, гляну на Тома, подберу крупицы знаний..
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32177233
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Поплюев Алексей:
Ты думаешь?
Ну если твои 55% использования индексов - это неплохо, тогда мои 99.78% - это просто супер, так что-ли?

P.S. если бы эти индексы еще и положительно влияли, вот тогда...
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32177274
В твоем примере как раз процент гораздо ниже, ибо ты выводил отношение
FETCH BY ROWID к сумме FETCH + SCAN

Я же вывожу отношение SCAN / (SCAN + FETCH)
Код: plaintext
1.
2.
3.
4.
5.
select 'Index usage ratio' Name,
        round(sum(decode(name,'table scans (short tables)',value,'table scans (long tables)',value, 0 ))
            / sum(decode(name,'table fetch continued row',value,'table scans (short tables)',value,'table scans (long tables)',value, 0 ))
            *  100 , 4 ) Ratio,
        'Чем больше, тем меньше FETCH BY ROWID' Remarks
    from V$SYSSTAT

У меня сейчас 54%. У тебя, насколько я понимаю, гораздо меньше.
(если приведенная тобой цифра соответствует приведенному же SQL).

Или я чего-то недогнал, или одно из двух... :-)
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32177296
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Поплюев Алексей:

У тебя что-то с пониманием формулы не то или с математикой....

Если поиск данных по ROWID, то есть по индексу составил(в разах):
Код: plaintext
1.
table fetch by rowid                                              1846603 


А поиск по таблицам составил:
Код: plaintext
1.
2.
table scans (long tables)                                    91 
table scans (short tables)                                 3904 


всего 3995.

Неужели без всяких формул не видно, какое число болше 1846603 или 3995?
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32177321
У меня с пониманием смысла характеристик ORACLE явные проблемы, это точно.
Переделал. Теперь кажет 97,7%. (21177522 / (21177522+8168+1) * 100)

Я почему-то был уверен, что FETCH BY ROWID -- это плохо.
Ибо не далее как вчера сделал один доп.индекс в табличке и сразу же некий запрос стал вместо чего-то там FETCH BY ROWID использовать ACCESS BY INDEX ROWID и стал выполняться в сотни раз быстрее...
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32177332
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Переделал"

Я же тебе дал полный запрос.
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32177361
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Поплюев Алексей.

Fetch by rowid - статистика оракла. Access by index rowid - способ работы оптимизатора. Разницу видите?

При добавлении индекса куда-то там улучштся и статистика Fetch by rowid, и ускорится выполнение запросов.
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32177363
Grand Thanks to MBasil
Сейчас попробую...

to softbuilder
Во-первых, у меня была опечатка, во-вторых мне твой "как есть" не подходит, ибо он теперь часть большего запроса:
Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
            select 'Data Dictionary cache' Name,
                    round((SUM(GETS - GETMISSES - USAGE - FIXED)) / SUM(GETS) *  100 , 4 ) Ratio,
                    'Должно быть около 99%' Remarks
                from V$ROWCACHE
            union all
            select 'Library cache' Name,
                    round((SUM(PINS - RELOADS)) / SUM(PINS) *  100 , 4 ) Ratio,
                    'Должно быть около 99%' Remarks
                from V$LIBRARYCACHE
            union all
            select 'Index usage ratio' Name,
                    round(sum(decode(name,'table fetch by rowid',value, 0 ))
                        / sum(decode(name,'table fetch by rowid',value,'table scans (short tables)',value,'table scans (long tables)',value, 0 ))
                        *  100 , 4 ) Ratio,
                    'Нужно достичь 99%' Remarks
                from V$SYSSTAT
            union all
            select 'Memory usage in Sorts ratio' Name,
                    round(sum(decode(name,'sorts (memory)',value, 0 ))
                        / sum(decode(name,'sorts (memory)',value,'sorts (disk)',value, 0 ))
                        *  100 , 4 ) Ratio,
                    'Отношение сортировки в Памяти ко всем сортировкам' Remarks
                from V$SYSSTAT
            union all
            select 'Cache hit ratio' Name,
                    round(( 1  - sum(decode(name,'physical reads',value, 0 ))
                        / sum(decode(name,'db block gets',value,'consistent gets',value, 0 ))
                    ) *  100 , 4 ) Ratio,
                    'Должно быть около 99%' Remarks
                from V$SYSSTAT
            union all
            select 'Buffer pool ' || Name || ' hit ratio' Name,
                    round(( 1  - physical_reads
                        / (db_block_gets+consistent_gets)
                    ) *  100 , 4 ) Ratio,
                    'Должно быть около 99%' Remarks
                from V$BUFFER_POOL_STATISTICS
            union all
            select 'Average buffers scanned' Name,
                    round( 1  + sum(decode(name,'free buffer inspected',value, 0 ))
                       / sum(decode(name,'free buffer requested',value, 0 )), 4 ),
                    'Должно быть 1..2, если больше двух -- серверу мало буферов' Remarks
                from V$SYSSTAT
            union all
            select 'Average dirty buffers' Name,
                    round(sum(decode(name,'dirty buffers inspected',value, 0 ))
                    / sum(decode(name,'free buffer inspected',value, 0 )), 4 ),
                    'Должно быть ??, если много "грязных" -- серверу мало буферов' Remarks
                from V$SYSSTAT
            union all
            select 'Shared pool free memory (MB)' Name,
                    round(bytes/ 1024 / 1024 , 4 ) Ration,
                    'Если много свободной памяти -- может она лишняя?' Remarks
                from V$SGASTAT
                where name = 'free memory'
                    and pool = 'shared pool';
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32177375
to mBasil
Нет у меня этой вьюшки! Oracle 8.1.6i/NT
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32178016
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы не перепутать, поднял книжку.

1) Вешаем тригер

create or replace trigger user_logon
after logon on database
begin
if (user='USER') then
execute immediate
'alter session set create_stored_outlines = MyCategory';
end if;
end;
/

2) Заходим USER и резвимся в приложении

3) Смотрим

select name,hint from user_outline_hints
where hint like 'INDEX%'

Только что проверил, работает как часы :) Рекомендуется перенести OUTLN в какое либо не системное табличное пространство (перед тем как резвиться :)
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32178461
Да, я уже вчера на полчасика включил у юзеров Create_Stored_Outlines (alter system), оно даже куда-то что-то писало. И вдруг мне показалось что система начала стремительно терять производительность и я быстренько (пока никто не понял что к чему) выключил взад. Может это был и не Outlines, Но осадок остался... :)
Вопрос: сильно ли тормозит Stored Outline?

Ну а потом все репу чесал, как же мне ее смотреть? Из под меня я только своё вижу... Зато есть отдельная схема OUTLN. Это что же -- я под ним коннектиться должен? Я ведь даже пароля его не знаю (да и не админ я здесь)...
Подскажите стандартный пароль для OUTLN, плз? -- скорее всего при установке здешнего сервера пароль ему никто специально не менял.
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32178469
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Угадай с трёх раз? - правильно : outln
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32178504
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень рекомендуется изменять пароль Outln и ВЫНОСИТЬ его из системного табличного пространства ДО НАЧАЛА ЭКСПРИМЕНТОВ :)

Может тогда осадка не останется :)

Кстати посмотреть можно в USER_ представлениях того пользователя которым резвился, надеюсь это делалось не для всех пользователей

Я думал, что написано вполне понятно.
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32178543
Для всех резвился, но у меня все юзеры "на одно лицо".
А мне на себе смысла нет резвиться -- я и сотой части запросов не смогу смоделировать... Да ладно, я ж сказал - никто не успел заметить...

Это что, я вот пытаюсь перенести в другой tablespace, строго по документации, но эта сволочь их опять восстанавливает в SYSTEM tablespace.

Выгрузил и грохнул таблицы OL$ из SYSTEM tablespace.

Создал новый tablespace

Задал этот ts как default для OUTLN

Загружаю

Обе таблицы опять-таки в SYSTEM...

Где косяк?

Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
Export the OL$ and OL$HINTS tables: 

EXP OUTLN/OUTLN FILE = exp_file TABLES = 'OL$' 'OL$HINTS' SILENT=y 



Remove the previous OL$ and OL$HINTS tables: 

CONNECT OUTLN/outln_password;
DROP TABLE OL$; 
CONNECT OUTLN/outln_password;
DROP TABLE OL$HINTS; 



Create a new tablespace for the tables: 

CREATE TABLESPACE outln_ts 
DATAFILE 'tspace.dat' SIZE 2MB 
DEFAULT STORAGE (INITIAL 10KB NEXT 20KB 
MINEXTENTS  1  MAXEXTENTS  999  PCTINCREASE  10 ) ONLINE; 


Enter the following statement: 

ALTER USER OUTLN DEFALUT TABLESPACE outln_ts;



Import the OL$ and OL$HINTS tables: 

IMPORT OUTLN/outln_password 
FILE=exp_file TABLES = 'OL$' 'OL$HINTS' IGNORE=y SILENT=y



The IMPORT statement re-creates the OL$ and OL$HINTS tables in the schema named OUTLN, but the schema now resides in a new tablespace called OUTLN_TS. 

...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32178547
Плюнул на этот ихний IMP/EXP.
Выдал DDL на таблицы и индексы, подправил и -- все ок.
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32178574
Alexander Sobyanin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alter table move...
не пробовал?
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32178601
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alter user outln default tablespace outln_ts;
revoke unlimited tablespace from outln;
alter user outln quota 0k on system;
alter user outln quota unlimited on outln_ts;

???
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32178619
to Alexander Sobyanin
Код: plaintext
1.
alter table outln.ol$ move tablespace outlines_ts
[ 1 ]: (Error): ORA- 00997 : неверное использование типа данных LONG

to Gluk (Kazan)
А вот так прокатило... 10х
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32178732
Gt_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt_
Гость
я тут прогнал чудо запрос и выявил такое:

Cache hit ratio 40,4412
Buffer pool DEFAULT hit ratio 66,9286

дайте плиз keywords по которым копать, почему процент маловат?
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32178738
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БД давно перезагружал?
...
Рейтинг: 0 / 0
Можно ли как-нибудь вычислить используемость Индекса
    #32178757
Gt_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt_
Гость
а я ее каждый день перегружаю ... холодный бекуп делаю ...
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Можно ли как-нибудь вычислить используемость Индекса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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