Mostrando entradas 1 para 10 de 18
Próximo 8 Entradas mais antigos »
Displaying posts with tag: Performance (reset)
O MyISAM está morto?

Desde a versão 5.5 do MySQL o storage engine InnoDB vem configurado “de fábrica” como padrão. O InnoDB é um storage engine transacional, 100% ACID, estável e robusto, e, inteiramente, grátis. Reconhecidamente, fez progressos notáveis desde o MySQL 4.x. Com destaques para as melhorias implementadas nas versões: 5.1, 5.5, 5.6, e, recentemente na 5.7. O … Continue lendo O MyISAM está morto? →

MySQL de Alta Performance: Otimizando o seu SGBD.

Quem nunca utilizou ou desenvolveu um sistema ou website e percebeu que os acessos, consultas e registros estavam lentos? Quando este problema é detectado a primeira coisa que fazemos é ver se a nossa conexão com a internet está lenta ou se o banco ou o código estão otimizados. E o SGBD? Já pararam para pensar que em muitos casos de lentidão o culpado é o servidor onde o seu banco de dados está? Pode ser por configuração errada, rede com problemas ou não foi projetada de uma forma inteligente ou até mesmo o SO do servidor!

Hoje eu vou passar algumas dicas e experiências que adquiri como DBA e com isso ajudá-los a ter um MySQL Server rápido e que não seja o “gargalo” ou o vilão da história.

 

Sistema Operacional

Antes de começarmos, vale lembrar que o ideal é sempre estar com a versão estável mais atual do MySQL Server e do seu SO. Não esqueça, os updates ajudam na segurança e …

[Leia mais]
MySQL de Alta Performance: Otimizando o seu SGBD.

Quem nunca utilizou ou desenvolveu um sistema ou website e percebeu que os acessos, consultas e registros estavam lentos? Quando este problema é detectado a primeira coisa que fazemos é ver se a nossa conexão com a internet está lenta ou se o banco ou o código estão otimizados. E o SGBD? Já pararam para pensar que em muitos casos de lentidão o culpado é o servidor onde o seu banco de dados está? Pode ser por configuração errada, rede com problemas ou não foi projetada de uma forma inteligente ou até mesmo o SO do servidor!

Hoje eu vou passar algumas dicas e experiências que adquiri como DBA e com isso ajudá-los a ter um MySQL Server rápido e que não seja o “gargalo” ou o vilão da história.

 

Sistema Operacional

Antes de começarmos, vale lembrar que o ideal é sempre estar com a versão estável mais atual do MySQL Server e do seu SO. Não esqueça, os updates ajudam na segurança e …

[Leia mais]
DatabaseCast: Particionamento de dados

Olá, pessoal! Neste episódio do DatabaseCast, Mauro Pichiliani (Twitter | Blog), Wagner Crivelini (@wcrivelini) e o convidado Ricardo Rezende (@ricarezende) separam os dados como se eles estivesse dentro de um pacote de M&Ms. Neste episódio você vai aprender quais são os tipos de particionamento no Oracle, SQL Server, MySQL, PostgreSQL, MongoDB e Cassandra, discutir se o Hadoop é ou não um banco de dados, mandar um alô para o pessoal do Suriname e da Suécia e aprender a chamar certas soluções de gambiware.

[Leia mais]
Particionamento no MySQL

A ideia aqui é introduzir os conceitos de particionamento, exibir os recursos disponíveis no MySQL e passar um exemplo prático de como uma tabela pode ser particionada e quais os benefícios dessa prática. Futuramente abordarei o “subparticionamento”, veja os tópicos que serão abordados:

  • Conceitos de particionamento
  • Tipos de particionamento
  • Elegendo as clausulas de particionamento
  • Exemplo prático de particionamento
  • Manutenção
  • Limitações no MySQL (atualmente)

Conceitos:

O particionamento é um recurso clássico de banco de dados que resolve muitos problemas de escalabilidade e performance além de facilitar o gerenciamento e armazenamento de grandes volumes de dados. Com esse recurso é possível segregar o armazenamento dos dados em segmentos segundo uma clausula, ou seja, por determinado dado presente no registro o mesmo será …

[Leia mais]
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 […] ↓ Leia o restante deste post...

