Hola lista. Miren, en un sistema que he desarrollado, de una parte a este 
tiempo he notado que postgresql se toma mucha CPU(100%)
ya, tengo dos dudas

Duda 1
¿Es normal que postgresql se tome el 100% de cpu pero por tiempo muy reducido, 
o aún así es mucho?(shared buffers de 150 mb, si, se que es bajo)

Duda 2
Mi segunda duda,: mirando y re-mirando mi código, para ver si puedo optimizar 
mis consultas lo única consulta que encuentro que no me gusta, y que quizás 
pudiera ser causante del lío es una del tipo
---------------------------------------------------------------------------------------------------------------------------------
select dato1 FROM tabla WHERE codigo_2=NEW.codigo_2 AND codigo_3=NEW.codigo_3 
AND codigo_4=NEW.codigo_4 ORDER BY codigo DESC LIMIT 1 FOR UPDATE;
---------------------------------------------------------------------------------------------------------------------------------

Debo hacer varios tipos de consultas similares dentro de la función de un 
TRIGGER BEFORE, por un tema de validaciones,  no puedo controlarlas, sólo a 
través del código de la aplicación, ya que en algunas ocasiones (según 
requisitos del jefe) debiera intervenirse directamente la base de datos.

Mi pregunta es
Puedo hacer esto "ORDER BY codigo DESC LIMIT 1"  de alguna manera más óptima.

EXPLAIN de una  de estas consultas.
"Limit  (cost=21.57..21.57 rows=1 width=95)"
"  ->  Sort  (cost=21.57..21.58 rows=5 width=95)"
"        Sort Key: codigo"
"        ->  Index Scan using fki_tiene_pr_rx on existencia  (cost=0.00..21.54 
rows=5 width=95)"
"              Index Cond: (codigo_producto = 686)"

En todo caso demora entre 35 y 45 ms.

P.D.: Es una típica aplicación web de inventarios(por eso el trigger before, 
que controla el stock), con una base de datos de apenas unos 50-60mb.

Bueno, eso es, Saludos por allá.



      

Responder a