Toni Navarrete Enginyeria del Software II – UPF 200 4

61
Enginyeria del SW II: Aspectes d’administració d’Oracle Aspectes d’administració de l’emmagatzematge d’Oracle (parcialement basat en la Guia de l’estudiant “Oracle 8: Database Administration”) Toni Navarrete Enginyeria del Software II – UPF 2004

description

Aspectes d’administració de l’emmagatzematge d’Oracle (parcialement basat en la Guia de l’estudiant “Oracle 8: Database Administration”). Toni Navarrete Enginyeria del Software II – UPF 200 4. Normalització: 1FN. Una relació R està en 1FN si i només si cada columna conté només valors atòmics - PowerPoint PPT Presentation

Transcript of Toni Navarrete Enginyeria del Software II – UPF 200 4

Page 1: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

e

Aspectes d’administració de l’emmagatzematge d’Oracle

(parcialement basat en la Guia de l’estudiant “Oracle 8: Database Administration”)

Toni Navarrete

Enginyeria del Software II – UPF 2004

Page 2: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 2

Normalització: 1FN

• Una relació R està en 1FN si i només si cada columna conté només valors atòmics

• (un atribut només pot tenir un valor)

Page 3: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 3

Normalització: 2FN

• Una relació R està en 2FN si i només si està en 1FN i tots els atributs que no formen part de la clau primària tenen dependència funcional completa d’aquesta

• (no s’adment que un atribut depengui només d’una part de la clau)

Page 4: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 4

Normalització: 3FN

• Dependència no transitiva: és una relació que té almenys tres atributs (A,B,C), on A determina B, B determina C, però C no determina A

• Una relació R està en 3FN si i només si està en 2FN i tots els seus atributs que no pertanyen a la clau primària depenen no transitivament d’aquesta

• (no hi haurà cap atribut que depengui d’un altre que no sigui clau primària; si fos així, han d’anar a una altra relació)

Page 5: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 5

Estructura de l’emmagatzematge a Oracle

Database

Logical Physical

Tablespace Data file

O/S BlockOracle block

Segment

Extent

Page 6: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 6

Què és un espai de taules (tablespace)?

• És el nom que es dóna a un grup d’un o més arxius de bases de dades

• Quan es creen “objectes” es pot especificar en quin espai de taules– Control sobre on i quin espai

d’emmagatzematge s’utilitza

• N’hi ha un espai de taules anomenat SYSTEM

Page 7: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 7

Tablespaces SYSTEM i no SYSTEM

•SYSTEM Tablespacecontains:

• Data dictionary information

• SYSTEM rollback segment

•Non-SYSTEMTablespace contains:

• Rollback segments• Temporary segments• Application data• Application indexes

Page 8: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 8

Com es crea un tablespace?CREATE TABLESPACE nom

DATAFILE filespec [clàusula_autoextend]

[, filespec [clàusula_autoextend]]...

[MINIMUM EXTENT integer[K|M]]

[DEFAULT clàusula_storage]

[PERMANENT|TEMPORARY]

[ONLINE|OFFLINE]

Exemple:CREATE TABLESPACE app_data

DATAFILE ‘/...../app01.dbf’ SIZE 100M,

‘/...../app02.dbf’ SIZE 100M

MINIMUM EXTENT 500K

DEFAULT STORAGE (INITIAL 500K NEXT 500K MAXEXTENTS 500

PCTINCREASE 0);

Page 9: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 9

Storage

• L’espai està estructurat en blocs• El tamany d’aquests blocs està definit

quan es munta la BD, normalment és el mateix tamany que els blocs de SO (per exemple en Linux 4K)

• Quan es crea un segment (una taula, per exemple), se li assigna un extent (extensió). – El seu tamany ve determinat per INITIAL– El valor per defecte és 5*tamany del bloc

Page 10: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 10

Storage

• En aquest primer extent es posen dades de control del segment i l’espai restant s’usa per insercions de files

• Quan és ple, es crea un segon– El seu tamany vé determinar per NEXT– Per defecte també 5*tamany de bloc

