Re: pg_restore taking 4 hours! - Mailing list pgsql-performance

From Rodrigo Carvalhaes
Subject Re: pg_restore taking 4 hours!
Date
Msg-id 41B364E8.3060406@carvalhaes.net
Whole thread Raw
In response to Re: pg_restore taking 4 hours!  (Shridhar Daithankar <ghodechhap@ghodechhap.net>)
Responses Re: pg_restore taking 4 hours!
List pgsql-performance
Hi !

Thanks for the lots of tips that I received on this matter.

Some points:

1. I bumped the sort_mem and vaccum_mem to 202800 (200mb each) and the
performance was quite the same , the total difference was 10 minutes
2. I made the restore without the index and the total time was 3 hours
so, I  don't think that the botle neck is the index creation
3. I changed my max_fsm_pages to 30000 and  max_fsm_relations = 2000 as
was recommended on the vacuum analyze but I had no significante change
on the performance.
4. I made the backup with pg_dump -Fc and -Ft . The performance of -Ft
was better (around 10%), maybe because the data it's already uncompressed.

I am thinking that the key point on this delay is the converstions from
char fields because this database is full of char fields, see below one
structure of one table

There is something more that I can try to improve this performance?

Cheers (and thanks for all the oppinions)

Rodrigo Carvalhaes

dadosadv=# \d sb1010
                                                            Table
"public.sb1010"
   Column   |       Type
|                                                  Modifiers


------------+------------------+---------------------------------------------------------------------------------------------
----------------
 b1_filial  | character(2)     | not null default '  '::bpchar
 b1_cod     | character(15)    | not null default '               '::bpchar
 b1_desc    | character(30)    | not null default
'                              '::bpchar
 b1_tipo    | character(2)     | not null default '  '::bpchar
 b1_codite  | character(27)    | not null default
'                           '::bpchar
 b1_um      | character(2)     | not null default '  '::bpchar
 b1_locpad  | character(2)     | not null default '  '::bpchar
 b1_grupo   | character(4)     | not null default '    '::bpchar
 b1_picm    | double precision | not null default 0.0
 b1_ipi     | double precision | not null default 0.0
 b1_posipi  | character(10)    | not null default '          '::bpchar
 b1_especie | double precision | not null default 0.0
 b1_ex_ncm  | character(3)     | not null default '   '::bpchar
 b1_ex_nbm  | character(3)     | not null default '   '::bpchar
 b1_aliqiss | double precision | not null default 0.0
 b1_codiss  | character(8)     | not null default '        '::bpchar
 b1_te      | character(3)     | not null default '   '::bpchar
 b1_ts      | character(3)     | not null default '   '::bpchar
 b1_picmret | double precision | not null default 0.0
 b1_picment | double precision | not null default 0.0
 b1_impzfrc | character(1)     | not null default ' '::bpchar
 b1_bitmap  | character(8)     | not null default '        '::bpchar
 b1_segum   | character(2)     | not null default '  '::bpchar
 b1_conv    | double precision | not null default 0.0
 b1_tipconv | character(1)     | not null default ' '::bpchar
 b1_alter   | character(15)    | not null default '               '::bpchar
 b1_qe      | double precision | not null default 0.0
 b1_prv1    | double precision | not null default 0.0
 b1_emin    | double precision | not null default 0.0
 b1_custd   | double precision | not null default 0.0
 b1_mcustd  | character(1)     | not null default ' '::bpchar
 b1_uprc    | double precision | not null default 0.0
 b1_ucom    | character(8)     | not null default '        '::bpchar
 b1_peso    | double precision | not null default 0.0
 b1_pesob   | double precision | not null default 0.0
 b1_estseg  | double precision | not null default 0.0
 b1_estfor  | character(3)     | not null default '   '::bpchar
 b1_forprz  | character(3)     | not null default '   '::bpchar
 b1_pe      | double precision | not null default 0.0
 b1_tipe    | character(1)     | not null default ' '::bpchar
 b1_le      | double precision | not null default 0.0
 b1_lm      | double precision | not null default 0.0
 b1_conta   | character(20)    | not null default '
