21
Tipos de Segmentos

Tipos de Segmentos

  • Upload
    efrem

  • View
    33

  • Download
    1

Embed Size (px)

DESCRIPTION

Tipos de Segmentos. B-Tree Index. Index entry. Root. Branch. Index entry header. Key column length. Leaf. Key column value. ROWID. Almacenamiento en los índices. PCTFREE DB_BLOCK_SIZE-OVERHEAD-entries* ENTRY_ OVERHEAD-ENTRIES(directorio valores)-ROWID. Reescritura de Consultas. - PowerPoint PPT Presentation

Citation preview

Page 1: Tipos de Segmentos

Tipos de Segmentos

Page 2: Tipos de Segmentos

B-Tree Index

Index entry headerKey column lengthKey column valueROWID

Root

Branch

Leaf

Index entry

Page 3: Tipos de Segmentos

Almacenamiento en los índices PCTFREE DB_BLOCK_SIZE-OVERHEAD-entries*

ENTRY_ OVERHEAD-ENTRIES(directorio valores)-ROWID

Page 4: Tipos de Segmentos

Reescritura de Consultas

Page 5: Tipos de Segmentos

Function-Based Indexes

SQL> CREATE INDEX FBI_UPPER_LASTNAME 2 ON CUSTOMERS(upper(cust_last_name));

SQL> SELECT * 2 FROM customers 3 WHERE UPPER(cust_last_name) = 'SMITH';

SQL> ALTER SESSION 2 SET QUERY_REWRITE_ENABLED = TRUE;SQL> ALTER SESSION 2 SET QUERY_REWRITE_ENABLED = enforced | trusted | stale_tolerated ;

Page 6: Tipos de Segmentos

Function-Based Indexes: Usage Function-based indexes:

Materialize computational-intensive expressions

Facilitate case-insensitive searches Provide a simple form of data

compression Can be used for an NLS sort index

Page 7: Tipos de Segmentos

Índices y nulos

Oracle ignora los registro donde todas las entradas son nulos.

CREATE INDEX IDX1 ON EMPLOYEE(NVL(ename,’null’)

Page 8: Tipos de Segmentos

Ejemplo Bitmap- Tabla base

CUSTOMER # MARITAL_ STATUS REGION GENDER INCOME_ LEVEL

101 single east male bracket_1

102 married central female bracket_4

103 married west female bracket_2

104 divorced west male bracket_4

105 single central female bracket_2

106 married central female bracket_3

Page 9: Tipos de Segmentos

Ejemplo Bitmap (Bitmap Generado)

REGION='east' REGION='central' REGION='west'1 0 0

0 1 0

0 0 1

0 0 1

0 1 0

0 1 0

Page 10: Tipos de Segmentos

Ejemplo Consulta sobre Bitmap

SELECT COUNT(*) FROM CUSTOMER WHERE MARITAL_STATUS = 'married' AND REGION IN ('central','west');

Page 11: Tipos de Segmentos

Bitmap Indexes

<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>

keystartROWID

endROWID bitmap

Table

Index

Block 10

Block 11

Block 12

File 3

Page 12: Tipos de Segmentos

Creating Bitmap IndexesCREATE BITMAP INDEX orders_region_id_idxON orders(region_id)PCTFREE 30STORAGE(INITIAL 200K NEXT 200KPCTINCREASE 0 MAXEXTENTS 50)TABLESPACE indx;

Page 13: Tipos de Segmentos

Comparing B-Tree andBitmap Indexes

B-tree

Suitable for high-cardinality columns

Updates on keys relativelyinexpensive

Inefficient for queries using OR predicates

Useful for OLTP

Bitmap

Suitable for low-cardinality columns

Updates to key columns veryexpensive

Efficient for queries using OR predicates

Useful for data warehousing

Page 14: Tipos de Segmentos

COMPUTE STATISTICS

CREATE INDEX ord_customer_ix_demo ON orders(customer_id, sales_rep_id) COMPUTE STATISTICS;

Page 15: Tipos de Segmentos

Índices particionados localmente sobre tablas Particionadas

CREATE TABLE employees(employee_id NUMBER(4) NOT NULL, last_name VARCHAR2(10), department_id NUMBER(2)) PARTITION BY RANGE (department_id)(PARTITION employees_part1 VALUES LESS THAN (11) TABLESPACE part1, PARTITION employees_part2 VALUES LESS THAN (21) TABLESPACE part2, PARTITION employees_part3 VALUES LESS THAN (31) TABLESPACE part3);

Page 16: Tipos de Segmentos

Índices Particionados Globalmente sobre Tablas Particionadas

CREATE INDEX employees_global_part_idx ON employees(employee_id)GLOBAL PARTITION BY RANGE(employee_id)(PARTITION p1 VALUES LESS THAN(5000), PARTITION p2 VALUES LESS THAN(MAXVALUE));

Page 17: Tipos de Segmentos

Índices globales no particionados sobre tablas particionadas

CREATE INDEX employees_global_idx ON employees(employee_id);

Page 18: Tipos de Segmentos

Hash-Partitioned Global Indexes: Overview 10g

1000, 1001, …900, 901, …< 1000 < MAXVALUE

901, 1001, …900, 1000, …

Range-partitioned global index

Hash-partitioned global index

Page 19: Tipos de Segmentos

Creating Hash-Partitioned Global IndexesSQL> CREATE INDEX ghoi_ix 2 ON order_items (order_id) GLOBAL 3 PARTITION BY HASH (order_id) ( 4 PARTITION p1 TABLESPACE tbs_1, 5 PARTITION p2 TABLESPACE tbs_2, 6 PARTITION p3 TABLESPACE tbs_3, 7 PARTITION p4 TABLESPACE tbs_4);

SQL> CREATE INDEX ghoi_ix 2 ON order_items (order_id) GLOBAL 3 PARTITION BY HASH (order_id) 4 PARTITIONS 4 5 STORE IN (tbs_1, tbs_2, tbs_3, tbs_4);

Page 20: Tipos de Segmentos

Índices Bipmap para IOT

Tabla de Correspondencia

9i Hash, rango

10g Lista

ROWID Físico ROWID Lógico

Page 21: Tipos de Segmentos

Creación de una Tabla Particionada Organizada por ÍndiceCREATE TABLE sales_range(

salesman_id NUMBER(5), salesman_name VARCHAR2(30), sales_amount NUMBER(10), sales_date DATE, PRIMARY KEY(sales_date, salesman_id)) ORGANIZATION INDEX INCLUDING salesman_id OVERFLOW TABLESPACE tabsp_overflow PARTITION BY RANGE(sales_date)(PARTITION sales_jan2000 VALUES LESS THAN(TO_DATE('02/01/2000','DD/MM/YYYY')) OVERFLOW TABLESPACE p1_overflow, PARTITION sales_feb2000 VALUES LESS THAN(TO_DATE('03/01/2000','DD/MM/YYYY')) OVERFLOW TABLESPACE p2_overflow, PARTITION sales_mar2000 VALUES LESS THAN(TO_DATE('04/01/2000','DD/MM/YYYY')) OVERFLOW TABLESPACE p3_overflow, PARTITION sales_apr2000 VALUES LESS THAN(TO_DATE('05/01/2000','DD/MM/YYYY')) OVERFLOW TABLESPACE p4_overflow);