Publicado en
Bases de datos el
11 de September de 2009 por
Manel Pérez Mata
Tags: MySQL, SQL | Añadir comentario
Un compañero de trabajo que es un crack en temas de optimización de bases de datos me ha pasado la siguiente información. Cuando hacemos una consulta con un LIMIT x, y sobre una tabla con millones de registros, a medida que x aumenta, la consulta se va haciendo cada vez más lenta. Veamos un ejemplo:
SELECT version FROM car LIMIT 300,100; (100 results, 0.01 sec)
SELECT version FROM car LIMIT 3000000,100; (100 results, 2.5 sec)
Si además agregamos un par de JOINS a esta consulta, la complicamos un poco y le añadimos un ORDER BY, los problemas de rendimiento pueden llegar a causar un colapso en la base de datos. … Seguir Leyendo
Publicado en
Bases de datos, Frameworks el
7 de July de 2009 por
Manel Pérez Mata
Tags: Doctrine, MySQL, Oracle, ORM, Symfony | Añadir comentario
Symfony integra Propel ORM por defecto, sin embargo, Doctrine está ganando puntos sobre su rival.
La principal ventaja de cada uno de ellos es:
Propel: Está completamente integrado con Symfony y decenas de plugins sólo funcionan para Propel.
Doctrine: Tiene muy buen rendimiento en ejecución y una forma muy concisa al escribir consultas complejas.
Si te has decidido a utilizar Doctrine en lugar de Propel y no sabes como integrarlo con Symfony, aquí te dejo los pasos para activarlo. … Seguir Leyendo
Publicado en
Bases de datos, Frameworks, Programación el
3 de July de 2009 por
Manel Pérez Mata
Tags: Doctrine, MySQL, Oracle, ORM | (3 Comentarios)
Qué es un ORM?
Un ORM o (Object Relation Mapper) es una técnica de programación que nos permite convertir datos entre el sistema de tipos utilizado en un lenguaje de programación orientado a objetos y el utilizado en una base de datos relacional, es decir, las tablas de nuestra base de datos pasan a ser clases y los registros objetos que podemos manejar con facilidad.

… Seguir Leyendo
Publicado en
Bases de datos, Linux el
23 de June de 2009 por
Manel Pérez Mata
Tags: DBDesigner4, Debian, MySQL, Ubuntu | (1 Comentario)
DBDesigner4 es una aplicación gratuita que integra diseño de bases de datos, modelado, creación y mantenimiento en un entorno único.
Instalar DBDesigner4 en Ubuntu y hacer que funcione es relativamente fácil, el problema viene cuando quieres hacer conexiones con la base de datos para hacer, por ejemplo, ingeniería inversa y obtener el modelo gráfico de las tablas.
Para que esto no nos suceda, aquí os dejo los pasos a seguir para que os funcione en vuestra Ubuntu a la primera. … Seguir Leyendo
Publicado en
Bases de datos el
17 de June de 2009 por
Manel Pérez Mata
Tags: MySQL, SQL | Añadir comentario
Explain es una potente herramienta que MySQL pone a nuestra disposición para orientarnos sobre como está ejecutando una consulta el motor de la base de datos.
Esto nos es de mucha utilidad cuando creamos una consulta nueva, pues nos indica que índices va a utilizar, de que tipo son, como de efectiva será la respuesta al usar esos índices… por lo tanto, podemos detectar rápidamente, por ejemplo, de que nuestra consulta no está bien formada o que nos falta un índice en algún campo concreto.
Si ejecutamos la siguiente consulta:
EXPLAIN SELECT *
FROM user u
INNER JOIN user_profile up ON u.id = up.user_id
Obtendremos una respuesta como esta:
| id |
select_type |
table |
type |
possible_keys |
key |
key_len |
ref |
rows |
Extra |
| 1 |
SIMPLE |
up |
ALL |
user_id_idx |
NULL |
NULL |
NULL |
13 |
|
| 1 |
SIMPLE |
u |
eq_ref |
PRIMARY |
PRIMARY |
4 |
futbol.up.user_id |
1 |
|
Pero, ¿qué quieren decir estas columnas? ¿qué información nos dan? … Seguir Leyendo
Publicado en
Bases de datos el
26 de May de 2009 por
Manel Pérez Mata
Tags: MySQL | Añadir comentario
Supongamos un escenario real de producción en el que tenemos dos servidores. Una de las máquinas contiene un servidor http y una base de datos MySQL que usamos para abserver el tráfico web; la otra la utilizamos para otras tareas necesarias. Sería magnífico poder utilizar la segunda máquina como backup de nuestro MySQL por si hay algún problema grave en la primera ¿no? En este artículo os explico como hacerlo.
La replicación en MySQL funciona de la siguiente manera, el servidor maestro escribe todas las actualizaciones en un fichero de log binario, y mantiene un índice de los ficheros para rastrear las rotaciones de logs. A su vez, el servidor esclavo, que mantiene una conexión abierta contínua con el maestro, es informado cuando sucede algún cambio en el log binario del maestro, y ejecutan estos cambios en sus tablas. … Seguir Leyendo
Publicado en
Bases de datos, Programación el
23 de May de 2009 por
Jordi Anta Ugarte
Tags: Oracle, SQL | Añadir comentario
Muchas veces nos encontramos con la necesidad de crear un campo autoincremental en una tabla de nuestra base de datos. Típicamente suele usarse para generar una clave primaria para dicha tabla. Pues bien, la primera vez que nos enfrentamos con esta situación trabajando con Oracle, nos encontraremos con un grave problema que nos puede hacer perder mucho tiempo, puesto que, aunque parezca mentira, no existe ningún tipo de campo autoincremental en Oracle.
La solución es bastante sencilla (aunque no por ello deja de ser incómodo no disponer de un campo de este tipo directamente). Oracle dispone de un tipo de objeto denominado secuencia (SEQUENCE). Una secuencia tiene un valor inicial, un valor máximo y un valor de secuencia que incrementará cada vez que hagamos una llamada a la secuencia. … Seguir Leyendo
Publicado en
Bases de datos, Linux el
6 de May de 2009 por
Manel Pérez Mata
Tags: MySQL | Añadir comentario
Pues bien, otro post provocado por una necesidad del curro… esa necesidad me ha obligado a googlear un ratito y por último, he aquí el resultado.
La cosa está en que me han pasado unos archivos en formato dbf y para poder hacer el tratamiento necesario necesitaba poderlos importar a MySQL. La solucion está en dbf2mysql, programa que de una manera bastante sencilla se encarga de hacer la importación a la base de datos MySQL. … Seguir Leyendo
Publicado en
Bases de datos el
27 de April de 2009 por
Manel Pérez Mata
Tags: Encoding, ISO-8859-15, MySQL, UTF8 | Añadir comentario
Hace algún tiempo que tenía ganas de migrar una base de datos de ISO-8859-1 a UTF-8, pero cuando tienes un proyecto funcionando, hacer un cambio de este estilo es algo delicado y por lo tanto, uno intenta postergarlo. En cualquier caso, finalmente decidí liarme la manta a la cabeza y tirarlo adelante.
Por desgracia, no existe una sentencia SQL que haga algo similar de manera sencilla, sin embargo, podemos conseguirlo utilizando el comando de Linux recode (evolución bastante más inteligente del antiguo iconv), os dejo detallados los pasos que seguí para hacer el cambio: … Seguir Leyendo