ImaginarTI

quinta-feira, 17 de setembro de 2009

SQL Server - E porque eu gosto mais do Oracle (temporary table)

De volta ao duelo SQL Server x Oracle.

Como hoje eu estava comentando com um amigo no trabalho sobre as tabelas temporárias, resolvi aproveitar e escrever sobre o assunto.

Rápido esclarecimento (se há alguém que ainda não sabe!): uma tabela temporária é aquela que cujos dados estão "visíveis" somente à sua sessão e, depois de usados são descartados (não são gravados em disco).

Pela ANSI há dois tipos de tabelas temporárias: as locais e as globais.

As LOCAIS são criadas no momento em que são necessárias (ou seja, "on the fly"), não estão presentes no catálogo do banco, são usadas e, quando não são mais necessárias são destruídas.

As GLOBAIS são criadas previamente ao uso, fazem parte do catálogo e, quando não são mais necessárias, apenas os dados são descartados.

Em linhas gerais, o SQL Server trabalha somente com temporárias locais, enquanto o Oracle trabalha somente com temporárias globais.

E porque eu prefiro as globais?

1) Porque fazem parte do catálogo. Assim eu posso escrever várias stored procedures que usam a mesma temp table, sem preocupações. Inclusive os planos de acesso são previamente compilados. Posso estabelecer foreign keys. Ou seja, garantem a integridade dos dados com menos trabalho.

2) DDL é "caro". Os comandos do tipo DDL (data definition language) consomem muito tempo de CPU (tempo de "preparação", ou seja, interpretação, compilação, etc., não tempo de execução) se comparados com os DML (data modification language). E quando o programa / sistema / software está rodando, você quer que rode o mais rápido possível. Não "perder tempo" criando e destruindo objetos é um recurso valioso.

3) No Oracle eu posso definir em que momento os dados serão desprezados, se no commit ou se no disconnect. Isso é feito de forma declarativa, na criação da tabela, e me dá mais flexibilidade do que o SQL Server, que só oferece uma forma automática de desprezar os dados (no disconnect, quando a tabela é destruída).

O primeiro argumento é definitivamente o mais forte, pois trás à reboque outros argumentos (por existir no catálogo eu posso isso, eu posso aquilo, etc.).

Concordam? Discordam? Dêem suas opiniões!

Até a próxima!
Leo Zacche

Marcadores: , , , , ,

0 Comentários:

Postar um comentário

Assinar Postar comentários [Atom]



<< Página inicial