Translate

Mostrar mensagens com a etiqueta SELECT SQL. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta SELECT SQL. Mostrar todas as mensagens

sábado, 16 de junho de 2018

☕🔥 SQL NO DB2 MAINFRAME — O “SELECT *” QUE PODE DERRUBAR UM BANCO INTEIRO

 

Belalcosa Mainframe e o sql matador de db2

☕🔥 SQL NO DB2 MAINFRAME — O “SELECT *” QUE PODE DERRUBAR UM BANCO INTEIRO

Todo iniciante em SQL aprende algo assim:

SELECT * FROM CLIENTES;

E pensa:

“Pronto. Sei SQL.”

Mas no universo IBM Mainframe + DB2…

isso é apenas o começo da guerra.

Porque no mundo corporativo REAL:

🔥 SQL não é apenas consulta.
SQL é sobrevivência operacional.

Cada comando pode impactar:

  • CPU

  • I/O

  • Buffer Pool

  • Locks

  • Access Path

  • Throughput

  • Batch Window

  • SLA bancário

E é aí que o DB2 z/OS entra em outro nível de engenharia.


☕ O DB2 NÃO FOI FEITO PARA “PROJETINHOS”

O DB2 Mainframe nasceu para:

  • bancos globais

  • bolsas financeiras

  • cartões

  • telecom

  • seguradoras

  • governo

  • processamento massivo

Enquanto bancos menores pensam em simplicidade…

o DB2 pensa em:

🔥 bilhões de linhas simultaneamente.


☕🔥 1. SELECT ALL RECORDS — O COMANDO MAIS PERIGOSO PARA INICIANTES

A famosa query:

SELECT *
FROM EMPLOYEES;

parece inocente.

No DB2 z/OS?

Pode virar tragédia.


☕ O PROBLEMA DO SELECT *

Ele traz:

  • todas as colunas

  • dados desnecessários

  • mais I/O

  • mais GETPAGE

  • mais CPU

  • mais tráfego


☕ Em produção isso custa dinheiro REAL

O profissional Mainframe aprende cedo:

“Nunca peça ao DB2 mais do que você realmente precisa.”


☕ Forma correta:

SELECT
    NAME,
    SALARY
FROM EMPLOYEES;

☕ Por quê?

Porque no Mainframe:

🔥 performance é cultura.


☕ Bellacosa Mainframe Analysis™

SELECT * em produção é como:

COPIAR TODOS OS DATASETS DA EMPRESA
PARA LER APENAS UMA LINHA

☕🔥 2. SELECT SPECIFIC COLUMNS — O PENSAMENTO MAINFRAME

Agora começamos a entrar na mentalidade correta.


☕ Query:

SELECT
    NAME,
    SALARY
FROM EMPLOYEES;

☕ O que o DB2 gosta?

  • menos páginas lidas

  • menos movimentação

  • menos memória

  • menos sorting

  • menos rede


☕ Isso melhora:

✅ cache
✅ buffer pool
✅ response time
✅ throughput


☕ Em APIs REST isso é ainda mais importante

Porque hoje:

APP MOBILE
   ↓
API REST
   ↓
DB2 z/OS

Cada byte importa.


☕🔥 3. WHERE CLAUSE — O VERDADEIRO CAMPO DE BATALHA

Aqui nasce a diferença entre:

🧠 “quem escreve SQL”
e
🔥 “quem entende DB2”.


☕ Exemplo:

SELECT *
FROM EMPLOYEES
WHERE SALARY > 50000;

☕ Parece simples.

Mas o DB2 analisa:

  • índice

  • cardinalidade

  • filter factor

  • clustering

  • access path

  • stage 1/stage 2


☕🔥 STAGE 1 vs STAGE 2

Conceito clássico do DB2 z/OS.


☕ Stage 1

Mais rápido.

Executado próximo ao Data Manager.


☕ Stage 2

Mais CPU.

Mais custo.

Mais sofrimento operacional.


☕ Exemplo RUIM:

WHERE YEAR(DATAADM) = 2025

Pode inutilizar índice.


☕ Melhor:

WHERE DATAADM >= '2025-01-01'
AND DATAADM <  '2026-01-01'

Agora o índice pode respirar.


☕🔥 4. ORDER BY — O SORT INVISÍVEL QUE DEVORA CPU

Agora chegamos numa armadilha clássica.


☕ Query:

SELECT *
FROM EMPLOYEES
ORDER BY SALARY DESC;

☕ O que isso significa internamente?

Possivelmente:

🔥 SORT.

E SORT custa caro.


☕ O DB2 tenta evitar isso usando:

  • índices

  • clustering

  • ordering natural


