BATCHSQL

Válido Para

Replicat

Descrição

Usar o parâmetro BATCHSQL para aumentar o desempenho do Replicat. BATCHSQL faz com que o Replicat organize instruções SQL semelhantes em arrays e as aplique em uma taxa acelerada. Em seu modo normal, o Replicat aplica uma instrução SQL por vez.

BATCHSQL é válido para:

Quando Usar BATCHSQL

Antes de usar BATCHSQL, use o Replicat paralelo e veja se isso alivia qualquer atraso do Replicat. Se não o fizer, tente ativar BATCHSQL. Se a ativação do BATCHSQL melhorar o desempenho, mantenha-o ativado de outra forma, desative-o e considere outros exercícios de ajuste alternativos para o Replicat, como garantir que todas as tabelas tenham chaves primárias ou exclusivas, operações de lote grandes limitadas e garantir que o Replicat paralelo tenha muita memória e E/S para desempenho ideal, o que implica que o Replicat não esteja vinculado a E/S ou vinculado a memória.

Quando o Replicat estiver no modo BATCHSQL, alterações de linha menores mostrarão um ganho de desempenho maior do que alterações de linha maiores. Com 100 bytes de dados por alteração de linha, sabe-se que o BATCHSQL melhora o desempenho do Replicat em até 300%, mas os benefícios reais de desempenho variarão, dependendo da combinação de operações. Com cerca de 5.000 bytes de dados por linha alterados, os benefícios do uso do BATCHSQL diminuem.

Restrições de Uso

As instruções SQL tratadas como exceções incluem:

Quando o Replicat encontra exceções no modo batch, ele faz rollback da operação batch e tenta aplicar as exceções das seguintes maneiras, sempre mantendo a integridade da transação:

Quando terminar de processar as exceções, o Replicat retomará o modo BATCHSQL.

Tabela 9 Modos de Replicat

Transações de Origem (Considera a mesma tabela e lista de colunas) Transação de Replicat no Modo Normal Replicat da Transação no Modo BATCHSQL Replicat de Transações no Modo de Origem

Transação 1:

`INSERIR`

`EXCLUIR`

Transaction2:

`INSERIR`

`EXCLUIR`

Transação 3:

`INSERIR`

`EXCLUIR`

`INSERIR`

`EXCLUIR`

`INSERIR`

`EXCLUIR`

`INSERIR`

`EXCLUIR`

`INSERIR` (x3)

`EXCLUIR` (x3)

Transação 1:

`INSERIR`

`EXCLUIR`

Transação 2:

`INSERIR`

`EXCLUIR`

Transação 3:

`INSERIR`

`EXCLUIR`

Como o BATCHSQL Funciona

No modo BATCHSQL, o Replicat organiza instruções SQL semelhantes em batches dentro de uma fila de memória e, em seguida, aplica cada batch em uma operação de banco de dados. Um lote contém instruções SQL que afetam a mesma tabela, tipo de operação (inserir, atualizar ou excluir) e lista de colunas. Por exemplo, cada um dos itens a seguir é um lote:

Controlando o Número de Instruções Armazenadas em Cache

O parâmetro MAXSQLSTATEMENTS controla o número de instruções que são armazenadas no cache. Para obter mais informações, consulte "MAXSQLSTATEMENTS". Instruções antigas são recicladas usando um algoritmo menos usado recentemente. Os lotes são executados com base em um limite especificado (consulte).

Padrão

Desativado (Processo no modo Replicat normal)

Sintaxe

BATCHSQL
[CHECKUNIQUEKEYS | NOCHECKUNIQUEKEYS]
[THREADS (<threadID>[, <threadID>][, ...][, <thread_range> [,<thread_range>][, ...])]
[CHECKUNIQUEKEYS NOCHECKUNIQUEKEYS]

Válido para Replicat.

CHECKUNIQUEKEYS força uma descarga quando uma tabela com uma chave exclusiva é encontrada que ignora o processamento BATCHSQL. Isso garante que a ordem original das operações seja mantida se a chave exclusiva for alterada.

O valor padrão é NOCHECKUNIQUEKEYS e não força um flush quando uma tabela com chaves exclusivas é encontrada e permite que o processamento de BATCHSQL continue.

THREADS (<threadID>[, <threadID>][, ...][, <thread_range>[, <thread_range>][, ...])

Válido para BATCHESPERQUEUE, BATCHTRANSOPS e BYTESPERQUEUE. Aplica essas opções ao thread ou threads especificados de um processo de Replicat coordenado.

<threadID>[, <threadID>][, ...]

Especifica um thread ID ou uma lista de threads delimitada por vírgulas no formato threadID, threadID, threadID.

[, <thread_range>[, <thread_range>][, ...]

Especifica uma faixa de threads na forma de threadIDlow-threadIDhigh ou uma lista de faixas delimitada por vírgulas no formato de threadIDlow-threadIDhigh, threadIDlow-threadIDhigh.

Uma combinação desses formatos é permitida, como threadID, threadID, threadIDlow-threadIDhigh.