Passo 5: testar o desempenho do sistema na nova tabela
Depois de recriar o conjunto de dados de teste com os modos de armazenamento selecionados, níveis de compactação, modos de distribuição e chaves de distribuição, você testará novamente o desempenho do sistema.
- Registre o uso do espaço de armazenamento de cada tabela.
Determine quanto espaço em disco é usado para cada tabela usando a função pg_size_pretty e registre os resultados em tabelas básicas.
1
SELECT T_NAME, PG_SIZE_PRETTY(PG_RELATION_SIZE(t_name)) FROM (VALUES('store_sales'),('date_dim'),('store'),('item'),('time_dim'),('promotion'),('customer_demographics'),('customer_address'),('household_demographics'),('customer'),('income_band')) AS names1(t_name);
t_name | pg_size_pretty ------------------------+---------------- store_sales | 14 GB date_dim | 27 MB store | 4352 kB item | 259 MB time_dim | 14 MB promotion | 3200 kB customer_demographics | 11 MB customer_address | 27 MB household_demographics | 1280 kB customer | 111 MB income_band | 896 kB (11 rows)
- Teste o desempenho da consulta e registre os dados de desempenho na tabela de referência.
Execute as consultas a seguir novamente e registre o tempo gasto em cada consulta.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
\timing on SELECT * FROM (SELECT COUNT(*) FROM store_sales ,household_demographics ,time_dim, store WHERE ss_sold_time_sk = time_dim.t_time_sk AND ss_hdemo_sk = household_demographics.hd_demo_sk AND ss_store_sk = s_store_sk AND time_dim.t_hour = 8 AND time_dim.t_minute >= 30 AND household_demographics.hd_dep_count = 5 AND store.s_store_name = 'ese' ORDER BY COUNT(*) ) LIMIT 100; SELECT * FROM (SELECT i_brand_id brand_id, i_brand brand, i_manufact_id, i_manufact, SUM(ss_ext_sales_price) ext_price FROM date_dim, store_sales, item,customer,customer_address,store WHERE d_date_sk = ss_sold_date_sk AND ss_item_sk = i_item_sk AND i_manager_id=8 AND d_moy=11 AND d_year=1999 AND ss_customer_sk = c_customer_sk AND c_current_addr_sk = ca_address_sk AND substr(ca_zip,1,5) <> substr(s_zip,1,5) AND ss_store_sk = s_store_sk GROUP BY i_brand ,i_brand_id ,i_manufact_id ,i_manufact ORDER BY ext_price desc ,i_brand ,i_brand_id ,i_manufact_id ,i_manufact ) LIMIT 100; SELECT * FROM (SELECT s_store_name, s_store_id, SUM(CASE WHEN (d_day_name='Sunday') THEN ss_sales_price ELSE null END) sun_sales, SUM(CASE WHEN (d_day_name='Monday') THEN ss_sales_price ELSE null END) mon_sales, SUM(CASE WHEN (d_day_name='Tuesday') THEN ss_sales_price ELSE null END) tue_sales, SUM(CASE WHEN (d_day_name='Wednesday') THEN ss_sales_price ELSE null END) wed_sales, SUM(CASE WHEN (d_day_name='Thursday') THEN ss_sales_price ELSE null END) thu_sales, SUM(CASE WHEN (d_day_name='Friday') THEN ss_sales_price ELSE null END) fri_sales, SUM(CASE WHEN (d_day_name='Saturday') THEN ss_sales_price ELSE null END) sat_sales FROM date_dim, store_sales, store WHERE d_date_sk = ss_sold_date_sk AND s_store_sk = ss_store_sk AND s_gmt_offset = -5 AND d_year = 2000 GROUP BY s_store_name, s_store_id ORDER BY s_store_name, s_store_id,sun_sales,mon_sales,tue_sales,wed_sales,thu_sales,fri_sales,sat_sales ) LIMIT 100;
A tabela de referência a seguir mostra os resultados de validação do cluster usado neste tutorial. Seus resultados podem variar com base em vários fatores, mas os resultados relativos devem ser semelhantes. As durações de execução de consultas com a mesma estrutura de tabela podem ser diferentes, dependendo do cache do sistema operacional durante a execução. É aconselhável realizar várias rodadas de testes e selecionar um grupo com valores médios.
Referência
Antes de
Depois
Tempo de carregamento (11 tabelas)
341584 ms
257241 ms
Espaço de armazenamento ocupado
Store_Sales
42 GB
14 GB
Date_Dim
11 MB
27 MB
Armazenamento
232 KB
4352 KB
Item
110 MB
259 MB
Time_Dim
11 MB
14 MB
Promotion
256 KB
3200 KB
Customer_Demographics
171 MB
11 MB
Customer_Address
170 MB
27 MB
Household_Demographics
504 KB
1280 KB
Cliente
441 MB
111 MB
Income_Band
88 KB
896 KB
Espaço total de armazenamento
42 GB
15 GB
Tempo de execução da consulta
Consulta 1
14552,05 ms
1783,353 ms
Consulta 2
27952,36 ms
14247,803 ms
Consulta 3
17721,15 ms
11441,659 ms
Tempo total de execução
60225,56 ms
27472,815 ms
- Se você tiver expectativas mais altas para o desempenho após o design da tabela, poderá executar o comando EXPLAIN PERFORMANCE para exibir o plano de execução para ajuste.
Para obter mais detalhes sobre planos de execução e ajuste de consulta, consulte Plano de execução SQL e Visão geral do ajuste de desempenho de consultas.