☕ Exemplo inteligente

Índice:

SALARY DESC

O DB2 pode evitar sort completamente.


☕ DBA Mainframe AMA isso

Porque reduz:

  • tempo batch

  • consumo CPU

  • workfiles


☕🔥 5. GROUP BY — O NASCIMENTO DA INTELIGÊNCIA CORPORATIVA

Agora o SQL começa a virar BI.


☕ Exemplo:

SELECT
    DEPARTMENT,
    COUNT(*)
FROM EMPLOYEES
GROUP BY DEPARTMENT;

☕ Isso parece simples…

Mas alimenta:

  • relatórios financeiros

  • dashboards

  • analytics

  • auditoria

  • compliance


☕ O perigo oculto

GROUP BY pode gerar:

🔥 SORT massivo.


☕ E no DB2 isso significa:

  • WORKFILES

  • TEMP DATABASE

  • I/O pesado

  • CPU alta


☕🔥 O OTIMIZADOR DO DB2 — A ENTIDADE “MISTERIOSA”

Pouca gente entende o poder disso.

O DB2 Optimizer decide:

  • qual índice usar

  • qual join executar

  • qual caminho custa menos


☕ E ele faz isso baseado em:

  • RUNSTATS

  • cardinalidade

  • histogramas

  • distribuição de dados


☕ Sem RUNSTATS atualizado?

🔥 O access path pode virar desastre.


☕ Por isso DBA Mainframe é tão valorizado

Porque tuning em DB2 é quase arte.


☕🔥 LOCKS — O TERROR SILENCIOSO

Aqui começa a engenharia pesada.


☕ Uma query ruim pode causar:

  • lock escalation

  • deadlock

  • timeout

  • contention


☕ Exemplo clássico

SELECT *
FROM CONTAS
FOR UPDATE

Sem critério?

🔥 caos operacional.


☕ No Mainframe milhares acessam simultaneamente

Então concorrência é assunto sagrado.


☕🔥 COMMIT — O DETALHE QUE SALVA PRODUÇÃO

Em batch COBOL + DB2:

EXEC SQL
   COMMIT
END-EXEC

não é detalhe.

É sobrevivência.


☕ Sem COMMIT correto:

  • locks persistem

  • logs crescem

  • rollback explode

  • performance cai


☕🔥 O DB2 NÃO PENSA COMO BANCO “COMUM”

Ele pensa como:

um sistema operacional de dados corporativos.


☕ Porque ele precisa garantir:

✅ integridade
✅ recuperação
✅ disponibilidade
✅ paralelismo
✅ auditoria
✅ performance

24x7.


☕🔥 O QUE O MAINFRAME ENSINA SOBRE SQL

SQL no notebook do estudante:

SELECT *
FROM TESTE;

☕ SQL no Mainframe:

QUAL O IMPACTO DISSO NO BUFFER POOL?
VAI GERAR SORT?
USA ÍNDICE?
QUAL O ACCESS PATH?
VAI CAUSAR LOCK?
TEM RUNSTATS?

☕ É outro universo.


☕🔥 O VERDADEIRO PODER DO DB2

O DB2 não ficou vivo por décadas por acaso.

Ele sobreviveu porque consegue:

🔥 processar absurdos de dados sem parar.


☕ PIX.

☕ cartões.
☕ bolsas financeiras.
☕ reservas aéreas.
☕ telecom.
☕ bancos globais.

Tudo isso continua dependendo de SQL rodando em z/OS.


☕🔥 CONCLUSÃO — SQL NO MAINFRAME NÃO É “LINGUAGEM”

É engenharia de missão crítica.

E talvez essa seja a maior diferença entre:

  • aprender SQL
    e

  • entender DB2 Mainframe.

Porque no fim:

🔥 uma query mal escrita pode custar milhões.

segunda-feira, 12 de março de 2018

☕🔥 SQL NO DB2 MAINFRAME — A LINGUAGEM QUE MOVE O DINHEIRO DO PLANETA (E QUE MUITA GENTE USA SEM ENTENDER)

 

Bellacosa Mainframe e a linguagem sql do db2

☕🔥 SQL NO DB2 MAINFRAME — A LINGUAGEM QUE MOVE O DINHEIRO DO PLANETA (E QUE MUITA GENTE USA SEM ENTENDER)

Hoje existe uma geração inteira que aprendeu SQL em:

  • MySQL

  • PostgreSQL

  • SQL Server

  • SQLite

  • cursos rápidos de Data Analytics

E aí nasce uma ilusão perigosa:

“SQL é só SELECT.”

Só que quando alguém entra no universo do DB2 Mainframe…

