• A ideia do Tour é formar caminho prático para resolver problemas mais comuns com desempenho das BDs maiores: em cada tópico haverá explicação de cada problema e como resolver.
• A restrição à participação nos permite concentrar precisamente nos problemas das 10-15 empresas cujos administradores e programadores estiverem presentes na sala. Temos sessões de discussão entre as palestras.
• O formato de Tour é diferente - isso não é coleção das apresentações, mas uma narrativa conectada na qual começamos descrevendo gargalos e os consideramos do ponto de vista de hardware, sistema operacional, configurações de FB, transações e consultas.
• O público recomendado para o tour são administradores que trabalham com bancos de dados com mais de 100 GB todos os dias, e desenvolvedores que percebem que grandes bancos de dados, por algum motivo, funcionam mais lentamente do que deveriam.
1) Como escolher e otimizar hardware para BDs maiores
a) A base para obter desempenho são as características de hardware/VM. Para BDs maiores o investimento em hardware pode custar milhares de dólares, que certamente afetam custos e resultados.
b) Como planejar compra de hardware para sua necessidade e para carga projetada para o futuro, com máximo custo/benefício?
c) Qual modelo de RAID é melhor? Erros comuns ao escolher RAID para BD Firebird - exemplo para Dell.
d) Como identificar o problema com hardware e corrigir erros típicos em configurações de hardware com gastos mínimos.
e) Gargalos no hardware podem estar em 3 recursos de servidor (disco, memória e CPU), sendo que o gargalo pode ser em 1, 2, ou todos os 3... Dicas simples para ver gargalo real com ferramentas padrões do Windows e Linux.
f) Disco lento, pouca memória, poucos núcleos e/ou frequência de CPU: é possível ter performance sem precisar investir em melhoria de hardware?
2) Detalhes de Sistema operacional que importam.
Se você usa Windows, temos algumas dicas críticas. Se usa Linux, ou pensa em usar Linux para economizar - esta palestra inclui experiência de como fazer Linux confiável, funcionar com 2000+ usuários e BD 1Tb.
a) Windows - parâmetros de energia e hibernação;
b) Como migrar de Windows para Linux sem problemas?
c) Qual versões do Linux são 100% confiáveis?
d) Linux - parâmetros de SO para garantir desempenho para 500+ usuários Firebird
e) Linux - qual sistema de arquivos é melhor (EXT4, XFS, etc) para Firebird
f) Linux - como configurar para prevenir problemas comuns.
3) Configurações que devem ser alteradas no firebird.conf para bancos maiores
a) Por que o firebird.conf padrão não é suficiente;
b) Erros comuns em configurações Firebird que estão piorando desempenho 10-100 vezes - o que fazer.
c) Por que o firebird.conf gerado pela Calculadora online da IBSurgeon não serve para todos os casos;
d) Como criar firebird.conf melhor do que Calculadora de Configurações para hardwares potentes, e porque a calculadora não é suficiente.
e) Como criar firebird.conf ideais para Maquinas Virtuais - diferenças VM e hardware.
f) Firebird 3+ utiliza SuperServer como arquitetura padrão, mas, para BDs maiores e carga diferente, pode ser que SuperClassic ou Classic sejam melhores, com configurações mais específicas.
g) Utilizando duas ou mais instâncias de Firebird em portas diferentes - e por que essa configuração pode dobrar desempenho para servidores TOP.
h) Utilizando docker de maneira efetiva. Exemplo para docker.
i) Na prática: como escolher a arquitetura certa para seu BD/seu perfil de carga? Por exemplo, 1 BD maior e 3 BD menores, ou 100 BD médios, como gerenciar distribuição dos recursos com databases.conf e medidas de SO.
4) Lixo - Um dos maiores problemas que afetam especialmente BDs maiores e BDs com muitos usuários simultâneos: lentidão por causa do lixo.
Este problema está diretamente relacionado a erros no uso das transações em desenvolvimento. Agora é hora de esclarecer esse tema, finalmente.
a) O que são versões, e o que é lixo.
b) Marcadores das transações: entenda pelo exemplo.
c) Níveis de isolamento das transações - snapshot, read committed e record. consistency, e outros níveis (que ninguém usa por razões sérias).
d) Como funciona coleta de lixo - o que são backouts, purges, expunges.
e) Como ver versões e lixo dentro do BD.
f) Entender pelo exemplo efeitos des muitas versões e lixo.
g) Como evitar lixo - dicas para desenvolvedores.
h) Como limpar lixo - dicas para administradores.
5) Tema 3 - SQLs e estrutura
BDs maiores tem peculiaridades que afetam diretamente o desempenho. Nessa palestra, nós vamos considerar os seguintes pontos críticos:
a) Cache
i) Como entender se tem cache suficiente?
ii) O que é cache hit ratio?
iii) Como ver uso do cache Firebird e uso do cache do SO para Windows e para Linux?
b) Estrutura do BD
i) O que é largura e fragmentação das tabelas - como ver, como estimar necessidade das mudanças
ii) Em BD de contabilidade/ERP, tem 1-2 tabelas que ocupa 10-15% do total, e otimização de operações nessas tabelas precisa de conhecimento da estrutura dos dados e índices diferentes de tabelas normais/pequenas. Isso também é conhecido como problema de crescimento, quando o desempenho das operações com tabelas maiores diminui muito.
c) SQLs
i) Como analisar qualquer consulta em 30 segundas para entender se tem problemas maiores com uso de EXPLAINED plan;
ii) MERGE com JOINS, no lugar do DELETE where exists, UPDATE where exists;
iii) HASH JOINS - para JOINs tabelas maiores com tabelas pequenas
iv) LATERAL join no lugar select (select 1 from t1), (select 2 from t1) ... from t2;
v) Quando usar e quando não usar índices para ORDER BY;
vi) Recursos de SQL proibidos de utilizar em bancos maiores (causadores de muita lentidão);
vii) Recursos de SQL e PSQL indispensáveis para obter performance nas consultas;