|
|
| Productos Soluciones Soporte y Servicios Contáctenos | MySybase Sybase.com |
|
Configuración y Uso de Múltiples Bases de Datos Temporales en Adaptive Server Enterprise
IntroducciónAdaptive Server Enterprise (ASE) 12.5.0.3 introduce nuevas características en el servidor de datos, incluyendo el soporte a Múltiples Bases de Datos tempdb (MTDB); el término "tempdb de usuario" (el cuál usaremos a lo largo de éste documento) también hace referencia a ésta nueva característica de ASE. Al definir varias tempdb de usuario, podemos reducir la contención sobre las tablas del sistema de la base de datos tempdb. Esto es muy perceptible sobre todo con aplicaciones que hacen uso frecuente de tablas temporales y SQL que genera tablas de trabajo (worktables), como distinct, order by, etc. Otro beneficio importante es que si un usuario llegase a llenar una tempdb de usuario, sólo los usuarios asociados a esa base de datos quedarían eventualmente suspendidos (si quisieran modificar datos en esa tempdb); otros usuarios, asociados a otras bases de datos temporales, continuarían trabajando normalmente. Por último, dado que las tempdb de usuario se pueden borrar y volver a crear, sería relativamente fácil redimencionarlas (borrarlas y crearlas con un nuevo tamaño), lo que no se puede hacer con la tempdb del sistema. Antes de poder implementar las MTDB, se requiere de alguna planeación. Usted deberá decidir el número de bases de datos temporales, su ubicación física, sus tamaños, cómo serán asignadas y el efecto de su uso desde el punto de vista de las aplicaciones existentes. Otro aspecto importante que también debe ser considerado es la creación de cachés con nombre para dichas bases de datos. El enfoque de éste documento es brindar una introducción y describir la funcionalidad de las MTDB. Los aspectos de rendimiento y afinamiento, tales como cachés y ubicación física, no son directamente cubiertos. La implementación inicial de MTDB de ASE 12.5.0.3 tiene un alcance limitado con respecto a la funcionalidad planeada para versiones futuras. En ésta versión inicial, existen algunas limitantes en el uso de las tempdb de usuario. Estas limitantes serán discutidas en este documento. ASE 12.5.1 elimina algunas de esas limitantes e incorpora soporte a MTDB a través de Sybase Central 4.1. ContenidoEste documento técnico contiene las siguientes secciones:
Creación de una Base de Datos TemporalEl primer paso consiste en crear una o más tempdb de usuario. Antes, usted debe usar el comando disk init para crear dispositivo(s) para las bases de datos temporales. El comando create database fue modificado ligeramente, agregando la opción temporary. Por ejemplo:
Al usar la opción temporary, le estamos indicando a ASE que estás serán tempdb de usuario. Un bit en la columna status3 de la tabla del sistema master..sysdatabases se activa para indicar esto. La base de datos existirá hasta tanto no sea eliminada con el comando drop database, como cualquier otra base de datos de usuario. Al crear una nueva base de datos temporal, se recomienda no usar las opciones for load ni for proxy_update. Otra recomendación es que todas las bases de datos temporales tengan el mismo tamaño para asegurar que todos los usuarios tengan la misma disponibilidad de espacio, aunque esto no es necesariamente obligatorio. Una tempdb de usuario es limpiada durante el arranque de ASE, tal como la base de datos tempdb del sistema. Sinembargo, dado que las tempdb de usuario no son bases de datos del sistema, éstas son recuperadas usando el orden normal de recuperación (según el dbid de cada una). Si un servidor tiene varias bases de datos de usuario, los usuarios pueden comenzar a trabajar antes de que las bases de datos temporales hayan sido recuperadas. Usted puede usar el procedimiento sp_dbrecovery_order para cambiar el orden de recuperación de tal manera que las tempdb de usuario sean recuperadas antes que las bases de datos de usuario. Las opciones select into/bulkcopy/pllsort y trunc log on chkpt son automáticamente activadas para las tempdb de usuario, al igual que para la base de datos tempdb del sistema. Adicionalmente, las tempdb de usuario tienen activa la opción user created tempdb. Estas opciones se pueden observar usando el procedimiento almacenado sp_helpdb, tal como para cualquier otra pase de datos del servidor. Por ejemplo,
Para llevar a cabo las operaciones de administración de las tempdb de usuario, ASE incorpora ahora el procedimiento almacenado sp_tempdb. A lo largo del documento discutiremos las diferentes opciones de éste procedimiento. Vea también la sección Sintaxis del Procedimiento sp_tempdb, más adelante. Creación de un Grupo de Bases de Datos TemporalesUna vez creadas las bases de datos temporales, usted puede crear grupos de bases de datos temporales. Si usted no crea grupos, una tempdb de usuario sólo será usada si una aplicación o el login sa es específicamente asociado a dicha base de datos. Para crear nuevos grupos de bases de datos use la opción create del procedimiento almacenado sp_tempdb. Por ejemplo,
donde nombre_del_grupo es el nombre del nuevo grupo. Inicialmente, sólo existe el grupo default, y sólo la base de datos del sistema tempdb pertenece a éste grupo.
Para agregar otras bases de datos al grupo default use la opción add del procedimiento almacenado sp_tempdb. Por ejemplo,
Asociación de Usuarios a Bases de Datos TemporalesPara asociar logins o aplicaciones a bases de datos temporales, use la opción bind del procedimiento sp_tempdb. Por ejemplo:
Es recomendado crear una base de datos temporal para uso exclusivo del login sa, lo que significa que ésta no debe ser asociada al grupo default. Al hacer esto, se garantiza que el login sa siempre tenga disponibilidad de espacio temporal.
Asociación de Aplicaciones a Bases de Datos TemporalesUsted puede asociar una aplicación a una base de datos temporal específica. Si no lo hace, se usará el grupo default. Esto puede ser útil para aplicaciones que requieran una tempdb muy grande, o que deban ser aisladas de otras aplicaciones. Para llevar a cabo esto, use el procedimiento sp_tempdb; por ejemplo:
Todos los usuarios que se conecten a ASE usando isql tendrán a tempdb01 como su base de datos temporal. Existe un parámetro adicional en la función bind, el cual no se muestra en el ejemplo. Este parámetro es llamado hardness y puede tomar los valores 'hard' o 'soft'. El valor predeterminado del sistema es 'soft'. Tenga cuidado al usar el valor 'hard', ya que si lo hace y la base de datos temporal asociada no se encuentra disponible por alguna razón, la conexión a ASE será rechazada. Esto es contrario al valor 'soft', para el cuál si la tempdb de usuario no está disponible, se asignará en cambio la base de datos tempdb del sistema. El siguiente ejemplo demuestra esto. Supongamos que ejecutamos el siguiente comando:
Si por alguna razón la base de datos mytempdb2 no se encuentra disponible, ASE rechazaría la conexión y generaría el siguiente mensaje de error:
Tenga cuidado con esta opción, ya que todos los usuarios isql podrían quedar por fuera de ASE. Una alternativa en éste caso sería usar otra herramienta como SQL Advantage para establecer la conexión con ASE. Para cambiar la opción de hardness use la opción bind del procedimiento sp_tempdb:
Asignación de la Base de Datos TemporalSi no existen asociaciones a nivel de aplicación, a los usuarios son asignados a las bases de datos temporales del grupo default, en orden de conexión. Por ejemplo, si el grupo default consistiera de las bases de datos tempdb, tempdb01 y tempdb02, al primer usuario en conectarse a ASE se le asignaría la base de datos tempdb, al segundo la base de datos tempdb01 y al tercero la base de datos tempdb02 (el orden de asignación de cada base de datos se basa en el dbid de cada base de datos). Esto continuará así hasta que ASE sea bajado. Al ser reiniciado, ASE comenzará de nuevo con la asignación.Una vez el usuario ha establecido su conexión y se la ha asignado una tempdb de usuario, ésta no cambia durante la sesión. Una nueva variable del sistema está disponible para determinar cuál base de datos temporal le fue asignada al usuario. El siguiente comando retornará el dbid de la base de datos temporal asignada:
Para obtener el nombre de la base de datos, el cual puede ser requerido para llevar a cabo alguna tarea, use la función del sistema db_name( ):
Cabe anotar que los procesos internos, tales como el housekeeper, etc. sólo usarán la base de datos tempdb del sistema. Para ver quién está usando una base de datos temporal en particular, use la opción who del procedimiento sp_tempdb:
Borrado de Bases de Datos TemporalesPara poder remover una base de datos temporal, usted debe tener acceso exclusivo a dicha base de datos. Para llevar a cabo esto, remueva la base de datos del grupo default y espere a que los usuarios ya asignados a esa base de datos se desconecten. Para hacer esto, use las opciones remove y who del procedimiento sp_tempdb. Por ejemplo:
Una vez usted tenga acceso exclusivo a la base de datos, elimine las asociaciones y finalmente borre la base de datos con el comando drop database. Las asociaciones se pueden eliminar una a una, usando la opción unbind del sp_tempdb, o todas a la vez, usando la opción unbindall_db. Por ejemplo:
Dado que es posible borrar y volver a crear las tempdb de usuario, sería relativamente fácil redimencionarlas, borrándolas y creándolas con un nuevo tamaño, lo que no se puede hacer con la tempdb del sistema. Nota: Aplicaciones ExistentesEs posible que aplicaciones existentes creen tablas temporales compartidas en la base de datos del sistema tempdb usando un comando como create table tempdb..tabla1(...). Estas tablas seguirán siendo creadas en la base de datos del sistema tempdb y trabajarán sin importar a cuál tempdb de usuario el usuario esté asignado. Sinembargo, si las aplicaciones buscan la existencia de una tabla temporal como #temp en tempdb, puede que sea necesario cambiarlas, ya que las tablas temporales como #temp son ahora creadas en la tempdb de usuario asignada al usuario. Otros AspectosOptimización de ConsultasCuando una consulta es optimizada, ASE considera la configuración de caché para determinar el mejor plan de ejecución. Por ésta razón, es importante que las tempdb de usuario tengan características similares en lo relacionado con tamaño del caché. De otra manera, el rendimiento puede variar dependiendo de cual base de datos temporal sea asignada a los usuarios. Opciones de Base de DatosTambién es importante que las opciones de las tempdb de usuario sean las mismas. Esto es especialmente importante para allow nulls by default, ya que esto puede tener impacto en las características de las columnas de tablas temporales que se creen sin indicar específicamente null o not null para las columnas. Configuraciones de HAEn configuraciones HA (Alta Disponibilidad), los servidores primario y secundario deben estar configurados de igual manera, con respecto a las propiedades de las bases de datos temporales. Consultas ParalelasLas consultas paralelas generan tareas obreras (worker processes). Dado que estas tareas no llevan a cabo un proceso de login, ellas heredan la asignación de base de datos temporal de su tarea padre. Configuración de ASEExiste un límite fijo de 512 bases de datos temporales. Puede que éste límite cambie en versiones futuras cuando se permitan grupos de bases de datos distintos al default. El parámetro "number of open databases" debe ser incrementado en el número de bases de datos temporales. Sintaxis de sp_tempdbUse la opción help del procedimiento para visualizar la sintaxis resumida del procedimiento almacenado. Por ejemplo:
Notas:
Sybase CentralA partir de ASE 12.5.1, el Plug-in de ASE para Sybase Central 4.1 incluye soporte a MTDB desde la carpeta 'Temporary Databases', como se muestra en la Figura 1:
Figura 1 - Soporte a MTDB en Syabse Central 4.1 Ejemplo de UsoSuponga que usted quiere asignar una base de datos temporal a sus usuarios, independientemente de la aplicación, pero asegurando que el login sa tenga su propia tempdb de usuario. Para esto, siga estos pasos:
A partir de éste momento, el login sa hará uso exclusivo de la base de datos temporal satempdb. Los demás usuarios, al conectarse, quedarán asociados a la(s) bases de datos pertenecientes al grupo default. Ver la sección Asignación de la Base de Datos Temporal, arriba. Notas:
ConclusiónEl soporte a Múltiples Bases de Datos tempdb (MTDB) introducido en ASE 12.5.0.3 permite definir varias tempdb de usuario, con lo cual podemos reducir la contención sobre las tablas del sistema de la base de datos tempdb. Esto es importante sobre todo para aplicaciones que hacen uso frecuente de tablas temporales y SQL que genera tablas de trabajo (worktables), como distinct, order by, etc. Otro beneficio importante es que si un usuario llegase a llenar una tempdb de usuario, sólo los usuarios asociados a esa base de datos quedarían eventualmente suspendidos (si quisieran modificar datos en esa tempdb); otros usuarios, asociados a otras bases de datos tempdb, continuarían trabajando normalmente. Por último, dado que las tempdb de usuario se pueden borrar y volver a crear, sería relativamente fácil redimencionarlas (borrarlas y crearlas con un nuevo tamaño), lo que no se puede hacer con la tempdb del sistema. Aunque la implementación inicial de MTDB tiene ciertas limitantes, algunas de ellas han sido eliminadas en versiones más recientes de ASE.
|
|||||||||||||||||||||||||||||||||||||||||||||
| Inicio Sobre MTBASE Sobre Sybase Empleos en MTBASE Mapa del Sitio Aspectos Legales y Políticas de Privacidad |