A Arquitetura Teradata consiste em três componentes.
Parsing Engine - O Parsing Engine recebe a consulta do usuário, analisa-a e prepara o plano de execução.
BYNET - BYNET recebe o plano de execução do mecanismo de análise e despacha para o AMP apropriado.
AMP- AMP é responsável por armazenar e recuperar linhas. Ele armazena os dados no disco virtual associado a ele. Além disso, o AMP é responsável pelo gerenciamento de bloqueios, gerenciamento de espaço, classificação e agregação.
FastLoad | MultiLoad |
---|---|
A tabela de destino deve estar vazia | A tabela de destino não precisa estar vazia |
Apenas uma tabela pode ser carregada usando um único script | Pode carregar / atualizar até 5 tabelas |
Suporta apenas a instrução CREATE / INSERT | Suporta até 20 instruções DML em um único script |
Não suporta tabelas com RI, SI e Triggers | Suporta tabelas com NUSI |
FastLoad fornece capacidade de reinicialização por meio de pontos de verificação. Quando o script é reiniciado a partir do último checkpoint, é possível que as mesmas linhas sejam enviadas novamente para os AMPs. Essa é a razão pela qual FastLoad não oferece suporte a duplicatas.
A tabela SET não permite registros duplicados, enquanto MULTISET permite registros duplicados.
Para cada linha inserida, o sistema verifica se há algum registro com o mesmo hash de linha. Se a tabela tiver UPI definido, ela rejeitará o registro como duplicado. Caso contrário, ele irá comparar todo o registro para duplicar. Isso afetará gravemente o desempenho do sistema.
Você pode definir o índice primário exclusivo ou o índice secundário exclusivo para evitar a verificação de linha duplicada.
As tabelas são criadas usando a instrução CREATE TABLE. As tabelas podem ser criadas usando
Instrução CREATE TABLE com definição de coluna.
CRIAR TABELA a partir de uma tabela existente.
Instrução CREATE TABLE com uma instrução SELECT.
Os registros duplicados podem ser identificados usando a instrução DISTINCT ou a instrução GROUP BY.
SELECT DISTINCT column 1, column 2…
FROM tablename;
OR
SELECT column 1, column 2,…
FROM tablename
GROUP BY column 1, column 2….;
As chaves primárias não são obrigatórias no Teradata, enquanto o Índice Primário é obrigatório.
A distribuição de dados é baseada no valor do índice primário.
As chaves primárias não aceitam NULLs, enquanto o Índice Primário aceita valores NULL.
As chaves primárias são exclusivas, enquanto o índice primário pode ser exclusivo (UPI) ou não exclusivo (NUPI).
As chaves primárias não mudam, enquanto os índices primários mudam.
Os dados podem ser acessados de 3 maneiras diferentes -
- Através do índice primário
- Através do índice secundário
- Verificação completa da tabela
Ele pode ser identificado usando a consulta SELECT HASHAMP () + 1;
A consulta a seguir pode ser usada para esse propósito.
SELECT HASHMAP(HASHBUCKET(HASHROW(primaryindexvalue))), COUNT(*)
FROM tablename GROUP BY 1;
O Teradata oferece suporte a dois modos de transação.
- Teradata
- ANSI
O modo Teradata é definido usando SET SESSION TRANSACTION BTET; O modo ANSI é definido usando SET SESSION TRANSACTION ANSI;
As transações podem ser executadas usando instruções BT e ET.
Índices de associação não podem ser acessados diretamente pelo usuário. Apenas o otimizador pode acessá-los.
Os registros duplicados serão rejeitados ao carregar as tabelas de destino e serão inseridos na tabela UV.
FALLBACK é um mecanismo de proteção usado pelo Teradata para lidar com falhas de AMP. Para cada linha de dados, outra cópia da linha é armazenada em um AMP diferente dentro de um cluster. Se algum AMP falhar, as linhas correspondentes serão acessadas usando FALLBACK AMP.
FALLBACK pode ser mencionado durante a criação da tabela usando a instrução CREATE TABLE ou após a tabela ser criada usando a instrução ALTER TABLE.
O erro de espaço de spool ocorrerá se os resultados intermediários da consulta excederem o limite de espaço de spool de AMP definido para o usuário que enviou a consulta.
O comando SLEEP especifica o tempo de espera antes que o Teradata tente estabelecer a conexão.
O comando TENACITY especifica o tempo total de espera para o Teradata estabelecer uma nova conexão.
Você pode simplesmente manter a instrução BEGIN LOADING e END LOADING e enviar o script FASTLOAD. Outra opção é eliminar a tabela e criá-la novamente.
O cache no Teradata funciona com a fonte e permanece na mesma ordem, ou seja, não muda com frequência. O Cache geralmente é compartilhado entre os aplicativos. É uma vantagem adicional de usar o Teradata.
RAID é um mecanismo de proteção para lidar com falhas de disco. Significa Redundant Array of Independent Disks. RAID 1 é comumente usado no Teradata.
O índice secundário fornece um caminho alternativo para acessar os dados. Eles são usados para evitar a varredura completa da tabela. No entanto, os índices secundários requerem estrutura física adicional para manter subtabelas e também requerem E / S adicional, uma vez que a subtabela precisa ser atualizada para cada linha.
Existem quatro bloqueios diferentes no Teradata - Exclusivo, Gravação, Leitura e Acesso.
Os bloqueios podem ser aplicados em três níveis diferentes - Banco de dados, Tabela e Linha.
Usando Multi Value Compression (MVC), você pode compactar até 255 valores, incluindo NULLs.
FastLoad carrega os dados em blocos de 64K. Existem 2 fases no FastLoad.
Na Fase 1, ele traz os dados em blocos de 64K e os envia para os AMPs de destino. Cada AMP redistribuirá as linhas em hash para seus AMPs de destino.
Na Fase 2, as linhas são classificadas por ordem de hash de linha e gravadas na tabela de destino.
A importação MultiLoad tem cinco fases.
Phase 1 - Fase preliminar - Executa atividades básicas de configuração.
Phase 2 - Fase de transação DML - verifica a sintaxe das instruções DML e as traz para o sistema Teradata.
Phase 3 - Fase de aquisição - traz os dados de entrada para as tabelas de trabalho e bloqueia a tabela.
Phase 4 - Fase de aplicação - aplica todas as operações DML.
Phase 5 - Fase de limpeza - libera o bloqueio da tabela.
MULTILOAD DELETE é mais rápido, pois apaga os registros em blocos. DELETE FROM excluirá linha por linha.
O procedimento armazenado retorna um ou mais valores, enquanto as macros podem retornar uma ou mais linhas. Além do SQL, o procedimento armazenado pode conter instruções SPL.
Tanto o FastLoad quanto o MultiLoad carregam os dados em blocos de 64K, enquanto o BTEQ processa uma linha por vez.
FastExport exporta os dados em blocos de 64 K enquanto o BTEQ exporta uma linha por vez.
O Teradata Parallel Transporter (TPT) é o utilitário para carregar / exportar dados. Combina todas as funcionalidades de FastLoad, MultiLoad, BTEQ, TPUMP e FastExport.
Diários permanentes rastreiam os dados antes ou depois de aplicar as alterações. Isso ajuda a reverter ou avançar a tabela para um estado específico. Os diários permanentes podem ser ativados no nível da tabela ou no nível do banco de dados.
No Teradata, cada AMP é associado a um disco virtual. Apenas o AMP que possui o disco virtual pode acessar os dados dentro desse disco virtual. Isso é chamado de Arquitetura de Nada Compartilhado.
Se a consulta usar colunas particionadas, isso resultará na eliminação da partição, o que melhorará muito o desempenho.
A partição elimina outras partições e acessa apenas as partições que contêm os dados.
Você pode facilmente descartar as partições antigas e criar novas partições.
Sim. O índice secundário requer subtabelas que requerem espaço permanente.
Sim. Sempre que um índice primário particionado é adicionado, cada linha ocupa 2 ou 8 bytes adicionais para o número da partição.
Você pode usar a função RANK na coluna especificada em ordem decrescente com a condição Qualify = 2.
Você pode verificar o plano EXPLAIN da consulta para identificar as etapas que consomem mais espaço no spool e tentar otimizar a consulta. Os filtros podem ser aplicados para reduzir o número de registros sendo processados ou você pode dividir a consulta grande em várias consultas menores.
Quando o comando EXPLAIN é usado na consulta, ele especifica a confiança do otimizador para recuperar os registros.
Existem três níveis de confiança no Teradata: alta confiança, média confiança e baixa confiança.
Tanto o NUSI quanto o Full Table Scan (FTS) acessarão todos os AMPs, mas o FTS acessará todos os blocos dentro do AMP, enquanto o NUSI acessará os blocos somente se a subtabela contiver as linhas qualificadas.
No modo BTEQ, o comando SKIP pode ser usado para pular os registros.
BYTEINT. Ocupa apenas um byte e pode armazenar valores de até +127.
- Por meio do índice primário exclusivo - 1 AMP
- Por meio de índice primário não exclusivo - 1 AMP
- Por meio do índice secundário exclusivo - 2 AMPs
- Por meio do índice secundário não exclusivo - todas as AMPs
Clique é um mecanismo de proteção para lidar com falhas do Node. É um grupo de nós. Quando um nó dentro de um clique falha, os vprocs (Parsing Engine e AMP) migram para outros nós e continuam a realizar operações de leitura / gravação em seus discos virtuais.
O Teradata fornece diferentes níveis de mecanismo de proteção.
Transient Journal - Para lidar com a falha de transação.
Fallback - Para lidar com falhas de AMP.
Cliques - Para lidar com a falha do Node.
RAID - Para lidar com a falha do disco.
Hot standby Node - Para lidar com a falha do Node sem afetar o desempenho e reiniciar.
ACTIVITYCOUNT fornece o número de linhas afetadas pela consulta SQL anterior no BTEQ. Se a instrução ACTIVITYCOUNT seguir uma instrução de inserção, ela retornará o número de linhas inseridas. Se a instrução ACTIVITYCOUNT seguir a instrução select, ela retornará o número de linhas selecionadas.