Anuncios

Bienvenidos sean a este post, hoy veremos un buffer invisible para nosotros.

Anuncios
Anuncios

Mariadb posee varios buffer por sesion para acelerar varios queries, si los valores son muy chicos algunos queries muy complejos pueden llevar mucho tiempo sin embargo si son muy grandes y ocurren muchas conexiones concurrentes una gran cantidad de memoria podria ser desperdiciada como resultado, por esta razon el DBA deberia conocer los buffers por sesion principales y mantenerlos en un tamaño razonable, ni muy pequeños ni muy grandes para la carga de trabajo.

Anuncios

Estos buffers pueden ser configurados por sesion: una conexion puede cambiar el tamaño de algunos buffers sin afectar a otras conexiones, esto nos permite tener buffers mas grandes para algunas sesiones y otros mas pequeños para conexiones que ejecuten queries mas simples, para configurar un buffer en una sesion podemos utilizar el sigueinte comando:

MariaDB [(none)]> set @@session.join_buffer_size = 64000;
Anuncios

En cambio para modificar un buffer global podemos usar un comando como este:

MariaDB [(none)]> set @@global.join_buffer_size = 128000;
Anuncios
Anuncios

A pesar de tener todos estos recaudos podemos tener desperdicio de memoria si muchas conexiones no se cierran correctamente cuando no sean requeridos, por lo tanto los desarrolladores deben asegurarse de esto, tambien las conexiones deberian tener un razonable timeout, es decir que una conexion esta inactiva por una cierta cantidad de tiempo y pasado este tiempo se procede con el cierre de la misma, esta conducta se configura con la variable wait_timeout, otra opcion que disponemos es hacer que el servidor rechace conexiones si excede a cierto numero, para ello tenemos la variable max_connections, si se establece un valor correcto puede salvar al servidor de ataques de tipo Denial-Of-Service (DoS), pero recuerden evaluar bien la cantidad de trabajo porque puede hacer que usuarios no se conecten a la base de datos, veamos algunas variables que nos permiten definir la longitud de los buffers:

  • sort_buffer_size, este buffer es usado para acelerar las operaciones con ORDER BY
  • read_buffer_size, este optimiza los escaneos secuenciales de las tablas MyIsam
  • read_rnd_buffer_size, este acelera todos los queries con una estrategia multirango de optimizacion y todas las lecturas al azar de las tablas MyIsam
  • join_buffer_size, esto optimiza las uniones que utilizan una estrategia de acceso de claves por lotes.
  • bulk_insert_buffer_size, este es usado para acelerar ingresos de multiples filas dentro de una tabla MyIsam, incluyendo al comando LOAD DATA INFILE
Anuncios

En resumen, hoy hemos visto a los buffers por sesion, que son, como trabajan, que cuidados debemos tener y algunas caracteristicas mas, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.50

Anuncio publicitario