descobre rapidamente que SQL corporativo REAL é outra dimensão.

Porque no IBM Mainframe, SQL não é apenas consulta.

🔥 SQL no DB2 é infraestrutura crítica mundial.

É ele que movimenta:

  • bancos

  • cartões

  • seguradoras

  • bolsas de valores

  • governos

  • companhias aéreas

  • telecomunicações

E o mais impressionante:

👉 Grande parte do planeta depende diariamente de comandos SQL rodando em DB2 no z/OS.


☕ O QUE TORNA O DB2 MAINFRAME DIFERENTE?

Muita gente pensa:

“SQL é tudo igual.”

Não.

O DB2 z/OS foi construído para:

  • altíssimo volume

  • concorrência extrema

  • integridade transacional

  • recuperação sofisticada

  • segurança corporativa

  • bilhões de linhas

  • milhares de usuários simultâneos

Enquanto bancos menores focam simplicidade…

o DB2 Mainframe foi projetado para sobreviver ao caos corporativo.


☕🔥 SECTION 1 — SELECT: O COMANDO MAIS SUBESTIMADO DA HISTÓRIA

Todo mundo aprende:

SELECT * FROM CLIENTES;

E acha que domina SQL.

No Mainframe isso pode virar um desastre.


☕ O “SELECT *” É QUASE UMA HERESIA NO DB2

Em ambientes críticos:

SELECT *

pode causar:

  • I/O desnecessário

  • uso excessivo de buffer pool

  • degradação de CPU

  • aumento de GETPAGE

  • piora no access path


☕ O PROFISSIONAL MAINFRAME PENSA DIFERENTE

Ele faz:

SELECT
    NOME,
    SALDO,
    LIMITE
FROM CLIENTES
WHERE ID_CLIENTE = :WS-ID

Somente os campos necessários.


☕ Por quê?

Porque no z/OS:

🔥 performance é religião.


☕🔥 O OTIMIZADOR DO DB2 É UMA ENTIDADE QUASE “VIVA”

Pouca gente entende isso.

O DB2 Optimizer:

  • escolhe access path

  • decide índice

  • calcula custo

  • analisa estatísticas

  • estima cardinalidade

Tudo automaticamente.


☕ Exemplo clássico

Mesma query.

Dois ambientes.

Performances totalmente diferentes.

Por quê?

Porque:

  • RUNSTATS mudou

  • índices mudaram

  • volume mudou

  • clustering mudou

O Optimizer escolheu outro caminho.


☕🔥 SECTION 2 — WHERE: O LUGAR ONDE NASCEM AS GUERRAS DE PERFORMANCE

Aqui mora o verdadeiro poder do SQL.


☕ Exemplo simples

SELECT *
FROM CONTAS
WHERE CPF = '12345678900'

☕ Parece inocente…

Mas no DB2 Mainframe isso envolve:

  • matching columns

  • indexability

  • stage 1/stage 2 predicates

  • filter factor

  • synchronous I/O

  • list prefetch


☕🔥 STAGE 1 vs STAGE 2 — O TERROR DOS INICIANTES

No DB2:

Stage 1

Mais eficiente.

Executado mais próximo do Data Manager.


Stage 2

Mais custoso.

Mais CPU.

Mais processamento.


☕ Exemplo ruim

WHERE YEAR(DATA) = 2025

Pode inutilizar índice.


☕ Melhor abordagem

WHERE DATA >= '2025-01-01'
AND DATA <  '2026-01-01'

Agora o índice pode trabalhar.

🔥 Isso é mentalidade mainframe.


☕🔥 SECTION 3 — ORDER BY: O “SORT INVISÍVEL” QUE DESTRÓI BATCHES

Muita gente não percebe:

ORDER BY

quase sempre significa:

🔥 SORT.

E SORT em grandes volumes pode custar caro.


☕ O que o DB2 tenta fazer?

Evitar sort.


☕ Como?

Usando índice na ordem correta.

Exemplo:

Índice:

CPF ASC

Query:

ORDER BY CPF

O DB2 pode evitar sort completamente.


☕🔥 SECTION 4 — FUNÇÕES DE AGREGAÇÃO: O PODER ANALÍTICO CORPORATIVO

Aqui o DB2 vira máquina de inteligência.


☕ COUNT

SELECT COUNT(*)
FROM TRANSACOES

☕ Em Mainframe isso pode significar:

  • milhões

  • bilhões

  • trilhões

de registros.


☕ O detalhe assustador

Em grandes ambientes:

COUNT(*)

mal otimizado pode consumir recursos absurdos.


☕🔥 SUM e AVG NO MUNDO FINANCEIRO

SELECT SUM(VALOR)
FROM PIX