• I així successivament, es pot configurar que cada extent nou sigui en un % més gran que l’anterior– Clàusula PCTINCREASE– Valor per defecte: 50 (arrodonit a l’alça a múltiples de 5)

• La creació de nous extents és un procés bastant costòs • Es pot limitar el nombre màxim d’extents

– MAXEXTENTS

Page 11: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 11

Exemple Storage

• 1er extent: 5 blocs = 20K

• 2on extent: 5 blocs = 20K

• 3er extent: 10 blocs (5*1,5=7,5 redondejats) = 40K

• 4rt extent: 15 blocs (7,5*1,5=11,25) = 60K

• 5è extent: 20 blocs (11,25*1,5=16,875) = 80K

Page 12: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 12

Com obtenim informació dels tablespaces existents?

• Taula del diccionari de dades dba_tablespaces (o user_tablespaces)

SELECT tablespace_name, initial_extent, next_extent,max_extents, pct_increase, min_extlen

FROM dba_tablespaces;

• Els comptes d’usuari es2_xx només tenen permís per veure els tablespaces definits pel propi usuari (no poden accedir a dba_tablespaces)– user_tablespaces

Page 13: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 13

Recomanació

• A la taula del diccionari de dades dba_extents (user_extents) tenim els extents

• Si un segment té més de 10 extents és convenient refer la taula

• Abans de crear (o refer) una taula, convé calcular l’espai de les dades que ja té per assignar-ho al primer extent

Page 14: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 14

Tipus de segments (1/3)

TableTable

ClusterCluster

Table Table partitionpartition

IndexIndex

Page 15: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 15

Tipus de segments (2/3)

Index-organizedIndex-organizedtabletable Index Index

partitionpartition

RollbackRollbacksegmentsegment TemporaryTemporary

segmentsegment

Page 16: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 16

Tipus de segments (3/3)

LOB index LOB index LOBLOB

segmentsegment

BootstrapBootstrapsegmentsegment

Nested tableNested table

Page 17: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 17

Jerarquia de les clàusules d’emmagatzematge

• Un segment pot tenir les seves pròpies clàusules de storage

• Nivells de prioritat:1. Especificat al nivell

del segment (per exemple en fer un Create Table)

2. Especificat al nivell de l’espai de taules (en fer un Create Tablespace)

3. Valors per defecte d’Oracle

Oracle default

Tablespace

Segment

Page 18: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 18

Unificant extents lliures colindants (evitant fragmentacions)

• Això passa, per exemple, si s’esborren dues taules consecutives

• Per determinar els exten fragmentats:– Vista DBA_FREE_SPACE_COALESCED– Nota: “coalesce”=fusionarse, unirse

• Consulta:SELECT tablespace_name, total_extents,

percent_extents_coalescedFROM dba_free_space_coalescedWHERE percent_extens_coalesced <>100;

Page 19: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 19

Unificant extents lliures colindants (evitant fragmentacions)

Free extentFree extentUsed extentUsed extentFile headerFile header

BeforeBefore

ALTER TABLESPACE data01 COALESCE;ALTER TABLESPACE data01 COALESCE;

AfterAfter

Page 20: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 20

Control de l’espai usat per bloc

• PCTFREE (d’un segment de dades) representa el % de cada bloc que deixem lliure per suportar el creixement per “updates” de la fila

• PCTUSED (d’un segment de dades) representa el % mínim d’espai utilitzat d’un bloc

Page 21: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 21

Control de l’espai usat per bloc

InsertsInserts

InsertsInserts

InsertsInserts

InsertsInserts

1 2

3 4

PCTFREE=20PCTFREE=20 PCTUSED=40PCTUSED=40

80%80%

80%80%

40%40%

Page 22: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 22

Data Dictionary Views

TablespacesDBA_TABLESPACES

SegmentsDBA_SEGMENTS

Data filesDBA_DATA_FILES

Free extentsDBA_FREE_SPACE

Used extentsDBA_EXTENTS

Page 23: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 23 Gestionant taules. Creació

CREATE TABLE nom(

columna tipus [, columna tipus]...)

[TABLESPACE nom_tablespace]

[PCTFREE integer]

[PCTUSED integer]

[INITRANS integer]

