[SP-pm] Duvida: usar arquivo TXT ou tabela com campo array

Márcio Vitor cromo.jml at gmail.com
Fri Jul 30 06:07:53 PDT 2010


2010/7/30 Renato Santos <renato.cron em gmail.com>
>
> Esta query, demorou mais de 500 segundos e nao rodou:
> SELECT esquema, tabela,
>        pg_size_pretty(pg_relation_size(esq_tab)) AS tamanho,
>        pg_size_pretty(pg_total_relation_size(esq_tab)) AS tamanho_total
>   FROM (SELECT tablename AS tabela,
>                schemaname AS esquema,
>                schemaname||'.'||tablename AS esq_tab
>           FROM pg_catalog.pg_tables
>          WHERE schemaname NOT
>             IN ('pg_catalog', 'information_schema', 'pg_toast') ) AS x
>  ORDER BY pg_total_relation_size(esq_tab) DESC;
>

Renato, talvez seja o momento de você e seus colegas darem um pouco
atenção a saúde do banco e estudarem um pouco mais sobre, pois a
situação ainda é reversível. :)

Caso por ae não exista o hábito de no ato da criação das tabelas criar
também os indíces agora é fazer uma operação "tapa buraco"e criar
índices em campos chave para suas querys mais pesadas.

Sobre a query, a primeira coisa a verificar é se existe um índice no
campo esq_tab, até porque está fazendo um ORDER BY no campo.

Outra coisa não muito boa na query é o NOT IN do subselect, porque
caso não haja um historograma e/ou havendo uma grande deleção no banco
de dados dificilmente os índices seriam utilizados corretamente. A
melhor opção como já disse o André seria utilizar o EXISTIS.

[]s

Marcio



>
> Desisto!
>
>
> Esta rolando um bzip -9 consumindo possuindo a maquina neste exato momento.
>
>
> Em desenv (que por ironia, é beeem melhor que a producao)
>
> public, mc_corte, 844 MB, 1152 MB
> public, tb_ciclo_inicio, 977 MB, 977 MB
> public, sim_producao, 490 MB, 548 MB
> public, cr_det, 440 MB, 509 MB
> public, sim_mailing, 297 MB, 487 MB
>
>
> A tabela é a tb_ciclo_inicio
>
>
> CREATE TABLE tb_ciclo_inicio
> (
>   cod_cn character(10),
>   ciclo numeric(6,0)
> )
> WITH (
>   OIDS=FALSE
> );
> ALTER TABLE tb_ciclo_inicio OWNER TO natura;
>
>
> O problema é perfomance mesmo.
>
> Hoje tem um perl (eu nao vi ainda) que deve fazer algo assim:
>
> $hash = {};
> foreach (@$rows){
>    $hash->{$_->{cod_cn}}{$_->{ciclo}} = 1
> }
>
> 2010/7/30 Nelson Ferraz <nferraz em gmail.com>
>>
>> 2010/7/30 Renato Santos <renato.cron em gmail.com>:
>> > Oi pessoal,
>> >
>> > Eu uso postgres, e hoje, temos uma tabela que guarda todos os meses que uma
>> > pessoa participou do sistema:
>> > Digamos que seja ela assim:
>> > id_pessoa bigint, mes int
>>
>> Duas perguntas:
>>
>> 1) Voce pode nos enviar o esquema (CREATE TABLE) da tabela atual?
>> (Incluindo indices)
>> 2) Quais sao as restricoes que te levaram a considerar a mudanca?
>> (espaco, performance?)
>> _______________________________________________
>> SaoPaulo-pm mailing list
>> SaoPaulo-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
>
>
> --
> Renato Santos
> http://www.renatocron.com/blog/
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm


More information about the SaoPaulo-pm mailing list