Introdução
Melhoramos continuamente o desempenho do Rockset e avaliamos diferentes ofertas de {hardware} para encontrar aquela com o melhor custo-benefício para ingestão de streaming e consultas de baixa latência.
Como resultado dos aprimoramentos contínuos de desempenho, lançamos um software program que utiliza processadores escaláveis Intel® Xeon® de 3ª geração, codinome Ice Lake. Com a mudança para o novo {hardware}, as consultas do Rockset são agora 84% mais rápidas do que antes no Star Schema Benchmark (SSB), um benchmark padrão do setor para desempenho de consulta típico de aplicativos de dados.
Embora o software program que utiliza o Intel Ice Lake tenha contribuído para um desempenho mais rápido no SSB, houve vários outros aprimoramentos de desempenho que beneficiam padrões de consulta comuns em aplicativos de dados:
- Expressões de tabela comum materializadas (CTEs): Rockset materializa CTEs para reduzir o tempo geral de execução da consulta.
- Pushdown de predicado baseado em estatísticas: Rockset usa estatísticas de coleta para adaptar sua estratégia de pushdown de predicado, resultando em consultas até 10x mais rápidas.
- Cache de armazenamento de linha: um cache de controle de simultaneidade multiversão (MVCC) foi introduzido para o armazenamento de linha para reduzir a sobrecarga de metaoperações e, assim, latência de consulta quando o conjunto de trabalho cabe na memória.
Neste weblog, descreveremos a configuração do SSB, resultados e melhorias de desempenho.
Configuração e resultados
O SSB é uma referência bem estabelecida com base em TPC-H que captura padrões de consulta comuns para aplicativos de dados.
Para entender o impacto do Intel Ice Lake nas cargas de trabalho de análise em tempo actual, concluímos uma comparação antes e depois usando o SSB. Para este benchmark, a Rockset desnormalizou os dados e escalou o tamanho do conjunto de dados para 100 GB e 600 milhões de linhas de dados, um fator de escala de 100. A Rockset usou sua instância digital (VI) XLarge com 32 vCPU e 256 GiB de memória.
O SSB é um conjunto de 13 consultas analíticas. Todo o conjunto de consultas foi concluído em 733 ms no Rockset usando Intel Ice Lake, em comparação com 1.347 ms antes, correspondendo a uma aceleração geral de 84%. A partir dos resultados do benchmarking, o Rockset é mais rápido usando o Intel Ice Lake em todas as 13 consultas SSB e foi 95% mais rápido na consulta com a maior aceleração.
Figura 1: Gráfico comparando o tempo de execução da instância digital Rockset XLarge em consultas SSB antes e depois de usar o Intel Ice Lake. A configuração é de 32 vCPU e 256 GiB de memória.
Figura 2: Gráfico mostrando o tempo de execução da instância digital Rockset XLarge em consultas SSB antes e depois de usar o Intel Ice Lake.
Nós aplicamos agrupamento ao índice colunar e executou cada consulta 1.000 vezes em um cache de sistema operacional aquecido, relatando o tempo de execução médio. Não houve nenhuma forma de cache dos resultados da consulta usada para a avaliação. Os horários são informados pelo API Server da Rockset.
Melhorias de desempenho do Rockset
Destacamos vários aprimoramentos de desempenho que fornecem melhor suporte para uma variedade de padrões de consulta encontrados em aplicativos de dados.
Expressões de tabela comum materializadas (CTEs)
Rockset materializa CTEs para reduzir o tempo geral de execução de consultas.
CTEs ou subconsultas são um padrão de consulta comum. O mesmo CTE é frequentemente usado diversas vezes na execução de consultas, fazendo com que o CTE seja executado novamente e aumentando o tempo geral de execução. Abaixo está um exemplo de consulta em que um CTE é referenciado duas vezes:
WITH maxcategoryprice AS
(
SELECT class,
Max(worth) max_price
FROM merchandise
GROUP BY class ) trace(materialize_cte = true)
SELECT c1.class,
sum(c1.quantity),
max(c2.max_price)
FROM ussales c1
JOIN maxcategoryprice c2
ON c1.class = c2.class
GROUP BY c1.class
UNION ALL
SELECT c1.class,
sum(c1.quantity),
max(c2.max_price)
FROM eusales c1
JOIN maxcategoryprice c2
ON c1.class = c2.class
GROUP BY c1.class
Com CTEs materializados, o Rockset executa um CTE apenas uma vez e armazena os resultados em cache para reduzir o consumo de recursos e a latência de consulta.
Pushdown de predicado baseado em estatísticas
Rockset usa estatísticas de coleta para adaptar sua estratégia push-down predicada, resultando em consultas até 10x mais rápidas.
Para contexto, um predicado é uma expressão verdadeira ou falsa, normalmente localizada na cláusula WHERE ou HAVING de uma consulta SQL. Um pushdown de predicado usa o predicado para filtrar os dados na consulta, aproximando o processamento da consulta da camada de armazenamento.
Rockset organiza dados em um Índice Convergente™um índice de pesquisa, um índice baseado em colunas e um armazenamento de linhas, para recuperação eficiente. Para consultas de pesquisa altamente seletivas, o Rockset usa seus índices de pesquisa para localizar documentos que correspondam aos predicados e, em seguida, busca os valores correspondentes no armazenamento de linhas.
Os predicados em uma consulta podem conter predicados amplamente seletivos, bem como predicados estreitamente seletivos. Com predicados amplamente seletivos, o Rockset lê mais dados do índice, retardando a execução da consulta. Para evitar esse problema, a Rockset introduziu pushdowns de predicados baseados em estatísticas que determinam se o predicado é amplamente seletivo ou estreitamente seletivo com base nas estatísticas de coleta. Apenas predicados estritamente seletivos são pressionados, resultando em consultas até 10 vezes mais rápidas.
Aqui está uma consulta que contém predicados seletivos amplos e restritos:
SELECT first title, final title, age
FROM college students
WHERE final title= ‘Borthakur’ and age= ‘10’
O sobrenome Borthakur é incomum e é um predicado estritamente seletivo; a idade de 10 anos é comum e é um predicado amplamente seletivo. O pushdown de predicado baseado em estatísticas apenas pressionará WHERE final title = ‘Borthakur’ para acelerar o tempo de execução.
Cache de armazenamento de linha
Nós projetamos um Controle de simultaneidade multiversão (MVCC) cache para o armazenamento de linhas para reduzir a sobrecarga de meta-operações e, assim, latência de consulta quando o conjunto de trabalho cabe na memória.
Considere uma consulta no formato:
SELECT title
FROM college students
WHERE age = 10
Quando a seletividade do predicado é pequena, usamos o índice de pesquisa para recuperar os identificadores de documento relevantes (ou seja: WHERE idade = 10) e, em seguida, o armazenamento de linhas para recuperar os valores do documento e suas colunas (ou seja: nome).
Usos do Rockset RochasDB como seu mecanismo de armazenamento incorporado, armazenando documentos como pares de valores-chave (ou seja: identificador de documento, valor de documento). RocksDB fornece um cache na memória, chamado cache de bloco, que mantém na memória blocos de dados acessados com frequência. Um bloco normalmente contém vários documentos. RocksDB utiliza uma operação de pesquisa de metadados, que consiste em uma técnica de indexação interna e filtros bloom, para encontrar o bloco e a posição dentro do bloco com o valor do documento.
A operação de pesquisa de metadados ocupa uma proporção significativa da memória do conjunto de trabalho, impactando a latência da consulta. Além disso, a operação de pesquisa de metadados é usada na execução de cada consulta particular person, levando a mais consumo de memória em cargas de trabalho de alto QPS.
Projetamos um cache MVCC complementar mantendo um mapeamento direto do identificador do documento para o valor do documento para o armazenamento de linha, ignorando o cache baseado em bloco e a operação de metadados. Isso melhora o desempenho da consulta para cargas de trabalho onde o conjunto de trabalho cabe na memória.
O diferencial de desempenho da nuvem
Investimos continuamente no desempenho do Rockset e em tornar a análise em tempo actual mais acessível e acessível. Com o lançamento do novo software program que aproveita os processadores escaláveis Intel® Xeon® de 3ª geração, o Rockset é agora 84% mais rápido do que antes no Star Schema Benchmark.
O Rockset é nativo da nuvem e as melhorias de desempenho são disponibilizadas automaticamente aos clientes, sem a necessidade de ajuste de infraestrutura ou atualizações manuais. Veja como as melhorias de desempenho impactam sua aplicação de dados juntando-se ao programa de acesso antecipado disponível este mês.