Context indeks løsning

 

De søkeindekser støttes i en oracle database av såkalt  Context index. Implisit, om lagringsparametre ikke angis, lagres de indeks tabellene i DEFAULT USER TABLESPACE, dvs at både Context indekstabeller og tabeller de bygges på (de bygges på CLOB-kolonner hovedsakelig) ligger i samme tablespace

 

Det siste trekk forårsaker ekstra konkurranse mellom parallele Input/Output prosesser og synker hastighet vesentlig. For å  minske konkurranse mellom parallelle Input/Output prosesser plasseres alle CONTEXT index tabeller (for alle applikasjonene)  i en felles Local Managed tablespace. Løsningen øker hastighet siden leseprosesser av CLOB-kolonner og skriveprosesser av Context indekstabeller blir uavhengige fra hverandre.

 

Local  Managed (LM) øker  hastighet i enda større grad siden denne typen av tablespace ikke bruker Data Dictionary.

 

Når context-indeksen opprettes eller ombygges brukes en preferanse for å angi hvor skal indeksen lagres. Preferanse er et objekt av klassen Storage, som lagres i skjemaet CTXSYS. Vi har opprettet en preferanse TBLSP_TEXT_INDEX i CTXSYS skjema. I dette tilfellet,  kan preferansen brukes av alle uten noen ekstra privilegier.

 

As CTXSYS:

begin

  ctx_ddl.create_preference ('tblsp_text_index','BASIC_STORAGE');

  ctx_ddl.set_attribute ('tblsp_text_index','I_TABLE_CLAUSE', 'tablespace text_index');

  ctx_ddl.set_attribute ('tblsp_text_index','K_TABLE_CLAUSE', 'tablespace text_index');         

  ctx_ddl.set_attribute ('tblsp_text_index','R_TABLE_CLAUSE', 'tablespace text_index');

  ctx_ddl.set_attribute ('tblsp_text_index','N_TABLE_CLAUSE', 'tablespace text_index');

  ctx_ddl.set_attribute ('tblsp_text_index','I_INDEX_CLAUSE', 'tablespace text_index');

  ctx_ddl.set_attribute ('tblsp_text_index','P_TABLE_CLAUSE', 'tablespace text_index');

end;

 

 

Ved oppretting av context index kan utviklerne bruke denne felles preferance:

 

CREATE INDEX  [<skjema_navn>.]<index_navn>

ON [<skjema_navn>.]<table_navn> (<col_navn>)

INDEXTYPE  IS  CONTEXTINDEX

PARAMETERS ( ’STORAGE CTXSYS.TBLSP_TEXT_INDEX

                        [, <class_navn> <preferance_navn>, …]);

 

Exempel:.

CREATE INDEX DIPLOM_SGMLTEKST_C_INDEKS ON                  

DIPLOMER (SGMLTEKST) INDEXTYPE IS CONTEXT

PARAMETERS (’STORAGE CTXSYS.TBLSP_TEXT_INDEX’);