'::bpchar
 b1_cc      | character(9)     | not null default '         '::bpchar
 b1_toler   | double precision | not null default 0.0
 b1_itemcc  | character(9)     | not null default '         '::bpchar
 b1_familia | character(1)     | not null default ' '::bpchar
 b1_proc    | character(6)     | not null default '      '::bpchar
 b1_lojproc | character(2)     | not null default '  '::bpchar
 b1_qb      | double precision | not null default 0.0
 b1_apropri | character(1)     | not null default ' '::bpchar
 b1_fantasm | character(1)     | not null default ' '::bpchar
 b1_tipodec | character(1)     | not null default ' '::bpchar
 b1_origem  | character(2)     | not null default '  '::bpchar
 b1_clasfis | character(2)     | not null default '  '::bpchar
 b1_datref  | character(8)     | not null default '        '::bpchar
 b1_rastro  | character(1)     | not null default ' '::bpchar
 b1_urev    | character(8)     | not null default '        '::bpchar
 b1_foraest | character(1)     | not null default ' '::bpchar
 b1_comis   | double precision | not null default 0.0
 b1_mono    | character(1)     | not null default ' '::bpchar
 b1_mrp     | character(1)     | not null default ' '::bpchar
 b1_perinv  | double precision | not null default 0.0
 b1_dtrefp1 | character(8)     | not null default '        '::bpchar
 b1_grtrib  | character(3)     | not null default '   '::bpchar
 b1_notamin | double precision | not null default 0.0
 b1_prvalid | double precision | not null default 0.0
 b1_numcop  | double precision | not null default 0.0
 b1_contsoc | character(1)     | not null default ' '::bpchar
 b1_conini  | character(8)     | not null default '        '::bpchar
 b1_irrf    | character(1)     | not null default ' '::bpchar
 b1_codbar  | character(15)    | not null default '               '::bpchar
 b1_grade   | character(1)     | not null default ' '::bpchar
 b1_formlot | character(3)     | not null default '   '::bpchar
 b1_localiz | character(1)     | not null default ' '::bpchar
 b1_fpcod   | character(2)     | not null default '  '::bpchar
 b1_operpad | character(2)     | not null default '  '::bpchar
 b1_contrat | character(1)     | not null default ' '::bpchar
 b1_desc_p  | character(6)     | not null default '      '::bpchar
 b1_desc_gi | character(6)     | not null default '      '::bpchar
 b1_desc_i  | character(6)     | not null default '      '::bpchar
 b1_vlrefus | double precision | not null default 0.0
 b1_import  | character(1)     | not null default ' '::bpchar
 b1_opc     | character(80)    | not null default '
      '::bpchar
 b1_anuente | character(1)     | not null default ' '::bpchar
 b1_codobs  | character(6)     | not null default '      '::bpchar
 b1_sitprod | character(2)     | not null default '  '::bpchar
 b1_fabric  | character(20)    | not null default '
'::bpchar
 b1_modelo  | character(15)    | not null default '               '::bpchar
 b1_setor   | character(2)     | not null default '  '::bpchar
 b1_balanca | character(1)     | not null default ' '::bpchar
 b1_tecla   | character(3)     | not null default '   '::bpchar
 b1_prodpai | character(15)    | not null default '               '::bpchar
 b1_tipocq  | character(1)     | not null default ' '::bpchar
 b1_solicit | character(1)     | not null default ' '::bpchar
 b1_grupcom | character(6)     | not null default '      '::bpchar
 b1_numcqpr | double precision | not null default 0.0
 b1_contcqp | double precision | not null default 0.0
 b1_revatu  | character(3)     | not null default '   '::bpchar
 b1_inss    | character(1)     | not null default ' '::bpchar
 b1_codemb  | character(20)    | not null default '
'::bpchar
 b1_especif | character(80)    | not null default '
      '::bpchar
 b1_mat_pri | character(20)    | not null default '
'::bpchar
 b1_redinss | double precision | not null default 0.0
 b1_nalncca | character(7)     | not null default '       '::bpchar
 b1_aladi   | character(3)     | not null default '   '::bpchar
 b1_nalsh   | character(8)     | not null default '        '::bpchar
 b1_redirrf | double precision | not null default 0.0
 b1_tab_ipi | character(2)     | not null default '  '::bpchar
 b1_grudes  | character(3)     | not null default '   '::bpchar
 b1_datasub | character(8)     | not null default '        '::bpchar
 b1_pcsll   | double precision | not null default 0.0
 b1_pcofins | double precision | not null default 0.0
 b1_ppis    | double precision | not null default 0.0
 b1_mtbf    | double precision | not null default 0.0
 b1_mttr    | double precision | not null default 0.0
 b1_flagsug | character(1)     | not null default ' '::bpchar
 b1_classve | character(1)     | not null default ' '::bpchar
 b1_midia   | character(1)     | not null default ' '::bpchar
 b1_midia   | character(1)     | not null default ' '::bpchar
 b1_qtmidia | double precision | not null default 0.0
 b1_vlr_ipi | double precision | not null default 0.0
 b1_envobr  | character(1)     | not null default ' '::bpchar
 b1_qtdser  | double precision | not null default 0.0
 b1_serie   | character(20)    | not null default '
