Al compilar el MySQL puede ser que tengamos el siguiente error: error: redeclaration of C++ built-in type 'bool' Vamos a ver como solucionarlo. Este error sale cuando hemos hecho el ./configure sin tener instalado el compilador g++, luego cuando se ha quejado con el siguiente error: source='my_new.cc' object='my_new.o' libtool=no \ DEPDIR=.deps depmode=none /bin/sh ../depcomp \ [...]
Mediante un ALTER DATABASE es posible mover todos los datos del datadir a un nuevo punto, haciendo desaparecer todas las bases de datos. Vamos a suponer las siguientes base de datos: mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | cacti | | jordi | | mysql | | nagios | | [...]
Gracias a information_schema es posible saber el tamaño que ocupan las tablas de nuestras bases de datos.
Toda la información que nos ofrece information_schema en relación con las tablas es la siguiente:
mysql> desc tables; +-----------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------+--------------+------+-----+---------+-------+ | TABLE_CATALOG | varchar(512) | YES | | NULL | | | TABLE_SCHEMA | varchar(64) | NO | | | | | TABLE_NAME | varchar(64) | NO | | | | | TABLE_TYPE | varchar(64) | NO | | | | | ENGINE | varchar(64) | YES | | NULL | | | VERSION | bigint(21) | YES | | NULL | | | ROW_FORMAT | varchar(10) | YES | | NULL | | | TABLE_ROWS | bigint(21) | YES | | NULL | | | …[Lea más]
Para las prácticas haremos uso de una BBDD de prueba que podemos descargar aquí:
Sample database with test suite
Lo bueno de esta BBDD es que ya viene repletita de datos, por ejemplo la tabla salaries tiene en torno a dos millones de registros. La particionaremos de forma que logremos mejorar el rendimiento. Hay que tener en cuenta que las pruebas se van a hacer sobre un Netbook, por lo que los resultados no son 100% fiables. Nunca pongáis un netbook como servidor de bases de datos en producción u os quedareis ciegos.
El particionado se puede hacer por rangos, listas, hashes y keys:
RANGO
CREATE TABLE employees ( id INT NOT NULL, fname VARCHAR(30), lname VARCHAR(30), hired DATE NOT NULL DEFAULT '1970-01-01', separated DATE NOT NULL DEFAULT '9999-12-31', job_code INT NOT NULL, store_id INT NOT NULL ) PARTITION BY RANGE …[Lea más]
Desde la versión 5.1 existe la posibilidad de particionar nuestras tablas de forma horizontal (en líneas), algo que nos puede ayudar en casos puntuales a mejorar el rendimiento de nuestra base de datos. Resumiendo, este sistema nos permite dividir lógicamente una tabla muy grande en otras más pequeñas, dentro de un rango de valores que nosotros indiquemos, de forma que la consulta de datos sea más rápida. Su uso es muy sencillo pero... ¿cuando debemos utilizarlo?
- Cuando la tabla sea tan grande que los índices no entren en RAM.
- Cuando tengamos una tabla realmente grande (no hablo de megas).
- Cuando almacenamos datos históricos.
- Cuando queremos rotar datos.
- Cuando los datos no paran de crecer y crecer...
Hay que tener en cuenta que este particionado es totalmente transparente para el usuario (y por lógica también para nuestra aplicación) por lo que en el …
[Lea más]Bueno, hoy pase el segundo examen y puedo decir que ya soy un administrador de bases de datos Mysql Certificado :) Fué más facil de lo esperado, pero he aprendido muchisimo, ha merecido la pena.
Lo conseguí! Ueeee!
- MySQL Architecture
- Starting, Stopping, and Configuring MySQL
- Client Programs for DBA Work
- Character Set Support
- Locking
- Storage Engines
- Data (Table) Maintenance
- The INFORMATION_SCHEMA Database
- Data Backup and Recovery Methods
- Stored Routines
- User Management
- Securing the Server
- Upgrade-Related Security Issues
- Optimizing Queries
- Optimizing Schemas
- Optimizing the Server
- Interpreting Error Messages
- Optimizing the Environment
- Scaling MySQL