AWS

6 jul, 2016

Amazon Redshift: melhoria de até 2x em taxa de transferência e 10X em desempenho de aspiração

Publicidade

O Amazon Redshift é um serviço de armazenamento de dados totalmente gerenciados da AWS, faz análise de dados em escala de petabyte de forma rápida, barata e simples. Desde o seu lançamento, tem sido um dos serviços que mais cresceu da AWS, com muitos milhares de clientes em vários setores. Empresas como a NTT DOCOMO, NASDAQ, FINRA, Johnson & Johnson, Hearst, Amgen e as empresas de grande escala na web, tais como Yelp, Foursquare e Yahoo! fizeram do Amazon Redshift um componente chave da sua infraestrutura de análise.

Neste artigo, olhamos para as melhorias de desempenho que fizemos ao longo dos últimos meses no Amazon Redshift, melhorando o rendimento em mais de 2X e o desempenho de aspiração em 10X.

Armazenamento coluna

Armazenamento de dados em grande escala é, em grande parte, um problema de E/S, e o Amazon Redshift usa uma arquitetura colunar distribuída para minimizar e paralelizar a E/S. Em um armazenamento de coluna, cada coluna de uma tabela é armazenada em seu próprio bloco de dados. Isso reduz o tamanho dos dados, uma vez que pode escolher os algoritmos de compressão otimizados para cada tipo de coluna. Ele também reduz o tempo de E/S durante as consultas, porque apenas as colunas da tabela que estão sendo selecionados precisam ser recuperadas.

No entanto, enquanto uma coluna de armazenamento é muito eficiente na leitura de dados, é menos eficiente do que uma linha de armazenamento no carregamento e alocação de dados, em particular para pequenos conjuntos de dados. No patch de 1.0.1012 (17 de dezembro de 2015), nós lançamos uma melhoria significativa para a nossa E/S e lógica de alocação. Isto ajudou com pequenas cargas de dados e consultas usando tabelas temporárias. Enquanto as melhorias são dependentes da carga de trabalho, estimamos que o cliente típico viu uma melhoria de 35% no rendimento global.

Em relação a este recurso, Naeem Ali, diretor de desenvolvimento de software e ciência de dados da Cablevision, disse: “Após o lançamento da melhoria em E/S e lógica de alocação, vimos uma melhoria de desempenho de 2X em uma ampla variedade de cargas de trabalho. Quanto mais complexo as consultas, maior a melhoria do desempenho”.

Processamento de consultas melhorado

Além de melhorar a E/S e a lógica de alocação para o Amazon Redshift, nós lançamos uma melhoria para a alocação de memória para processamento de consultas no patch 1.0.1056 (17 de maio de 2016), aumentando o rendimento global em até 60% (medido em benchmarks padrão TPC-DS, de 3 TB), dependendo da carga de trabalho e o número de consultas que venham da memória para o disco. A melhoria no rendimento da consulta aumenta com o número de consultas simultâneas, como menos dados são espalhados a partir da memória para o disco, reduzindo E/S necessária.

Tomados em conjunto, estas duas melhorias devem dobrar o desempenho para cargas de trabalho do cliente, onde uma parte da carga de trabalho contém consultas complexas que espalham no disco ou causam a criação de tabelas temporárias.

Melhor aspiração

O Amazon Redshift usa o controle de concorrência de múltiplas versões para reduzir a contenção entre leitores e escritores para uma mesa. Como o PostgreSQL, ele faz isso através da marcação de versões antigas de dados, como versões excluídas e novos como inserida, usando o ID da transação como um marcador. Isso permite que os leitores a criar um snapshot dos dados que estão autorizados a ver e atravessar a tabela sem bloqueio. Um problema com esta abordagem é que o sistema se torna mais lento ao longo do tempo, o que requer um comando de vácuo para recuperar o espaço. Este comando recupera o espaço de linhas excluídas e garante que novos dados que foram adicionados à tabela sejam colocados na ordem classificada a direita.

rs_vacuum_deletes_with_threshold_1

Lançamos uma melhoria significativa do desempenho de vácuo no patch de 1.0.1056. Os clientes que pré-visualizaram o recurso devem ter visto melhorias dramáticas tanto no desempenho de vácuo, quanto no rendimento geral do sistema de vácuo, que requer menos recursos.

“Nós estimamos que a operação de vácuo em uma tabela de 15TB foi cerca de 10x mais rápido com o patch recente, melhorando em última análise, o desempenho geral de consulta”, disse Ari Miller, engenheiro de software principal no TripAdvisor.

Você pode consultar a função de versão para verificar se está em execução no nível de patch desejado.

Já disponível

Ao contrário das soluções de armazenamento de dados no local, não há licença ou taxas de manutenção para essas melhorias ou trabalho exigidas de sua parte para obtê-las. Elas simplesmente mostram-se como parte do processo de correção automática durante a sua janela de manutenção.

***

Artigo escrito por Maor Kleider, Senior Product Manager, Amazon Redshift.

Este artigo faz parte do AWSHUB, rede de profissionais AWS gerenciado pelo iMasters.