Arquivo da categoria: Performance

Microsoft SQL Server: Detectando Índices Fragmentados – Melhorando a Performance

Assim como o disco, fisicamente, torna-se fragmentado; também acontece com toda organização lógica que venha fazer uso desta mídia. Tablespaces, tabelas, e, índices. Todos se fragmentam. Faz parte do negócio. É regra do jogo, se quiser brincar, aceite-as. A fragmentação (não importa o objeto de banco de dados em questão) acontecerá mais, ou menos, dependendo do tipo de operação do banco de dados.

Bancos de dados transacionais (OLTP) tendem a se fragmentar muito muito mais do bancos de dados de consulta massiva (OLAP/DW). Pelo menos, se sustentados da maneira correta.

Quanto mais escrita, maiores as probabilidades de fragmentação. A modelagem podem afetar, também, a fragmentação.

Claro que, tudo que está fragmentado está bagunçado. E, tudo que está bagunçado não vai bem. No caso de banco de dados, isto significa uma redução de performance.

O efeito colateral mais esperado da desfragmentação é o aumento de performance, ou, se preferir: recuperação da performance perdida. Neste artigo, trataremos, puramente, da fragmentação de índices.

Mas, para os loucos por um código pronto, vamos ao que interessa: Fragmentação de Índices no Microsoft SQL Server. Lidar com fragmentação, envolve duas etapas básicas: identificação e ação.

Continue lendo Microsoft SQL Server: Detectando Índices Fragmentados – Melhorando a Performance

MySQL 5.7 – TableSpace Genéricas v2.0 – A nova Onda

O conceito de tablespace não tem nada de novo. Só não é mais velho que eu. Vários outros RDBMS (bancos de dados) o implementam faz algum tempo. No MySQL foi implementado pelos primórdios do innoDB.

Em linhas gerais o que é uma tablespace?
Tem algumas palavras em inglês que não fazem o menor sentido traduzidas, ou, em traduzi-las. Concorda comigo? Para mim, tablespace é uma dessas palavras. Vamos lá: “espaço de tabelas”. Tablespace é uma área, física e/ou lógica, na qual se aglomeram uma ou mais tabelas. É como se fosse uma área reservada para uma, ou, um grupo de tabelas. Seja com o objetivo de organização (tabelas com mesmo fim, aplicação, etc), volumetria, performance, segurança, etc.

O MySQL e sua épica jornada com tablespaces
No princípio de tudo, e até a chegada da versão 5.1, todas as tabelas com storage engine innoDB eram, compulsoriamente, criadas dentro de uma tablespace única, também chamada de compartilhada (shared tablespace). Fisicamente, consistia de um arquivo com síndrome de Buzz (pois, crescia ao infinito e além), de nome ibdata, que, ficava logo abaixo da raiz do DATADIR (diretório de dados, definido pela variável datadir, e, onde reside o schema do MySQL). Esta implementação me rendeu muitas horas de sono, pois, era uma verdadeira armadilha. Por ser um único arquivo contendo várias tabelas, apresentava contenções de S/O, era de difícil sustentação e manutenção.

Continue lendo MySQL 5.7 – TableSpace Genéricas v2.0 – A nova Onda

Processos Automatizados (batches)

men_at_workDê ao homem certo a ferramenta certa e este operará verdadeiros milagres. Agora, dê a ferramenta errada ao cara errado, e o desastre é certo! Venho insistindo nisto já faz algum tempo, e, creio que não custa batermos nesta tecla uma vez mais.

As bases de dados estão crescendo rápido. E não, não estou falando de big data. As bases OLTP estão crescendo, e, com isso a quantidade de informação a ser escrutinada em busca de conhecimento fica maior a cada dia.

Não dá para vencer esta guerra com um único e simples bando de SELECT’s. Não, não dá!

À medida que nossas bases crescem, crescem também sua complexidade no quesito manutenção e otimização. Fica mais dificil, e lento, extrair resultados estatísticos e gerenciais das mesmas.

Quando falta ferramenta tem de sobrar Inteligência e Criatividade.

Continue lendo Processos Automatizados (batches)