Archive for the 'Bases de Datos' Category

Historia de miedo para niños geeks :)

Domingo, Octubre 7th, 2007

Downgrade Oracle

Miércoles, Enero 17th, 2007

Tras meses de desarrollo de una aplicación bajo Oracle 10, y con las tablas maestras “populadas” con registros válidos, llega el momento de la puesta en producción.
oracle
No se si es una ley de Murphy, pero el entorno de producción siempre será lo más diferente posible al entorno de desarrollo, y especialmente en el insignificante detalle de las versiones de las herramientas, librerías y sistemas operativos que necesitaremos para que nuestra aplicación corra sin problemas.

Para que así se cumpla dicha ley, me encuentro que en producción había una versión inferior de Oracle la 9.1 y no había posibilidad de cambiarla, así que ya me veía sufriendo una migración manual de la bbdd de desarrollo.

Lo bueno de la situación es que hay truco muy sencillo, en una máquina con acceso tanto a la BD de desarrollo como a la producción, instalas el cliente de Oracle de la versión menor ( en este caso la 9.1) y haces una exportación de la BD de desarrollo y desde esta misma máquina luego te conectas a la BD de producción y haces el import sin ningún problema.

exp userid=SYSTEM/MANAGER@BBDD_DESA file=./descarga.dmp buffer=102400 log=./descarga.log grants=y indexes=y OWNER=propietario

imp userid=SYSTEM/MANAGER@BBDD_PROD file=./descarga.dmp fromuser=propietario TOUSER=propietario

Analizando la potencia de un servidor con PostgreSQL

Jueves, Septiembre 7th, 2006

PostgreSQLCuando montas un nuevo entorno de desarrollo o de producción, con nuevo hardware, y quieres compararlo con alguna instalación que conoces, tenemos una utilidad que nos puede ayudar en estos menesteres pgbench.

Pgbench, es un programa escrito en C apoyado en la librería libpq (más portable imposible) por lo que es facil compilarlo en el sistema que queramos testear, o también de manera más sencilla con un gestor de paquetes podeis agregar “postgresql-contrib”.

Una vez lo tengamos instalado creamos una base de datos de prueba

createdb pgbench

Después inicializamos la base de datos y aplicamos un factor de escala

pgbench -i pgbench -s 20

Con este comando hemos creado las tablas de prueba de pgbench (cuyos nombres son account, branches, tellers y history ) y luego las hemos rellenado aplicando un factor de escala 50, que define cuantas tuplas (filas) contendrán dichas tablas. Por ejemplo un factor de 20 supone crear 2 millones de registros en la tabla “account”.

Ahora podemos lanzar el test:

pgbench -c 10 -t 10000

Que ejecutará operaciones de consulta, actualización e inserción (select/update/insert) de filas sobre el esquema de pruebas. Podemos ajustar el paralelismo de las operaciones, por ejemplo -c 10 simula la concurrencia de 10 usuarios a la vez. A la vez podemos especificar el número de transacciones a realizar, -t 100 implica 100 transacciones por usuario.

La salida del test, nos dará el numero de tps (Transacciones por segundo) que soporta nuestro servidor. Ejecutar varias veces el test sin variar los parámetros puede dar ligeras diferencias en el valor de tps, lo cual es normal.

Ejemplo de salida:

pghost: pgport: (null) nclients: 10 nxacts: 10000 dbName: bench
`transaction type: TPC-B (sort of) scaling factor: 20 number of clients: 10
number of transactions per client: 10000 number of transactions
actually processed: 100000/100000 tps = 561.056729 (including connections establishing)
tps = 561.127760 (excluding connections establishing)

Por lo tanto nuestro servidor para las condiciones que hemos fijado tiene una capacidad de proceso de 561 transacciones por segundo. Sabiendo esto, podemos comparar distintos servidores con diferentes capacidades de memoria, sistemas de almacenamiento, procesador, etc. Podremos medir que mejora podemos esperar al cambiar de hardware y su rentabilidad a nivel de transacciones ganadas versus coste del nuevo material.

Ni que decir tiene que la mayor utilidad es poder ajustar de manera acertada el fichero de configuración postgresql.conf ya que podemos alterar cualquier entrada del fichero de configuración y medir inmediatamente las tps resultantes después de cambio y compararlas con las anteriores.

Espero que esta pequeña introducción, le sirva a alguien a disfrutar más de PostgreSQL y desearos que pgbench os muestre cada día valores mayores de tps.