Limitações MySQL Parte 4: Um thread por conexão

MySQL trata-se de um processo único com variados segmentos, nem todos os bancos de dados são arquitetados desta forma, alguns possuem múltiplos processos que se comunicam através de memória compartilhada ou outros meios.

Por Programação Pular para comentários
Limitações MySQL Parte 4: Um thread por conexão

Esta é a quarta e ultima postagem, sobre a tematica das limitações do MySQL em alguns casos de uso ( você pode visualizar as postagens anteriores nos links 1, 2 e 3

MySQL trata-se de um processo único com variados segmentos, nem todos os bancos de dados são arquitetados desta forma, alguns possuem múltiplos processos que se comunicam através de memória compartilhada ou outros meios.

É muito barato e viável criar uma conexão com MySQL, pois ele exige a criação de uma thread, isso geralmente é tão rápido e simples que não se faz necessário a utilização de pools como em outros bancos de dados do mercado, um outro ponto interessante é o threading que sempre dará o seu apoio, no ambiente Linux o threading atualmente encontra-se em um bom estado diferente de tempos atrás.

Muitos ambientes de desenvolvimento e linguagem de programação utilizam pool de conexões. São sempre construídos da mesma maneira como no caso do JAVA, em outros casos usam conexão persistente por padrão, de modo que a conexão não é realmente fechado quando ele está fechado, funcionando como um tipo especifico de pool de conexão, exceto quando a solicitação de conexão encontra-se no mesmo processo .

Pools de conexão e conexões persistentes combinadas com um grande número de servidores de aplicação pode levar a uma situação em que o servidor e o banco de dados tem um número muito grande de conexões abertas,os quais não estão fazendo nada.

Não é incomum para ver um servidor com 1000-5000 conexões abertas, e talvez 1-3 estão na verdade executando consultas. Essas conexões são originárias de dezenas a centenas de instâncias de um servidor de aplicação. Quando você tiver um aplicativo muito sharded ou horizontalmente escalado, não é só fácil de entrar neste problema, é muito difícil ou impossível evitá-lo.

E com 5000 conexões abertas, você tem 5000 tópicos no servidor. Isso aumenta a sobrecarga de agendamento de segmento e, potencialmente, o uso de memória também. Eu sinto que estou esquecendo algumas razões importam, por favor preencha o que está faltando nos comentários!

Pode haver mais de uma solução para este problema, mas o que realmente importa é implementar um conjunto de threads, que foi originalmente codificado para o MySQL 6.0, que está disponível agora em MariaDB .

Infelizmente não é uma solução completa, pois pode causar indesejáveis lock-out de espera, a aplicação específica tem um gargalo de escalabilidade em servidores multicore . Mark Callaghan fez uma investigação muito mais afundo sobre o pool de threads.


Existem varias coisas em MySQL, que não fazem bem, pois muitas a ferramenta é utilizada de forma errada, NotABug, podemos ter como exemplo a sort-merge ou paralelismo intra-consulta.
Seria muito bom ter essas coisas se você estivesse executando um armazém de dados em MySQL ( note que a maioria dos bancos de dados que possuem esses planos de consulta habitualmente utilizam junções de laço aninhado).

Não apenas um data warehouse MySQL DBMS , um general-purpose ou um servidor de dados tipo OLTP que funcionam em um hardware acessível e ótimo para uso na Web, é tão bom que na verdade pode ser utilizado para uma tonelada de outras coisas, como por exemplo armazenamento de dados. Mas não é uma Netezza ou Paraccel se fosse não seria um banco de dados OLTP.

A replicação do MySQL é uma das características fundamentais e a single threaded que conta com o log binário, que são duas limitações, e possuem subqueries que fazem parte de um núcleo fundamental de SQL, por isso listamos algumas limitações como grandes.

E porque o MySQL é um banco de dados multi-threaded para o uso da Web que tende a ser usado em ambientes sharded com toneladas de servidores de aplicação, o que cria uma situação com milhares de conexões ao banco de dados, e porque não lidar com isso muito bem, listamos seu projeto de um thread por conexão como uma limitação séria.

Compartilhe com seus amigos:
Gregory Laborde
Gregory Laborde Estudante da Licenciatura em Computação Pela Universidade Federal Rural de Pernambuco.Técnico em Tecnologia da Informação. Entusiasta do Software Livre e Palestrante.
FACEBOOK // TWITTER: @gregoryylaborde
Quer conversar com o(a) Gregory, comente:
Carregar comentários
Últimas notícias de Programação
  • Google usa Mulher-Maravilha para ajudar meninas a programar

    Google usa Mulher-Maravilha para ajudar meninas a programar

    Meninas ganham um incentivo extra na hora de aprender a programar, a Mulher-Maravilha.

  • Criando um cadastro de usuário em Java

    Criando um cadastro de usuário em Java

    O objetivo deste artigo é desenvolver uma aplicação em JSE (Java Standard Edition) de inserção de dados utilizando alguns padrões de projeto.

  • Quer aprender PHP? Saiba mais

    Quer aprender PHP? Saiba mais

    Chegou o tão aguardado curso online de PHP do Oficina da Net. Você não pode perder. PHP é uma das linguagens mais usadas no mundo. Os conteúdos que vou mostrar no curso, são exatamente o que você precisa saber para iniciar sua carreira como programador.

  • Formulário de contato em php

    Formulário de contato em php

    Guia do PHP: Aprenda a fazer um formulário em PHP que envia via SMTP autenticado o e-mail para um destinatário.

  • Como fazer um GIF?

    Como fazer um GIF?

    Aprenda a criar um GIF animado de vídeos. Descubra como criar os GIFs, imagens animadas que você vê em na internet.

  • O que priorizar na hora de escolher o hosting para seu site?

    O que priorizar na hora de escolher o hosting para seu site?

    Com o crescimento das ofertas na web, saiba o que você deve levar em consideração na hora de escolher a melhor empresa de hosting para seu empreendimento

  • O que preciso fazer para criar um aplicativo?

    O que preciso fazer para criar um aplicativo?

    Temos visto que desenvolver aplicativos que visam o mercado mobile pode ser mais que uma alternativa rentável, pode colocá-lo no topo, deixá-lo rico. Mas nem tudo são flores, e o aspirante a desenvolvedor de app precisa seguir algumas regras.

  • WEBINAR 3.9

    WEBINAR 3.9

    Venha para o Maker e descubra como tornar o seu negócio mais competitivo.