Os perigos dos Índices BITMAP

O índice BITMAP, ao contrário do B-TREE, contém uma entrada para cada valor indexado, que aponta (por um bitmap) para todos os registros que contém este valor.
Por causa desta arquitetura, durante um INSERT de um registro, seu BITMAP estará bloqueado durante esta operação. Ninguém poderá inserir um valor igual na coluna indexada.

Veja o teste abaixo:

Microsoft Windows XP [versão 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:Documents and SettingsRPRONI>sqlplus
SQL*Plus: Release 11.1.0.7.0 - Production on Seg Jan 4 16:25:37 2010
Copyright (c) 1982, 2008, Oracle.  All rights reserved.
Informe o nome do usußrio: SCOTT/TIGER
Conectado a:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> CREATE TABLE T1 (C1 VARCHAR2(10)) TABLESPACE USERS;
Tabela criada.
SQL> CREATE BITMAP INDEX TI_IDX ON T1(C1) TABLESPACE USERS;
-ndice criado.
SQL> INSERT INTO T1 VALUES (’Teste’);
1 linha criada.
SQL>

Deixe esta sessão como está, e em seguida, abra outra sessão, e tente executar o mesmo INSERT:

Microsoft Windows XP [versão 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:Documents and SettingsRPRONI>sqlplus SCOTT/TIGER
SQL*Plus: Release 11.1.0.7.0 - Production on Seg Jan 4 16:27:00 2010
Copyright (c) 1982, 2008, Oracle.  All rights reserved.
Conectado a:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> INSERT INTO T1 VALUES (’Teste’);

Este segundo INSERT irá esperar indefinidamente, até um COMMIT ou ROLLBACK da primeira sessão.
Parabéns, você fez o Oracle tornar-se monousuário para INSERTs.

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.