| Bellacosa Mainframe em mão na massa tuning de VSAM |
🔧 Laboratório Prático – Tuning de VSAM no z/OS
🎯 Objetivo do Lab
- Melhorar desempenho de datasets VSAM
- Reduzir splits de CI/CA
- Otimizar acesso por chave
- Ajustar buffers e freespace
- Diagnosticar gargalos reais
Tudo isso no contexto de IBM z/OS, usando Virtual Storage Access Method e utilitários como IDCAMS.
🧱 Lab 1 — Diagnóstico inicial (onde dói?)
Antes de mexer, descubra o estado real do dataset.
Passo 1 — Obter estatísticas reais
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
LISTCAT ENTRIES(MEU.VSAM.KSDS) ALL
/*
O que observar
- CI/CA splits
- Freespace atual
- Tamanho médio de registros
- Número de extents
- Buffering atual
⚠️ Se você não mede, você só está chutando.
⚡ Lab 2 — Reduzindo CI Splits (onde mora a dor)
CI Split = fragmentação = I/O extra = usuário bravo.
Situação comum
Dataset crescendo e inserções frequentes no meio do arquivo.
Ação — Ajustar FREESPACE
//SYSIN DD *
ALTER MEU.VSAM.KSDS
FREESPACE(20 10)
/*
- 20% livre em cada CI
- 10% livre em cada CA
Isso dá “espaço de manobra” para inserções sem quebrar tudo.
🚀 Lab 3 — Buffers: o turbo escondido
Buffers mal configurados matam performance silenciosamente.
Verifique no JCL da aplicação:
//DD1 DD DSN=MEU.VSAM.KSDS,DISP=SHR,AMP='BUFND=20,BUFNI=10'
- BUFND → dados
- BUFNI → índice
📈 Regra prática:
- Aplicações intensivas em leitura → aumente BUFND
- Acesso por chave → aumente BUFNI
🧪 Lab 4 — Reorganização (o reset saudável)
Com o tempo, fragmentação vira regra.
Backup e Reorg
//REPRO EXEC PGM=IDCAMS
//SYSIN DD *
REPRO INFILE(OLD) OUTFILE(NEW)
/*
✔ Remove fragmentação
✔ Reequilibra índices
✔ Melhora I/O
🧠 Lab 5 — Escolha do tipo certo de dataset
Nem tudo é KSDS.
- Muitas inserções sequenciais? → considere ESDS
- Acesso por posição fixa? → RRDS
- Acesso por chave intenso? → KSDS
Escolher errado custa caro.
🧩 Lab 6 — Medindo impacto (antes x depois)
Sempre compare:
- tempo de resposta
- I/O count
- splits por hora
- consumo de CPU
Sem isso, não é tuning — é fé.
💣 Erros clássicos (até de sênior)
- Aumentar buffers sem medir impacto
- Ignorar freespace
- Reorg sem revisar parâmetros
- Copiar parâmetros de outro sistema “porque lá funciona”
Cada ambiente é único.
🏁 Resultado esperado
Se fizer certo, você verá:
- menos splits
- menos I/O
- menor tempo de resposta
- usuários mais felizes (e menos incidentes às 2h da manhã 😄)