[MAXTRANS integer]

[STORAGE clàusula_storage]

[LOGGING|NOLOGGING]

[CACHE|NOCACHE]

INITRANS: nº de slots per transaccions* preassignades a cada bloc (1 per

defecte)

MAXTRANS: nº màxim de slots per transaccions* assignades a cada bloc (255 per

defecte)

LOGGING: s’utilitza un redo log file (les operacions són es guarden a un log)

CACHE: s’usa una cache a memoria

* Un slot per transaccions és un espai reservat que s’utilitza per guardar

informació sobre les transaccions que fan canvis al bloc en un moment concret

Page 24: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 24

Gestionant taules. Creació (un exemple)

CREATE TABLE employees(

empno NUMBER(4),

last_name VARCHAR2(30)

deptno NUMBER(2))

PCTFREE 20 PCTUSED 50

STORAGE(INITIAL 200K NEXT 200K

PCTINCREASE 0 MAXEXTENTS 50)

TABLESPACE data01;

Page 25: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 25

Gestionant taules

• Posar les taules en un tablespace diferent– No amb rollback segments, temporary segments ni

índexs– A ser possible a discos diferents per evitar colls

d’ampolla– Per defecte, els vostres segments es creen al

tablespace users

• Utilitzar tamanys d’extent “estàndard” múltiples de 5*DB_BLOCK_SIZE, per minimitzar la fragmentació

• Usar la clàusula CACHE per petites taules de referència que s’accedeixen molt freqüentment

• Valorar si NOLOGGING per guanyar eficiència (arriscat!)

Page 26: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 26 Gestió de taules. Càlcul de PCTFREE i

PCTUSED

(Average Row Size Initial Row Size) * 100

Average Row Size

• Compute PCTUSED• Quan s’ha de fer una inserció, es fa una búsqueda linial fins a trobar

un bloc amb espai suficient (si n’hi ha)

• La fórmula pretén reduir el temps d’aquesta búsqueda, de forma que s’incrementi la probabilitat de trobar un bloc amb espai

Average Row Size * 100

100 PCTFREE Available Data Space

• Compute PCTFREE• Un alt PCTFREE suposa més espai per a les modificacions i una

menor densitat (menys files per bloc)

• Aquesta fórmula assegura que hi hagi espai per fer crèixer les files

Page 27: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 27 Gestió de taules. Reassignant l’espai sense

usar (després de diversos deletes)• El “High water mark” indica el darrer bloc que ha estat usat

– Una lectura de la taula per blocs s’aturarà en arribar-hi

• Amb un deallocate unused desassignem els blocs no usat dels extents d’un segment perquè es puguin assignar a d’altres

Free space after deleteFree space after deleteUnused blockUnused block

High water markHigh water mark

BeforeBeforedeallocationdeallocation

Used blockUsed block

ALTER TABLE employees

DEALLOCATE UNUSED;

ALTER TABLE employees

DEALLOCATE UNUSED;

AfterAfterdeallocationdeallocation

Page 28: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 28

Diccionari de dades de les taules

DBA_OBJECTS

OWNEROBJECT_NAMEOBJECT_IDDATA_OBJECT_IDCREATED

DBA_SEGMENTS

OWNERSEGMENT_NAMETABLESPACE_NAMEHEADER_FILEHEADER_BLOCK

DBA_TABLES

OWNERTABLE_NAMEPCT_FREEPCT_USEDINITIAL_EXTENTNEXT_EXTENTMIN_EXTENTSMAX_EXTENTSPCT_INCREASECACHEBLOCKSEMPTY_BLOCKSCHAIN_CNT

DBA_EXTENTS

OWNER

SEGMENT_NAME

EXTENT_ID

FILE_ID

BLOCK_ID

BLOCKS

Page 29: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 29

Exemple amb el diccionari de dades

• Exemple: recuperar els extents de la taula empleats

SELECT file_id, SUM(blocks) AS Blocks

FROM dba_extents

WHERE segment_name=‘empleats’;

Page 30: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 30

Validant l’estructura

–The Oracle server verifies the integrity of each data block.