Isso movimenta literalmente bilhões de reais.


☕ Precisão no Mainframe é crítica

Erro de arredondamento?

🔥 Catástrofe financeira.


☕🔥 SECTION 5 — GROUP BY: O CÉREBRO DOS RELATÓRIOS CORPORATIVOS

O GROUP BY é onde SQL começa a parecer inteligência artificial corporativa.


☕ Exemplo

SELECT
    AGENCIA,
    SUM(SALDO)
FROM CONTAS
GROUP BY AGENCIA

☕ Isso permite:

  • analytics

  • BI

  • auditoria

  • relatórios financeiros

  • antifraude


☕ O perigo oculto

GROUP BY pode gerar:

  • grandes SORTs

  • WORKFILES gigantes

  • uso excessivo de TEMP DB


☕🔥 SECTION 6 — HAVING: O FILTRO “PÓS-INTELIGÊNCIA”

HAVING filtra após agregação.


☕ Exemplo

SELECT
    AGENCIA,
    COUNT(*)
FROM CONTAS
GROUP BY AGENCIA
HAVING COUNT(*) > 1000

☕ O detalhe técnico

HAVING normalmente custa mais que WHERE.

Porque:

  • primeiro agrega

  • depois filtra


☕🔥 SECTION 7 — JOINS: O CAMPO DE BATALHA DO DB2

Aqui mora a verdadeira engenharia SQL.


☕ Nested Loop Join

Bom para pequenos volumes.


☕ Merge Scan Join

Excelente para grandes conjuntos ordenados.


☕ Hybrid Join

Mistura estratégias.


☕ O DBA Mainframe vive disso

Analisando:

  • PLAN_TABLE

  • EXPLAIN

  • access path

  • RID list

  • prefetch


☕ Exemplo clássico

SELECT *
FROM CLIENTE C
JOIN CONTA X
ON C.ID = X.ID_CLIENTE

☕ Parece simples…

Mas por trás o DB2 pode fazer:

  • tablespace scan

  • index scan

  • sort merge

  • parallelism


☕🔥 SECTION 8 — LIMIT/FETCH FIRST: O SALVADOR DA CPU

No mundo distribuído usam:

LIMIT 10

No DB2 z/OS:

FETCH FIRST 10 ROWS ONLY

☕ Isso reduz:

  • CPU

  • I/O

  • tempo de resposta


☕ Muito usado em:

  • APIs REST

  • dashboards

  • consultas online

  • mobile


☕🔥 SECTION 9 — ALIAS: A LEITURA HUMANA DO CAOS

Grandes queries corporativas ficam monstruosas.

Alias salva vidas.


☕ Exemplo

SELECT
    C.NOME,
    X.SALDO
FROM CLIENTE C,
     CONTA X

☕ Sem alias?

Viraria insanidade visual.


☕🔥 SECTION 10 — CASE: A INTELIGÊNCIA EMBUTIDA NO SQL

CASE transforma SQL em mecanismo decisório.


☕ Exemplo

SELECT
CASE
   WHEN SALDO < 0
      THEN 'DEVEDOR'
   ELSE 'POSITIVO'
END
FROM CONTAS

☕ O Mainframe usa isso em:

  • scoring

  • antifraude

  • classificação

  • regras de negócio

  • compliance


☕🔥 O QUE OS CURSOS DE SQL NORMALMENTE NÃO ENSINAM

No DB2 Mainframe existem conceitos avançados gigantescos:

  • locking

  • isolation level

  • package

  • bind

  • commit

  • rollback

  • UR/CS/RS/RR

  • deadlock

  • claim/drain

  • RID pool

  • EDM pool

  • buffer pool

Aí o jogo muda completamente.


☕🔥 O DB2 NÃO É “SÓ UM BANCO”

Ele é:

um sistema operacional de dados corporativos.


☕🔥 A GRANDE VERDADE

O SQL que roda no notebook do estudante…

e o SQL que roda no z/OS…

podem parecer iguais.

Mas estão separados por:

  • escala

  • criticidade

  • engenharia

  • confiabilidade

  • performance

  • complexidade


☕🔥 CONCLUSÃO — SQL NO MAINFRAME NÃO É MODA. É SOBREVIVÊNCIA.

No mundo moderno:

  • apps falham

  • containers reiniciam

  • microsserviços quebram

Mas o DB2 continua lá.

Processando:

  • pagamentos

  • cartões

  • PIX

  • reservas aéreas

  • bolsas financeiras

24x7.

E talvez essa seja a maior lição do Mainframe:

🔥 “SQL não é apenas consulta.
É a linguagem silenciosa que mantém a economia mundial funcionando.”