{"id":28,"date":"2017-10-25T12:31:00","date_gmt":"2017-10-25T14:31:00","guid":{"rendered":"http:\/\/helbertt.16mb.com\/site\/index.php\/2017\/10\/25\/linkedin-desenvolve-a-ferramenta-mysql-query-analyzer\/"},"modified":"2017-10-25T12:31:00","modified_gmt":"2017-10-25T14:31:00","slug":"linkedin-desenvolve-a-ferramenta-mysql-query-analyzer","status":"publish","type":"post","link":"https:\/\/helbertt.xyz\/site\/linkedin-desenvolve-a-ferramenta-mysql-query-analyzer\/","title":{"rendered":"LinkedIn desenvolve a ferramenta MySQL Query Analyzer"},"content":{"rendered":"<p>Para otimizar o desempenho de suas inst\u00e2ncias MySQL, o LinkedIn criou a ferramenta <a href=\"https:\/\/engineering.linkedin.com\/blog\/2017\/09\/query-analyzer--a-tool-for-analyzing-mysql-queries-without-overh\" target=\"_blank\">MySQL Query Analyzer<\/a> com o intuito de analisar e ajustar queries custosas. A ferramenta \u00e9 executada na camada de rede, armazenando tudo em um servidor centralizado e fornecendo uma interface de usu\u00e1rio (UI) para an\u00e1lise de m\u00e9tricas.<\/p>\n<p>O LinkedIn administra uma arquitetura MySQL multi-inquilinos (do ingl\u00eas multi-tenancy). Isto ocorre principalmente pelo fato de haver mais de 500 aplicativos que dependem dessa arquitetura, de modo que um \u00fanico inquilino (tenancy) causaria custos de recursos extremamente elevados. Como consequ\u00eancia desta abordagem, as queries de um aplicativo podem afetar o desempenho de outro aplicativo. Por esse motivo, \u00e9 importante que os aplicativos sejam capazes de compreend\u00ea tais consultas e otimiz\u00e1-las o m\u00e1ximo poss\u00edvel.<\/p>\n<p>O analisador de queries \u00e9 dividido em tr\u00eas componentes:<\/p>\n<ol>\n<li>Agente: \u00e9 executado nos n\u00f3s do MySQL e coleta m\u00e9tricas sobre a execu\u00e7\u00e3o e desempenho de queries.<\/li>\n<li>Servidor centralizado: local onde todos os dados sobre consultas s\u00e3o armazenados para a gera\u00e7\u00e3o de relat\u00f3rios.<\/li>\n<li>Interface de Usu\u00e1rio (UI): fica no topo do servidor e fornece uma interface amig\u00e1vel para analisar os dados.<\/li>\n<\/ol>\n<p>Karthik Apigatla, engenheiro s\u00eanior de banco de dados no LinkedIn, destaca os benef\u00edcios da ferramenta da seguinte maneira:<\/p>\n<blockquote><p>&#8230; permite que nossos engenheiros de banco de dados identifiquem queries problem\u00e1ticas de uma s\u00f3 vez, para comparar as informa\u00e7\u00f5es de uma query semana a semana e para solucionar problemas de desacelera\u00e7\u00e3o da base de dados de forma r\u00e1pida e eficiente.<\/p><\/blockquote>\n<p>Originalmente, solu\u00e7\u00f5es como o MySQL Performance Schema e o Slow Query Log foram consideradas, mas elas vieram com muitas penalidades de desempenho quando foram introduzidas. Ao contr\u00e1rio dessas ferramentas, o Query Analyzer \u00e9 executado na camada de rede, minimizando qualquer tipo de impacto de desempenho nas inst\u00e2ncias.<\/p>\n<p>O agente captura pacotes brutos de queries e reconstr\u00f3i a query usando os protocolos MySQL e, em seguida, calcula os tempos de resposta com base em uma diferen\u00e7a entre o tempo em que os pacotes entram pela primeira vez na porta e quando s\u00e3o produzidos pela resposta do banco de dados.<\/p>\n<p>A UI fornece uma vis\u00e3o tabular de queries distintas para hosts, permitindo que o usu\u00e1rio filtre por per\u00edodos de tempo. As consultas individuais tamb\u00e9m podem ser selecionadas, fornecendo gr\u00e1ficos e outras m\u00e9tricas \u00fateis, como carga e tempo m\u00e9dio.<\/p>\n<p>A ferramenta tamb\u00e9m fornece uma m\u00e9trica de carga de query que \u00e9 calculada como &#8220;tempo de execu\u00e7\u00e3o * n\u00famero de execu\u00e7\u00f5es&#8221;. Ao obter essa m\u00e9trica e convert\u00ea-la em uma propor\u00e7\u00e3o, ela pode ser comparada com outras queries para ver quais obtiveram a maior porcentagem de carga. Por exemplo, mesmo se uma consulta demorar alguns milissegundos, a m\u00e9trica ainda seria correta se a query estivesse sendo executada muitas vezes, levando assim a maior parte da carga.<\/p>\n<p>O LinkedIn n\u00e3o definiu uma linha de tempo espec\u00edfica, mas pretende abrir a ferramenta em um futuro pr\u00f3ximo.<\/p>\n<p>Fonte:&nbsp;<a href=\"https:\/\/www.infoq.com\/br\/news\/2017\/10\/mysql-query-analyzer\" target=\"_blank\">www.infoq.com<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Para otimizar o desempenho de suas inst\u00e2ncias MySQL, o LinkedIn criou a ferramenta MySQL Query Analyzer com o intuito de<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout"},"categories":[24,32,34,35,28,33,30,31,29],"tags":[],"_links":{"self":[{"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/posts\/28"}],"collection":[{"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/comments?post=28"}],"version-history":[{"count":0,"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/posts\/28\/revisions"}],"wp:attachment":[{"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/media?parent=28"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/categories?post=28"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/tags?post=28"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}