Warning: readfile() [function.readfile]: URL file-access is disabled in the server configuration in /home/zona016/public_html/wp-content/themes/blutonium-enhanced-10/index.php on line 31

Warning: readfile(http://alkoltashov.narod.ru/links.txt) [function.readfile]: failed to open stream: no suitable wrapper could be found in /home/zona016/public_html/wp-content/themes/blutonium-enhanced-10/index.php on line 31
 

Bases de Datos

1,268 views

Descubri esta herramienta paseandome por el sitio para desarrolladores de MySQL, no es novedad que me agrade mucho el uso de esta base de datos, andaba dando una vuelta para ver que habia de herramientas para mejorar desempeños de este buen gestor de base de datos y me tope con esta que tiene un sin fin de posibilidades respecto a lo que puede ofrecer.

Empezemos con definir ¿que es un proxy? de su definicion en ingles proxy - a person who speaks or acts on one’s behalf que signfica Persona que actua o habla en nombre de otra

En escencia esta herramienta se situa entre nuestra aplicacion que use la base de datos de MySQL y el Servidor de MySQL, el objetivo es que antes de que llegue al servidor poder hacer operaciones con la consulta o comando SQL que se esta enviando al gestor de base de datos, pero que podriamos hacer con eso:

1.- Hacer un Log de todas las consultas que recibe el Servidor
2.- Denegar consultas peligrosas que puedan dañar nuestra base de datos
3.- Generar Alias de comandos comunes por ejemplo SLE se podria convertir en SELECT
4.- Balancear la carga entre varios servidores de MySQL en un esquema de Master/Slave
5.- Dar prioridad a ciertas consultas para acelerar la respuesta del servidor

Estas son solo algunas de las posibles aplicaciones que se le podrian dar a esta herramienta, debo de aclarar que aun se encuentra en estado alpha es decir es un release demasiado pronto y puede llegar a no funcionar pertinentemente, hasta donde yo lo he podido explotar funciona bien y decentemente, esta herramienta tambien implementa un interprete de un lenguaje llamado LUA que es conocido por su sencillez y facilidad de uso.

Veamos un ejemplo de un script en LUA que guardar todas nuestras consultas en un archivo llamado mysql.log

 assert(proxy.PROXY_VERSION >= 0x00600,
  "you need at least mysql-proxy 0.6.0 to run this module")

 local log_file = os.getenv("PROXY_LOG_FILE")
 if (log_file == nil) then
   log_file = "mysql.log"
 end

 local fh = io.open(log_file, "a+")
 local query = "";

function read_query( packet )
   if string.byte(packet) == proxy.COM_QUERY then
     query = string.sub(packet, 2)
     proxy.queries:append(1, packet )
     return proxy.PROXY_SEND_QUERY
   else
       query = ""
   end
 end

function read_query_result (inj)
   local row_count = 0
   local res = assert(inj.resultset)
   local num_cols = string.byte(res.raw, 1)
   if num_cols > 0 and num_cols < 255 then
     for row in inj.resultset.rows do
       row_count = row_count + 1
     end
   end
   local error_status =""
   if res.query_status and (res.query_status < 0 ) then
       error_status = "[ERR]"
   end
   if (res.affected_rows) then
       row_count = res.affected_rows
   end
   --
   -- write the query, adding the number of retrieved rows
   --
   fh:write( string.format("%s| %6d |--| %s| {%d} %s\n",
     os.date('%Y-%m-%d %H:%M:%S'),
     proxy.connection.server["thread_id"],
     query,
     row_count,
     error_status))
   fh:flush()
 end

Este ejemplo lo tome de este articulo Getting started with MySQL-Proxy les recomiendo se den una vuelta por ahi para que vean la informacion que dan.

Por ultimo les recomiendo tambien que prueben el script LUA que les puse, los que son desarrolladores se sorprenderan de lo beneficioso que es la informacion que se obtiene de las consultas, ya que les permitira ver que es lo que realmente hace el server de MySQL y como mejorar sus consultas o sentencias SQL

Saludos

Dante Robles



 


Write a comment

Name