'::bpchar
 b1_faixas  | double precision | not null default 0.0
 b1_nropag  | double precision | not null default 0.0
 b1_isbn    | character(10)    | not null default '          '::bpchar
 b1_titorig | character(50)    | not null default
'                                                  '::bpchar
 b1_lingua  | character(20)    | not null default '
'::bpchar
 b1_edicao  | character(3)     | not null default '   '::bpchar
 b1_obsisbn | character(40)    | not null default
'                                        '::bpchar
 b1_clvl    | character(9)     | not null default '         '::bpchar
 b1_ativo   | character(1)     | not null default ' '::bpchar
 b1_pesbru  | double precision | not null default 0.0
 b1_tipcar  | character(6)     | not null default '      '::bpchar
 b1_vlr_icm | double precision | not null default 0.0
 b1_vlrselo | double precision | not null default 0.0
 b1_codnor  | character(3)     | not null default '   '::bpchar
 b1_corpri  | character(6)     | not null default '      '::bpchar
 b1_corsec  | character(6)     | not null default '      '::bpchar
 b1_nicone  | character(15)    | not null default '               '::bpchar
 b1_atrib1  | character(6)     | not null default '      '::bpchar
 b1_atrib2  | character(6)     | not null default '      '::bpchar
 b1_atrib3  | character(6)     | not null default '      '::bpchar
 b1_regseq  | character(6)     | not null default '      '::bpchar
 b1_ucalstd | character(8)     | not null default '        '::bpchar
 b1_cpotenc | character(1)     | not null default ' '::bpchar
 b1_potenci | double precision | not null default 0.0
 b1_qtdacum | double precision | not null default 0.0
 b1_qtdinic | double precision | not null default 0.0
 b1_requis  | character(1)     | not null default ' '::bpchar
 d_e_l_e_t_ | character(1)     | not null default ' '::bpchar
 r_e_c_n_o_ | double precision | not null default 0.0
Indexes:
    "sb1010_pkey" primary key, btree (r_e_c_n_o_)
    "sb10101" btree (b1_filial, b1_cod, r_e_c_n_o_, d_e_l_e_t_)
    "sb10102" btree (b1_filial, b1_tipo, b1_cod, r_e_c_n_o_, d_e_l_e_t_)
    "sb10103" btree (b1_filial, b1_desc, b1_cod, r_e_c_n_o_, d_e_l_e_t_)
    "sb10104" btree (b1_filial, b1_grupo, b1_cod, r_e_c_n_o_, d_e_l_e_t_)
    "sb10105" btree (b1_filial, b1_codbar, r_e_c_n_o_, d_e_l_e_t_)
    "sb10106" btree (b1_filial, b1_proc, r_e_c_n_o_, d_e_l_e_t_)


Shridhar Daithankar wrote:

>On Wednesday 01 Dec 2004 4:46 pm, Rodrigo Carvalhaes wrote:
>
>
>>I need to find a solution for this because I am convincing customers
>>that are using SQL Server, DB2 and Oracle to change to PostgreSQL but
>>this customers have databases of 5GB!!! I am thinking that even with a
>>better server, the restore will take 2 days!
>>
>>My data:
>>Conectiva Linux 10 , Kernel 2.6.8
>>PostgreSQL 7.4.6.
>>
>>postgresql.conf modified parameters (the other parameters are the default)
>>tcpip_socket = true
>>max_connections = 30
>>shared_buffers = 30000
>>sort_mem = 4096
>>vacuum_mem = 8192
>>max_fsm_pages = 20000
>>max_fsm_relations = 1000
>>
>>
>
>Can you try bumping sort mem lot higher(basically whatever the machine can
>afford) so that index creation is faster?
>
>Just try setting sort mem for the restore session and see if it helps..
>
> Shridhar
>
>
>

pgsql-performance by date:

Previous
From: "Stacy White"
Date:
Subject: Partitioned table performance
Next
From: Rodrigo Carvalhaes
Date:
Subject: Re: Improve BULK insertion