Translate

Mostrar mensagens com a etiqueta PerformanceTuning. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta PerformanceTuning. Mostrar todas as mensagens

terça-feira, 10 de março de 2020

🔥 VSAM NA VIDA REAL: O segredo NÃO está no DEFINE… está nos parâmetros que quase ninguém entende

 

Bellaocsa Mainframe como calcular os parametros de um dataset VSAM

🔥 VSAM NA VIDA REAL: O segredo NÃO está no DEFINE… está nos parâmetros que quase ninguém entende

A maioria dos problemas de performance de VSAM começa aqui:

DEFINE CLUSTER(...)

💣 O problema?

Muita gente:

  • copia JCL antigo
  • usa RECsz “qualquer”
  • coloca CI 4096 em tudo
  • ignora FREESPACE
  • nunca calcula crescimento

E depois pergunta:

“por que meu KSDS virou um moedor de CPU?”


🧠 O PRINCÍPIO MAIS IMPORTANTE DO VSAM

👉 VSAM é engenharia de I/O

Você NÃO está criando:

  • “um arquivo”

Você está definindo:

  • layout físico
  • estratégia de acesso
  • comportamento de crescimento
  • padrão de lock
  • eficiência de CPU
  • uso de DASD
  • quantidade de splits

🎯 PRINCIPAIS PARÂMETROS


🔹 RECSZ(average maximum)

RECSZ(avg max)

Define:

  • tamanho médio
  • tamanho máximo do registro

🧠 Como o VSAM usa isso

O VSAM calcula:

  • quantidade de registros por CI
  • espaço interno
  • buffer efficiency
  • split probability

💥 ERRO clássico

RECSZ(80 32760)

para registros de:

  • 120 bytes

👉 Resultado:

  • desperdício
  • CI subutilizado
  • mais I/O

🎯 Melhor prática

Fórmula Bellacosa 😄

AVG = média real
MAX = pior caso + margem

🔹 FREESPACE(CI CA)

FREESPACE(10 5)

Reserva espaço:

  • dentro do CI
  • dentro do CA

🧠 Objetivo

Evitar:

  • CI splits
  • CA splits

💣 REGRA DE OURO

🔥 Muito insert aleatório?

Use:

FREESPACE(20 10)

🔥 Dataset quase estático?

Use:

FREESPACE(0 0)

💥 O que acontece se errar

ProblemaResultado
pouco freespacemuitos splits
freespace excessivodesperdício DASD
CA pequenofragmentação

🔹 CISZ(number)

CISZ(4096)

Define tamanho do:

  • Control Interval

🧠 O parâmetro MAIS importante do VSAM

Ele impacta:

  • CPU
  • I/O
  • cache
  • buffering
  • throughput

🎯 REGRA prática

Tipo de workloadCI ideal
OLTP/CICS4096
Batch sequencial8192 ou 16384
Muito insert4096
LDS/DB28192+

💣 ERRO clássico

CI enorme em CICS:

CISZ(32768)

👉 Resultado:

  • lock maior
  • mais wait
  • pior latência

🔹 KEYS(length offset)

KEYS(20 0)

Somente:

  • KSDS
  • AIX

🧠 Explicação

ItemSignificado
lengthtamanho da chave
offsetposição da chave

Exemplo COBOL

01 REG.
05 ID PIC X(10).
05 NOME PIC X(40).

👉 então:

KEYS(10 0)

💥 Dica Bellacosa

Nunca use:

  • chave enorme
  • chave variável
  • chave não seletiva

👉 índice explode
👉 CPU sobe


🔹 READPW / UPDATEPW

Proteção antiga VSAM.

Hoje:

  • RACF domina tudo

👉 raramente usado.


🔹 FOR(days) / TO(date)

Retention period.


Exemplo

FOR(30)

Mantém dataset:

  • protegido 30 dias

🔹 REUSE / NOREUSE


REUSE

Permite reutilização do cluster:

REUSE

Muito usado em:

  • arquivos temporários
  • batch diário

NOREUSE

Requer DELETE/DEFINE.

Mais seguro.


🚀 ALGORITMO REAL DE DEFINIÇÃO VSAM

Agora vem a parte de sysprog senior 👊


🟢 KSDS (OLTP/CICS)

Características

  • insert aleatório
  • update
  • alta concorrência

Fórmula recomendada

CI = 4096
FREESPACE = 20 10

Algoritmo

1. calcular tamanho médio
2. calcular inserts/dia
3. calcular crescimento mensal
4. estimar splits
5. reservar freespace
6. ajustar buffers

🔵 ESDS

Características

  • append-only
  • sequencial

Melhor configuração

FREESPACE(0 0)
CISZ(8192)

Por quê?

👉 Não existe insert interno.


🟡 RRDS

Características

  • slots fixos
  • acesso relativo

Melhor configuração

RECSZ fixo
CI alinhado com quantidade de slots

Fórmula

CI = slot_size × quantidade ideal por CI

🟠 VRRDS

Mais complexo.


Melhor prática

FREESPACE(15 10)

Porque:

  • registros crescem

🟣 LDS

Sem registros.


Melhor configuração

CISZ(8192 ou 16384)

Porque DB2 gosta disso?

👉 melhor throughput sequencial


⚫ VSAMDB / NoSQL VSAM

(CouchDB-like engines, key-value engines, híbridos)


Melhor prática

CI grande
buffer agressivo
freespace moderado

🧠 O VERDADEIRO SEGREDO

A melhor configuração depende de:

FatorImpacto
padrão de insertsplits
concorrêncialock
tamanho do registroCI
crescimentoCA
batch vs onlinebuffers
DASD/cachethroughput

💥 EXEMPLO REAL (CICS bancário)

DEFINE CLUSTER -
(NAME(BANK.CLIENT.KSDS)) -
RECSZ(300 500) -
KEYS(20 0) -
CISZ(4096) -
FREESPACE(20 10) -
SHAREOPTIONS(3 3)

👉 otimizado para:

  • alta concorrência
  • update intenso
  • baixo split

🚨 SINAIS DE VSAM MAL DEFINIDO

✔ muitos CI splits
✔ aumento de EXCP
✔ CPU crescendo
✔ buffer hit ratio ruim
✔ CA fragmentation
✔ batch lento
✔ CICS wait


🎯 REGRA FINAL DO BELLACOSA MAINFRAME 😄

“VSAM rápido não nasce no COBOL.
Ele nasce no DEFINE CLUSTER.”