–Use the CASCADE option to validate the structure of all indexes on the table, and perform cross-referencing between the table and its indexes.

ANALYZE TABLE empleats

VALIDATE STRUCTURE;

ANALYZE TABLE empleats

VALIDATE STRUCTURE;

Page 31: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 31

Gestionant índexs: tipus d’índexs

• A nivell lògic:– De columna simple o concatenat– Únic o no únic

• A nivell físic:– Arbre B o Bitmap

• Si Arbre B: de clave normal o revers

– Particionat o no particionat

Page 32: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 32

Arbre B

Index entry header

Key column length

Key column value

ROWID (veure seg. transp.)

Root

Branch

Leaf

Index entry

Un parell (key column length, key column value) per a cada camp de la clau

Page 33: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 33

Rowid

OOOOOO BBBBBBFFF RRR

Data object number

Relative file number

Row numberBlock number

–Normal Rowid:– Unique identifier for a row – Used to locate a row

–Restricted Rowid:- Can identify rows within a segment- Needs less space

BBBBBBBB FFFFRRRR

Block number Row number File number

. .

Page 34: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 34

Algunes característiques dels arbres B d’Oracle

• Si hi ha múltiples files amb els mateixos valors de claus, aquests s’han de repetir a l’arbre

• No hi ha entrada a l’índex si per a una fila, tots els valors de les columnes clau són NULL

• S’utilitza Rowid restringit, ja que totes les files pertanyen al mateix segment

Page 35: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 35

Algunes característiques dels arbres B d’Oracle

• Les operacions d’insert, resulten també en la inserció d’una entrada a l’índex

• Les operacions de delete d’una fila, produeix només un esborrat lògic de l’entrada de l’índex:– l’espai no està disponible fins que no s’hagin

esborrat totes les entrades del bloc

• Els update de columnes de clau, es corresponen a un esborrat lògic i una inserció a l’índex

Page 36: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 36

Creació d’ún índex amb arbre B (un exemple)

CREATE INDEX emp_lname_idx

ON employees(last_name)

PCTFREE 30

STORAGE(INITIAL 200K NEXT 200K

PCTINCREASE 0 MAXEXTENTS 50)

TABLESPACE indx01;

Page 37: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 37

Consells per crear índexs

• Els índex acceleren consultes però enlenteixen operacions DML (A/B/M) (veure seg. transp.)

• Situar l’índex en un tablespace diferent al de la taula (també diferent del rollback i temporary segment)

• Utilitzar tamanys d’extent uniformes, típicament múltiples de 5 blocs

• L’ús de NOLOGGING per grans índexs pot millorar l’eficiència

• Les files d’un índex són més petites que les d’una taula. Això fa que hi hagi moltes més files per bloc que en una taula. Per això, INITRANS és típicament més gran que en una taula

• Especificar un alt PCTFREE si és probable que hi hagi insercions de valors entre dues claus (això no passa si les claus son correlatives)

Page 38: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 38

Nombre d’índexs per taula

• A table can have any number of indexes. However, the more indexes there are, the more overhead is incurred as the table is modified. Specifically, when rows are inserted or deleted, all indexes on the table must be updated as well. Also, when a column is updated, all indexes that contain the column must be updated.

• Thus, there is a trade-off between the speed of retrieving data from a table and the speed of updating the table. For example, if a table is primarily read-only, having more indexes can be useful; but if a table is heavily updated, having fewer indexes may be preferable.

Page 39: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 39

Índex revers

• Per evitar que amb claus correlatives tots els valors s’insereixen al mateix lloc de l’arbre

• Especialment útil en entorns paral·lelitzats

KEY ROWID

