Big Brown: la gran escapada

Autor: Armonth | El martes 23 de mayo del 2006 @ 01:31.

Ayer sufrí un percance en mi vida que sera difícil de superar, he tenido que enfrentarme a lo que más temía -- no, no, no era Chuck Norris -- y era un BIG BROWN (Gran marrón) con todas las palabras: ¿Por qué a mi?. Un BIG BROWN se caracteriza por (1) ser un marronazo del veinte, (2) de alguien de tu entorno familiar por lo que no puedes mandarlo a cagar y (3) no entrar en razones y yo de momento no controlo los diálogos de besugos.

Me llaman a las siete de la mañana (Sí, a las 7 de la mañana: ¡Me cago en su estampa!) un familiar para ver si podía ayudarle con una base de datos de... ¡a la mierda joder!, ¡que son las 7!, ¡a estas horas no me levanto ni aunque se me este quemando la casa! ¡que ni todavía han puesto las calles!. Pasadas unas cuántas necesarias horas me despierto y cuando caígo en el tema le pregunto por el Messenger (Que sea un contacto del messenger en vez del jabber o del irc significa que o es un familiar/amigo o es un pesado, o las dos cosas) qué es lo hostias quiere.

Aquí viene la petición más absurda que he escuchado en años: Ayuda para optimizar una base de datos y el "script" que inserta los datos en la misma. ¿Absurda? Sí, porque como todos sabemos el diablo está en los detalles. Además que él sabe que NO soy programador (hago alguna chorrada en PHP, alguna sentencia en MySQL, pero de ahí a siquiera crear algo decente...), mucho menos con conocimientos para encontrar puntos débiles en código ajeno u optimizar la estructura de una BB.DD en MySQL... pero esperad... que como digo el diablo, detalles, etcétera, etcétera, que eso no es lo peor ni mucho menos, ingenuo de mí.

Lo peor es cuando aún recordándole esto me dice cosas que me dejan de piedra, algunos puntos suculentos:

  • No es una base de datos en MySQL, yo me imaginaba que sería entonces algo más "tocho" como PostgreSQL o Oracle... ¡incluso ya empezaba a hacerme caquita! ¡y un huevo!. Era MS SQL Server, la primera en la frente; Si ya sé poco sobre BB.DD encima me llama por un software privativo.
  • La base de datos es "grande" tiene 100 megabytes (¿Grande? ¡Anda ya! casi cualquier SGDB mueve BB.DD de cientos de megas e incluso gigabytes sin perdidas apreciables de rendimiento).

Al concretar sobre el problema parece ser que era exceso de carga de CPU por culpa de la BB.DD (picos cuando había demasiadas peticiones a la vez), ¿quizá muchas visitas?... no... menos de 2000 "páginas vistas" al día, o estaba ejecutando el servidor en un Lentium I o fallaba algo, le pido que haga un "equivalente" (ya que yo no entiendo de bases de datos ajenas a MySQL) a mostrar el décimo registro entero (no sé si me explico: mysql> SELECT * FROM tabla WHERE ID=10;) y le tarda unos 20-30 segundos en responder...

Sin tener prácticamente idea de bases de datos eso ya me parece raro: O el PC es muy muy lento, está muy saturado o algo falla:

  • La base de datos no usa ningún equivalente a índices...
  • Cada petición tiene que leer de forma secuencial los 100 megabytes para obtener un sólo dato (por ejemplo el ID)...

¿Sigo?, la verdad, me da palo... pero eso significa que para cargar la página principal del sitio (12 "querys") tiene que leer 12 veces 100MB: ¡1.2GB! 1.2 putos gigabytes (y recalco lo de "putos") para generar una puta página principal o "index" de un mierda-sitio que recibe menos peticiones que las que hace GoogleBot en cualquier sitio. La estructura es muy pobre, tiene algo muy desconfigurado, es puta chapuza o yo que sé...

Mi opinión personal: Yo no soy ningún experto de nada, pero al menos no voy vacilando de conocimientos para luego hacer chapuzas como ESTÁ. Por suerte para mi calma espiritual el sujeto en cuestión es familiar pero sólo "conocido" y desde hoy desaparece de mi vida.

A todo ello, esto más que etiquetarlo como "SAT" (Servicio de Atención Técnica) debería ser Servicio de Atención a Tocapelotas... que alguien me dé paciencia ¡porque como me dé fuerza!.

Comentarios