El tiempo vuela, pero lo prometido es deuda

Le había dicho a @asdrubalivan y a @ramloarc que iba a compartir más contenido #Backend

Por acá les dejo un hilo sobre PostgreSQL Performance Improvements

#performance #PostgreSQL #developer #DEVCommunity #rails #backend
@asdrubalivan @ramloarc Partamos con lo básico,

La vieja confiable documentación.

Aquí van a encontrar todo lo que necesiten.

postgresql.org/docs/14/index.…
@asdrubalivan @ramloarc Si hablamos de #performance #improvement en #PostgreSQL no puede faltar el comando Explain.

Asi ustedes van a ver que ruta va a tomar tu consulta SQL al momento que se ejecute.

#backend #DEVCommunity

Explain Command
postgresql.org/docs/14/sql-ex…
Ahora imaginen que tienen un sistema de cobros que manda 20millones de transacciones diarias, pero solo un 1% tiene cobros exitosos.

Cómo acceder rápidamente a esa info?
Los indices parciales, les permiten crear indices en base a un subset de la tabla, definido por una condición

En el ejemplo anterior

CREATE INDEX ...WHERE exitoso;

#backend #DEVCommunity #performance #improvement en #PostgreSQL

Partial Indexes

postgresql.org/docs/14/indexe…
Ahora imaginemos que creamos una View uniendo tablas ENORMES, e hicimos tan buen trabajo que la vista se volvio muy popular y es utilizada en distintos reportes.

Pero tarda muchos minutos en procesarse

Cómo podrían hacer en #PostgreSQL para mejorar ese #performance ?
Las "Materialized Views" (vistas materializadas) funcionan como las Views, pero persisten los resultados en forma de tabla.

Eso si, toca estar haciéndoles REFRESH

#backend #DEVCommunity #performance #improvement en #PostgreSQL

Materialized Views
postgresql.org/docs/14/rules-…
Ahora una #PreguntaDev

¿Qué significa CTA en #PostgreSQL ?
Las Common Table Expressions, son queries que usan WITH

Se pueden considerar como la definición de tablas temporales que existen solo para una consulta

CTA (Common Table Expressions)
postgresql.org/docs/14/querie…

#backend #DEVCommunity #performance #improvement en #PostgreSQL
Un tweet para agarrar Aire 😂
Ahora imagina, tener una consulta SQL 100x mas rápida en Postgres cambiando solo UNA LINEA

Puede que solo necesites cambiar

WHERE c.key = ANY (ARRAY[...])
por
ANY (VALUES (15368196))

#backend #DEVCommunity #performance #improvement en #PostgreSQL

datadoghq.com/blog/100x-fast…
Si tienes consultas lentas por el uso de ILIKE en la comparacion de texto, por acá te dejo unos enlaces que te pueden servir

Performance Optimization for Wildcards Search in Postgres (Trigram Index)

medium.com/swlh/performan…
GIN and GiST Index Types
postgresql.org/docs/14/textse…
Indexes in PostgreSQL — 7 (GIN)
habr.com/en/company/pos…
Por ultimo y no menos importante, (esto es mas a nivel de administrador de server, que como #backend)

Abrir y cerrar conexiones al server es costoso, asi que recuerda usar Connection Pools

PostgreSQL Benchmarking Using pgbench

digitalocean.com/community/tuto…

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Luis Mejía 🇳🇮

Luis Mejía 🇳🇮 Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @luismejiadev

9 Oct
Aqui vamos de nuevo, A petición de @ramloarc
vamos a empezar a compartir más contenido #backend

Seguimos con:

¿Cómo aprendí #Django y #python?

La vieja confiable documentación.

Pásenle que hay mucho trabajo remoto

docs.python.org/3/tutorial/ind…
@ramloarc Mi primer sitio web como #backend yo lo hice con #Django, quede enamorado del framework

Sigan el paso a paso de esta documentacion y tambien tendran su sitio
docs.djangoproject.com/en/3.2/intro/t…
@ramloarc Hace 2 años me puse a hacer mi "proyecto Insignia", donde aplique la mayor cantidad de habilidades posibles.

github.com/luismejiadev/s…
Read 14 tweets
7 Oct
A petición de @ramloarc vamos a empezar a compartir más contenido #backend

Empezando con lo que trabajo en GitLab.

¿Cómo aprendí #rails #ruby ?

La vieja confiable documentación.

Pásenle que hay mucho trabajo remoto
guides.rubyonrails.org/getting_starte…
@ramloarc Si de verdad quieren entender el funcionamiento del MVC de Rails,

hagan una prueba creando una mountable app, que en #rails serian #railsengines

#backend

guides.rubyonrails.org/engines.html
@ramloarc Hace 3 años, hice una prueba técnica básica,

Crear una API con #ruby #Rails y luego mostrar esos datos en un grafico de lineas.

Por acá pueden echarle un ojito

#backend

github.com/luismejiadev/c…
Read 11 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!

:(