MySQL & NoSQL – Memcached Plugin

Muita gente já deve ter ouvido falar nos bancos de dados NoSQL e uma das ferramentas NoSQL muito utilizada é o memcached, no qual adicionamos uma camada de cache entre a aplicação e o banco de dados. Desde a versão 5.6 do MySQL, foi disponibilizado um plugin de integração entre o MySQL e o Memcached. Neste artigo publicado no iMasters eu mostro como instalar e configurar esta integração.

[Leia mais]
Fragmentação dos Objetos no InnoDB

Se o seu banco de dados passa por constantes operações de “DELETE” ou “UPDATE” ele provavelmente ficará fragmentado, fazendo com que os índices já não sejam tão eficientes como antes e os datafiles ocupem mais espaço do que o necessário em disco. Seria, algo similar a fragmentação de filesystem.

Através do catalogo do MySQL é possível identificar quanto espaço livre existe no datafile e assim identificar uma margem ou porcentagem de fragmentação por objeto. Até a versão 5.1.21 essa margem era descrita através da coluna “TABLE_COMMENT” da tabela “INFORMATION_SCHEMA.TABLES”, sendo assim bastava executar a seguinte consulta:

SELECT table_schema,
table_name,
table_comment
FROM information_schema.tables
WHERE engine LIKE 'InnoDB'
AND table_comment RLIKE 'InnoDB free: ([0-9]{6,}).*';

Da versão 5.1.28 em diante isso foi corrigido, sendo possível avaliar a …

[Leia mais]
Rotina de Rebuild – MySQL

Com o constante uso do banco de dados, operações como “delete” e “update”  acabam causando a fragmentação dos objetos nos datafiles, e isso muitas vezes prejudica a performance do banco de dados e aloca espaço desnecessariamente. Com isso torna-se necessário implementar uma rotina de manutenção capaz de otimizar o ambiente, evitando o uso de espaço desnecessário e desfragmentando os índices da tabela para uma melhor performance.

Geralmente isso é feito manualmente ou através de shell scripts, mas preferi criar um “PROCEDURE” e implementar uma rotina via “SCHEDULE” próprio MySQL, segue:

#
use mysql;
#
# TABELA DE LOG PARA MONITORAR O PROCESSO
DROP TABLE IF EXISTS mysql.mantained_table_history;
CREATE TABLE mysql.mantained_table_history(
mantained_table_schema  VARCHAR(255),
mantained_table_name VARCHAR(255),
mantained_type  VARCHAR(255),
mantained_status VARCHAR(10),
mantained_date …
[Leia mais]
Rotina Analyze – Automátizada via Schedule MySQL

Essa rotina foi desenvolvida com o intuito de atualizar as estatisticas de todos os databases da instância automaticamente, de forma dinâmica.

#
use mysql;
#
# TABELA DE LOG PARA MONITORAR O PROCESSO
DROP TABLE IF EXISTS mysql.mantained_table_history;
CREATE TABLE mysql.mantained_table_history(
TABLE_SCHEMA  VARCHAR(255),
TABLE_NAME VARCHAR(255),
MANTEINED_TYPE  VARCHAR(255),
STATUS VARCHAR(10),
DATE datetime,
STARTIME datetime,
ENDTIME datetime
)engine=MyISAM;
#
#
#ROTINA DE ANALYZE COM LOG + MONITORAMENTO
#
use mysql;
#
# PROCEDURE QUE REALIZA O ANALYZE
#
DELIMITER $$
DROP PROCEDURE IF EXISTS RotinaAnalyze $$
CREATE PROCEDURE RotinaAnalyze()
BEGIN
#
DECLARE done INT DEFAULT FALSE;
DECLARE query_analyze varchar(255);
DECLARE ANALYZE_TABLE_SCHEMA varchar(255);
DECLARE ANALYZE_TABLE_NAME varchar(255);
DECLARE date_analyze datetime;
DECLARE startime_analyze datetime;
DECLARE endtime_analyze datetime;
DECLARE analyze_tables CURSOR FOR select TABLE_SCHEMA, …
[Leia mais]
Mostrando entradas 1 para 10 de 18
Próximo 8 Entradas mais antigos »