CON 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 | 0 | 1.5000 | 0.5000 | ENUM('1','2') NOT NULL
|
| training.soccer_teams.countryid | 1 | 2 | 1 | 1 | 0 | 0 | 1.5000 | 0.5000 | ENUM('1','2') NOT NULL
|
| training.soccer_teams.soccer_team | Boca Juniors | Flamengo | 8 | 12 | 0 | 0 | 10.0000 | NULL | ENUM('Boca Juniors','Flamengo')
NOT NULL |
| training.soccer_teams.founded | 1895-11-17 | 1905-04-03 | 10 | 10 | 0 | 0 | 10.0000 | NULL | ENUM('1895-11-17','1905-04-03')
NOT NULL |
+-----------------------------------+--------------+------------+------------+------------+------------------+-------+-------------------------+--------+--------------------------------
----------+
4 rows in set (0.04 sec)
21 Feb
Posted by Santiago Lertora as Principal
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 | | test_aria | 0 | 8192 | 8192 | 0.02 | +--------------+------------+-------------+--------------+------------+ 6 rows in set (0.22 sec)
Para comenzar drizzle es una proyecto open source y fork de MySQL. Al codigo se le hizo una re ingenieria y se removio el codigo que no se consideraba primordial y mejorando el codigo de base en C++.
Es una base de datos orientada a:
Descargar Drizzle:https://launchpad.net/drizzle
05 Jan
Posted by Santiago Lertora as MariaDB
Quienes intenten instalar MariaDB windows vista o seven pueden encontrar algunos problemas o el error 1067 a la hora de iniciar el servicio por eso aca van algunas recomendaciones para que no tengan ese problema.
Se descomprimer el zip de la version de mariadb-noinstall-5.2.4-win32.zip
Lo descomprimimos a c:\mariadb por ejemplo y luego entramos al directorio \bin
Cuando querramos iniciar el servicio si cuentan con una version mas vieja de MariaDB es necesario entrar a Panel de Control /Herramientas Administrativas / Servicios y buscar MariaDB , luego vemos las propiedades y PARAMETROS DE INICIO ES NECESARIO PONER –CONSOLE y luego Iniciar el servicio.
Eso es todo
Supongo que mucho ya han escuchado esta historia y no es nada nuevo que Oracle adquirio a Sun y por consiguiente a MySQL, ya que venia en el combo.
Esto quiere decir que Oracle es el dueño de MySQL y para muchos este tema asusta mas despues de las noticias sobre Solaris. Entonces aqui muchos tienen algunos temores sobre que pasara con MySQL.
Por el momento Oracle va viento en popa con el MySQL Release Candidate 5.5 que nos incluye InnoDB 1.1 como esta en uno de los posts anteriores con varias mejoras asi que quienes quieran continuar de la mano de Oracle por ahora lo pueden hacer tranquilamente.
Igualmente cabe aclarar algo importante Oracle apunta a seguir ofreciendo MySQL con el doble licenciamiento y quienes tengan versiones anteriores open source tampoco tienen problemas al respecto.
Al margen de todo esto hay varias alternativas muy interesantes que vienen perfilando.
Una de ellas es MariaDB. MariaDB es la version gratuita de MySQL creada por el mismo fundador de MySQL años atras (Monty Widenius) que nos ofrece varios cambios en esta version con Storage Engines nuevos como Aria, XtraDB, QGraph, PBXT donde Aria es el sustito de MyISAM y XtraDB es el InnoDB plugin mejorado por Percona.
Desde ya hay libertad en el Mundo de MySQL ya que lo mas importante es poder acceder a soporte confiable y hay sobradas empresas que lo pueden brindar y nuevos binarios de diferentes empresas por lo tanto hay un sin fin de posibilidades en este gran momento de cambio para los usuarios de MySQL. Zend incluso esta recomendando instalar MariaDB y DRUPAL hace lo mismo demostrando que esta mas que probado que MariaDB cumple con todos los requerimientos.
En este post voy a explicar como instalar rapidamente MariaDB en Fedora 13
Primero vamos a descargar el ultimo release desde http://askmonty.org/wiki/MariaDB:Download#Binaries
En este caso yo descargue el binario para 64 bits (mariadb-5.1.49-Linux-x86_64.tar.gz)
Cuando lo descargamos realizamos lo siguiente:
[root@host ~]#groupadd mysql [root@host ~]# useradd -g mysql mysql [root@host ~]# cd /usr/local [root@host ~]# gunzip < /home/usuario-test/Downloads/mariadb-5.1.49-Linux-x86_64.tar.gz | tar xvf - [root@host ~]# ln -s la-ruta-a-mariadb-5.1.49-Linux-x86_64 mysql [root@host ~]# cd mysql [root@host ~]# chown -R mysql . [root@host ~]# chgrp -R mysql . [root@host ~]# scripts/mysql_install_db --user=mysql [root@host ~]# chown -R root . [root@host ~]# chown -R mysql data [root@host ~]# bin/mysqld_safe --user=mysql &
La instalacion es igual que instalar MySQL, RECUERDEN QUE DEBEREMOS
PONER UNA CONTRASENA A NUESTRO SERVIDOR DE MARIADB
Luego de ingresar por primera vez
Del brazo de Oracle llego la tan esperada version 5.5 de MySQL con InnoDB 1.1 que se muestra como la Default Storage Engine desplazando a MyISAM.
Dentro de los principales cambios tenemos
PERFORMANCE_SCHEMA para el analisis de la performance y asi obtener mayor control a un bajo nivel.Bloqueo de Metadata con las transacciones:
Supongamos que estamos realizando una transaccion, y alguien quisiera hacer algun DDL como un Drop de la tabla t1 donde nosotros estamos realizando una transaccion y otra de las sesiones quiere realizar un drop. ¿Que pasaria? Bueno con metadata locking evitariamos un problema de esta indole.
PERFORMANCE_SCHEMA
[mysql] show tables; +----------------------------------------------+ | Tables_in_performance_schema | +----------------------------------------------+ | COND_INSTANCES | | EVENTS_WAITS_CURRENT | | EVENTS_WAITS_HISTORY | | EVENTS_WAITS_HISTORY_LONG | | EVENTS_WAITS_SUMMARY_BY_EVENT_NAME | | EVENTS_WAITS_SUMMARY_BY_INSTANCE | | EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME | | FILE_INSTANCES | | FILE_SUMMARY_BY_EVENT_NAME | | FILE_SUMMARY_BY_INSTANCE | | MUTEX_INSTANCES | | PERFORMANCE_TIMERS | | PROCESSLIST | | RWLOCK_INSTANCES | | SETUP_CONSUMERS | | SETUP_INSTRUMENTS | | SETUP_OBJECTS | | SETUP_TIMERS | +----------------------------------------------+ 18 rows in set (0.00 sec)
Vamos a ir repasando algunas herramientas utiles para el trabajo del DBA de MySQL que nos ayudan a administrar nuestros servidores para poder ver de otra forma la performance de los mismos.
Las herramientas que vamos a ver son:
En este post vamos a hacer muy sencilla la replicacion con mysql y vamos a dar una intro a como podemos realizar esto para luego tratar de abordar casos un poco mas avanzados.
En el servidor Master
Debemos dejar parte de nuestro my.cnf asi:
[mysqld] # The TCP/IP Puerto en el que escuchara nuestro MySQL port=3306 server-id=1 binlog-do-db=BASEAREPLICAR log-bin = /var/log/mysql/masterserver-bin.log
Luego desde el shell creamos el usuario
GRANT REPLICATION SLAVE ON *.* TO 'usuario_slave'@'%' IDENTIFIED BY 'password'; +-----------------------+----------+--------------+------------------+ | File | Position | Binlog_do_db | Binlog_ignore_db | +-----------------------+----------+--------------+------------------+ | masterserver-bin.004 | 206 | baseareplicar| | +-----------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
en el Slave
Como primer medida debemos volcar el dump original del master sobre nuestro SLAVE para no hacer un LOAD DATA FROM MASTER (otra opcion) y evitar lockear el servidor master. Entonces hacemos una importancion de la base del master y luego en nuestro my.cnf vamos a agregar o siguiente:
server-id=2
master-host=192.168.0.18
master-user=usuario_slave
master-password=contraseña
master-connect-retry=60
replicate-do-db=baseareplicar
Luego el siguiente paso es START SLAVE en nuestro SLAVE y si tuvieramos algun inconveniente simplemente desde consola hacemos lo siguiente:
STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='192.168.0.18', MASTER_USER='usuario_slave', MASTER_PASSWORD='contraseña', MASTER_LOG_FILE='masterserver-bin.004', MASTER_LOG_POS=206;
START SLAVE;
Y listo tenemos la replicacion funcionando perfectamente.
| M | T | W | T | F | S | S |
|---|---|---|---|---|---|---|
| « Feb | ||||||
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 | 31 | ||