EMPNO (BLOCK# ROW# FILE#)----- -------------------1257 0000000F.0002.00012877 0000000F.0006.00014567 0000000F.0004.00016657 0000000F.0003.00018967 0000000F.0005.00019637 0000000F.0001.00019947 0000000F.0000.0001... ...... ...

Index on EMP (EMPNO)Index on EMP (EMPNO) EMP tableEMP table

EMPNO ENAME JOB ...----- ----- --------7499 ALLEN SALESMAN7369 SMITH CLERK7521 WARD SALESMAN ...7566 JONES MANAGER7654 MARTIN SALESMAN7698 BLAKE MANAGER7782 CLARK MANAGER... ... ... ...... ... ... ...

Page 40: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 40

Creació d’un índex revers (un exemple)

CREATE UNIQUE INDEX ord_ord_no_idx

ON ord(ord_no) REVERSE

PCTFREE 30

STORAGE(INITIAL 200K NEXT 200K

PCTINCREASE 0 MAXEXTENTS 50)

TABLESPACE indx01;

Page 41: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 41

Índex Bitmap

• Útil quan:– Taules llargues on la columna clau té baixa

cardinalitat (pocs possibles valors)– Quan les consultes utilitzen l’operador OR

<Blue, 10.0.3, 12.8.3, 1000100100010010100>

<Green, 10.0.3, 12.8.3, 0001010000100100000>

<Red, 10.0.3, 12.8.3, 0100000011000001001>

<Yellow, 10.0.3, 12.8.3, 0010001000001000010>

keykeystartstartROWIDROWID

endendROWIDROWID bitmapbitmap

Table

Index

Block 10

Block 11

Block 12

File 3

Page 42: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 42

Comparació entre arbres B i índex bitmap

B-tree

Suitable for high-cardinality

columns

Updates on keys relatively

inexpensive

Inefficient for queries

using OR predicates

Bitmap

Suitable for low-cardinality

columns

Updates to key columns very

expensive (pel nivell de bloquejos)

Efficient for queries

using OR predicates

Page 43: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 43

Creació d’un índex bitmap (un exemple)

CREATE BITMAP INDEX ord_region_id_idx

ON ord(region_id)

PCTFREE 30

STORAGE(INITIAL 200K NEXT 200K

PCTINCREASE 0 MAXEXTENTS 50)

TABLESPACE indx01;

Page 44: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 44

Modificar els paràmetres d’emmagatzematge

• Exemple:ALTER INDEX emp_lname_idx

STORAGE(NEXT 400K MAXEXTENTS 100);

Page 45: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 45

Reconstruir un índex

ALTER INDEX ord_region_id_idx

REBUILD

TABLESPACE indx02;

ALTER INDEX ord_region_id_idx

REBUILD

TABLESPACE indx02;

Use this command to:–Move an index to a different tablespace–Improve space utilization by removing

deleted entries–Change a reverse key index to a normal B-

tree index and vice versa

Page 46: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 46

Validant un índex

ANALYZE INDEX ord_region_id_idx

VALIDATE STRUCTURE;

ANALYZE INDEX ord_region_id_idx

VALIDATE STRUCTURE;

INDEX_STATSSELECT blocks, pctused, distinct_keys, lf_rows, del_lf_rows

FROM index_stats;

Reorganitzar l’índex si el rati del_lf_rows a lf_rows passa del 30%

Page 47: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 47

Clusters i taules organitzades per índex

• La disposició de les dades als blocs no és aleatòria

• Clusters: organitzats per una clau (o conjunt de claus)

• Taules organitzades per índex: els valors estan als nodes fulla de l’arbre B de l’índex

Page 48: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 48

Distribució de files a les taules

ClusterCluster Index-organizedIndex-organizedtabletable

TableTable

RandomRandom

Ordering of RowsOrdering of Rows

GroupedGrouped OrderedOrdered

Page 49: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 49

Cluster

Clustered ORD and Clustered ORD and ITEM tablesITEM tables (VENDA i (VENDA i LINIA_VENDA)LINIA_VENDA)

Cluster Key(ORD_NO) 101 ORD_DT CUST_CD 05-JAN-97 R01

PROD QTYA4102 20A5675 19 W0824 10

102 ORD_DT CUST_CD 07-JAN-97 N45

PROD QTYA2091 11G7830 20 N9587 26

Unclustered ORD and Unclustered ORD and ITEM tablesITEM tables (VENDA i (VENDA i LINIA_VENDA)LINIA_VENDA)

ORD_NO PROD QTY ...----- ------ ------

101 A4102 20102 A2091 11102 G7830 20

102 N9587 26101 A5675 19101 W0824 10

ORD_NO ORD_DT CUST_CD------ ------ ------

101 05-JAN-97 R01102 07-JAN-97 N45

Page 50: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 50

Dos tipus de clusters

Index clusterIndex cluster Hash clusterHash cluster

Hash functionHash function

Page 51: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 51

Creant un cluster. Un exemplecreate cluster clu(as_id number(3))tablespace tt;

create index ind_clu on cluster clutablespace ti;

create table assignatura(as_id number(3),...constraint pk_assignatura primary key (as_id) using index tablespace ti

) cluster clu(as_id);

create table matricula(

ma_num number(6),ma_al_id number(4) not null,ma_as_id number(3) not null,constraint pk_matricula primary key (ma_num)

) cluster clu(ma_as_id);

Page 52: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 52

Creant un cluster amb Hash. Un exemple

CREATE CLUSTER hashclu

(as_id number(3))

HASHKEYS 10

TABLESPACE tt;

Page 53: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 53

Exemple d’overflow en un cluster amb hash

Preallocated blocksPreallocated blocks

Key 2Key 1

Key 12Key 11

Key 3

Overflow blockOverflow block

Key 22

Key 21

Page 54: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 54

Quan és útil un cluster

Criterion

Uniform key distribution

Evenly spread key values

Rarely updated key

Often joined master-detail tables

Predictable number of key values

Queries using equality predicate on key

HashIndex

Y Y

Y

Y

Y

Y

Y

Y

Page 55: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 55

Conseqüències de l’ús de clusters

• Recórrer totes les files d’una sola de les taules és més lent

• Les insercions són més lentes

• La millora en els joins no és massa gran

Page 56: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 56

Taula organitzada per índex

Indexed access Indexed access on tableon table

ROWIDROWID

Accessing index-Accessing index-organized tableorganized table

Non-key columnsNon-key columns

Key columnKey column

Row headerRow header

Page 57: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 57

Comparació amb taules “normals”

Index-Organized Table

Identified by primary key

No ROWID

No secondary indexes

Full index scans return

rows in PK order

No support for

unique constraints

Distribution, replication, and

partitioning not supported

Regular Table

Unique identifier—ROWID

ROWID implicit

Supports several indexes

FTS returns rows in no specific

order

Unique constraints allowed

Distribution, replication, and

partitioning supported

Page 58: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 58

Creació d’una taula organitzada per índex. Un exemple

CREATE TABLE sales

(

office_cd NUMBER(3),

qtr_end DATE,

revenue NUMBER(10,2),

review VARCHAR2(1000),

CONSTRAINT sales_pk

PRIMARY KEY(office_code, qtr_end)

)

ORGANIZATION INDEX TABLESPACE data01

PCTTHRESHOLD 20

OVERFLOW TABLESPACE data02;

Page 59: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 59

Row overflow en una taula organitzada per índex

• També es pot especificar que una sèrie de columnes vagin sempre directament a l’espai d’overflow

Segment = PK NameType = Index

Segment = SYS_IOT_OVER_nType=Table

Row bigger thanRow bigger thanPCTTHRESHOLDPCTTHRESHOLDBlockBlock

Rows within PCTTHRESHOLDRows within PCTTHRESHOLD

IOT tablespace Overflow tablespace

Page 60: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 60

Conseqüències de l’ús de taules organitzades per índex

• Les operacions d’ordenació de la taula són molt més ràpids (si es fan a partir de la clau d’indexació)

• Recórrer l’índex d’una taula organitzada per índex és més lent que recórrer un índex “normal” (perquè ha de llegir més blocs)

• No poden haver índexs secundaris

Page 61: Toni Navarrete Enginyeria del Software II – UPF 200 4

En

gin

yeri

a d

el S

W II

: Asp

ect

es d

’adm

inis

tra

ció

d’O

racl

ePàgina 61

Bibliografia

• Oracle8 Database Administration. Oracle Education

• La biblia de Oracle8. Anaya Multimedia

• Guy Harrison: Oracle SQL, High-Performance Tunning

• Mark Gurry: Oracle SQL Tuning Pocket Reference. O’Reilly