sql

Diferenca entre UNIQUE CONSTRAINT e UNIQUE INDEX

  • Sintaxe de uso para criar , alterar e apagar
  • Sao registrados em tabelas diferentes (sys*)
  • Para indice unique o registro é validado linha a linha.
  • Para tabelas logadas as constraints sao validadas apenas no final de cada sql INSERT/UPDATE/DELETE.
Tags:

Integração entre trigger e stored procedure

A partir da versao 11.10 , quando a trigger é criado com FOR EACH ROW há possibilidade de passar automaticamente os dados da tabela executada pela trigger para a procedure e é possível identificar dentro da procedure qual tipo de trigger está sendo executada (update, delete, insert ou select).

Tags:

Testes práticos de performance com FET_BUF_SIZE e opção "b" do SQLHOSTS

Este artigo descreve os resultados de alguns testes de performance que realizei quando parametrizado a váriavel de ambiente FET_BUF_SIZE e opção "b" do SQLHOSTS. Estes testes estão relacionados ao throughtput de rede

Como configurar BTS - Basic Text Search DataBlade para melhorar buscas textuais

O módulo Basic Text Search é um "plug-in" gratuito que já vem com as versões mais recentes do Informix e permite buscas textuais em modo mais avançado, performatico e flexivel que o LIKE ou MATCHES .

Funcionamento do Global Language Support (LOCALE)

GLS = Global Language Support
Collation = Conjunto, compilaçao
Locale = Local, localizaçao
Code Set/Page = Código de pagina (pt_BR.819)

Tratando dados duplicados em indices com Violations table

Objetivo do violations é tratar "falhas" em indices e constraints.
Estas falhas são: dados duplicados em indices e falha na checagem da constraint.

Quando o violations é ativado, qualquer falha é logada em 2 tabelas podendo assim realizar um tratamento relacionado aos dados.
Para trabal

Tags:

Quando criado um índice baseado em uma função (UDF) quais os cuidados a tomar?

Até a versão 11.10 não foi possível identificar como executar um update statistcs especifico para o índice da função.

Tabela sem rowid e indices deattached, como fica a id de rowid no indice?

Tabelas fragmentadas "sem" rowid na realidade possuem rowid, porém não é acessível ao usuário em um select, mas é possível visualizar através de um dump de pagina (oncheck -pd).

Se criado rowid manualmente (atraves de alter table ou alter fragment) o banco cria um índice no mesmo dbspace da tabela chamado "system-rowid" que considera o fragmento+rowid gerando um serial para cada um.

Comportamento do CREATE INDEX ONLINE internamente

O teste aqui descrito foi realizado na versão 11.10.

Parâmetro utilizado ONLIDX_MAXMEM

  1. A tabela que terá o índice criado não pode ter nenhum lock exclusivo.
  2. Realiza um checkpoint.
  3. Identifica como está particionada (fragmentos) a tabela e cria threads/buffer chamados "pimage_<partnum>" e "ulog_<partnum>" onde:
    PIMAGE: Pré-Image, são as paginas Before Imag

O buffer especificado pelo FET_BUF_SIZE é compartilhado entre os cursores?

O objetivo aqui é identificar como o FET_BUF_SIZE trabalha quando houver mais de um cursor de insert ou update. Se todos os cursores compartilham o mesmo buffer ou não (insert buffer) .

Este teste é importante para o desenvolvedor em situações que esta variável ( FET_BUF_SIZE ) é parametrizado com intuição de melhorar performance da aplicação que realiza muita inclusão de dados.