max_connections es un valor que no se puede poner al azar, ya que...

max_connections es un valor que no se puede poner al azar, ya que afecta al funcionamiento de la aplicación y establece el máximo de memoria que MySQL podrá utilizar. La fórmula para calcularlo es:

(read_buffer_size + read_rnd_buffer_size + sort_buffer_size + thread_stack 
+ join_buffer_size) * max_connections

Por lo tanto, si los buffers anteriores suman 70 megas y ponemos 10.000 conexiones máximas, MySQL se creerá que tiene para gestionar 680 GB de RAM.

Imaginemos entonces que la máquina tiene 3gb. Como los 680 no los va a intentar reservar al iniciio no hay problema, pero el aceptará conexiones sin parar y llegará un momento en el que se superen los 3 gigas. Como MySQL cree que tiene 680, seguirá aceptando conexiones y todas empezarán a fallar, las nuevas y las actuales por errores de falta de memoria. Al final, aunque indiques 10.000 conexiones máximas, tu máquina no las gestionará y tirarás a bajo todo …

[Lea más]
Patch al MySQL 5.5 para guardar el timestamp cuando aumenta el max_used_connections

Anteriormente ya vimos el patch para MySQL 5.1 para max_used_connections_ts que nos indica el timestamp en que se ha llegado (mayor o igual) al high water mark. El patch para la versión 5.5 es el siguiente: diff -Naur mysql-5.5.10/sql/mysqld.cc mysql-5.5.10_max_used_ts/sql/mysqld.cc --- mysql-5.5.10/sql/mysqld.cc 2011-03-09 16:11:38.000000000 +0100 +++ mysql-5.5.10_max_used_ts/sql/mysqld.cc 2011-03-29 14:40:38.000000000 +0200 @@ -332,6 +332,7 @@ static [...]

Actualizar MySQL 5.1 a MySQL 5.5

Antes de actualizar de MySQL 5.1 a MySQL 5.5 deberíamos revisar la documentación de MySQL al respecto en búsqueda de cambios que nos afecten a las aplicaciones que lo usen para poder adaptarlas. Primero necesitaremos instalar cmake y ncurses-devel para el proceso de compilación: yum install cmake -y yum install ncurses-devel -y A continuación podremos [...]

El peligro del permiso FILE de MySQL

Mediante el permiso FILE permitimos que desde una sentencia SQL se lea y se escriba en el sistema de ficheros del servidor MySQL de acuerdo con los permisos del usuario que se ejecute (normalmente existe un usuario dedicado llamado mysql o mysqld) Podemos otorgar dicho privilegio mediante GRANT FILE: mysql> grant file on *.* to [...]

Habilitar InnoDB en MySQL

InnoDB es uno de los motores de almacenamiento que incluye MySQL por defecto desde hace varias versiones, y a partir de la 5.5 va a ser el utilizado por defecto en decrimento de MyISAM. Su características principales son el soporte de transacciones, lo que permite una gestión de los bloqueos a nivel de tabla/fila mucho más inteligente, y también permite realizar backups incrementales en caliente, pero además tiene soporte de integridad referencial, por lo que podemos crear claves ajenas o foráneas entre tablas.

La versión de Drupal de alto rendimiento Presflow recomienda InnoDB como storage engine y Drupal 7 lo utiliza por defecto, …

[Lea más]
Habilitar InnoDB en MySQL

InnoDB es uno de los motores de almacenamiento que incluye MySQL por defecto desde hace varias versiones, y a partir de la 5.5 va a ser el utilizado por defecto en decrimento de MyISAM. Su características principales son el soporte de transacciones, lo que permite una gestión de los bloqueos a nivel de tabla/fila mucho más inteligente, y también permite realizar backups incrementales en caliente, pero además tiene soporte de integridad referencial, por lo que podemos crear claves ajenas o foráneas entre tablas.

La versión de Drupal de alto rendimiento Presflow recomienda InnoDB como storage engine y Drupal 7 lo utiliza por defecto, …

[Lea más]
Instalación de un servidor LAMP II (MySQL 5.5)

Para instalar un servidor LAMP moderno debemos pasar de instalar MySQL 5.1 a instalar la última versión estable de MySQL: La versión 5.5. Uno de los cambios más destacados es el nuevo sistema de compilación mediante cmake substituyendo al clásico configure. Es por esto que deberemos instalar los siguientes paquetes (o equivalentes): yum install cmake [...]

Una vista a MySQL Workbench 5.2 – SQL Editor

Nota previa: Esta no es una review minuciosa, es mas bien un tibio comentario sobre mi experiencia de usuario en las ultimas semanas con la herramienta MySQL Workbench 5.2.31 sobre Ubuntu 10.10.

Mi trabajo con MySQL aun no ha llegado al nivel de complejidad que quisiera, ya que tambien trabajo con SQL Server,  es propicia la ocasión para compartiles mis apreciaciones, respecto al Editor SQL (que antes fue MySQL Query Browser).

Si bien estoy muy acostumbrado a la linea de comando, éste no me permite guardar/recuperar un historial de consultas o advertirme de algún “horror”, incluso ahora prefiero la linea de comando por que me cuesta menos “clicks” y pulsaciones del teclado. Pero cuando las cosas se ponen serias, o mas complejas, una herramienta como Workbenck se hace completamente …

[Lea más]
Analizado los campos y tipos de datos en MariaDB

Con la sintaxis SELECT PROCEDURE ANALYSE  podemos obtener la respuesta de un query con los datos optimos en base a la consulta que hicimos y los datos presentes en la tabla, aca a un ejemplo:

 MariaDB [training]> select * from soccer_teams procedure analyse ();
 +-----------------------------------+--------------+------------+------------+------------+------------------+-------+-------------------------+--------+--------------------------------
 ----------+
 | Field_name                        | Min_value    | Max_value  | Min_length | Max_length | Empties_or_zeros | Nulls | Avg_value_or_avg_length | Std    | Optimal_fieldtype
 |
 +-----------------------------------+--------------+------------+------------+------------+------------------+-------+-------------------------+--------+--------------------------------
 ----------+
 | training.soccer_teams.id          | 1            | 2          |          1 |          1 |                0 | …
[Lea más]
Calcular el tamaño de una base de datos y tablas con Information Schema

Aca les dejo na breve y sencilla solucion para poder calcular los tamaños de las DB en MySQL /MariaDB y forks con Information Schema

Realmente es muy sencillo:

MariaDB [information_schema]SELECT table_name, table_rows, data_length, index_length,
-> round(((data_length + index_length) / 1024 / 1024),2) "Size in MB"
-> FROM information_schema.TABLES WHERE table_schema = "training";
+--------------+------------+-------------+--------------+------------+
| table_name   | table_rows | data_length | index_length | Size in MB |
+--------------+------------+-------------+--------------+------------+
| by_year      |          4 |       65536 |            0 |       0.06 |
| country      |          0 |           0 |         1024 |       0.00 |
| part         |          0 |       16384 |            0 |       0.02 |
| soccer_teams |          2 |       16384 |            0 |       0.02 |
| table1       |          0 |           0 |         1024 |       0.00 |
| …
[Lea más]