base de dades

Aquesta setmana hem tingut una situació un poc peculiar. Una aplicació Java que connecta amb una base de dades anava lenta en certs moments. No era un problema de CPU al client ni al servidor de base de dades, ni tampoc era un problema de disc ni de xarxa, tot anava com sempre.

El problema

Alguns dels llistats d’informació que Java obtenia de la base de dades via JDBC eren grans (de l’ordre de MB) i la resposta es retardava per no tindre un major ample de banda.

Possibles solucions

  1. Reduir la informació que l’aplicació recollia de la base de dades. Això tenia un parell de problemes:
    • S’havia de canviar la programació de l’aplicació, cosa que no volíem.
    • El client hauria de decidir canvis de funcionalitat a l’aplicació per a evitar que rebera tanta informació.
  2. Comprimir la connexió JDBC, intentant reduir l’ample de banda necessari.

Solució adoptada

Finalment s’ha optat per la solució 2. Sembla una cosa impensable perquè normalment a les empreses, que tenen el servidor a la seua xarxa local, no necessiten aplicar compressió, però l’estàndard JDBC ho permet.

Com?

Tan fàcil com indicar-ho a l’hora de crear la connexió, creant la URL de connexió d’aquesta forma:

connectionUrl = “jdbc:mysql:///?useCompresion=true”;

Així, hem aconseguit una compressió de més del 80%.

Atenció

Si l’ample de banda no és per a tu un problema no deuries aplicar la compressió, perquè possiblement comprimir i descomprimir siga més lent. De totes formes pots fer la prova, és fàcil.

Leave a reply

required