Download Diapositiva 1 - Docencia FCA-UNAM

Document related concepts

Microsoft SQL Server wikipedia , lookup

Transcript
UNIVERSIDAD LATINA
VI. MANTENIMIENTO DE LA INFORMACIÓN
E.I. L.E. Prof. Ramón Castro Liceaga
Detener, arrancar y reiniciar las Bases de Datos
(Generación de scripts).
• Detener, arrancar y reiniciar las BD y el uso de scripts
son varias de las actividades o necesidades en la
administración de la Base de Datos.
• Detener y activar el servicio ya sea para hacer algún
mantenimiento o respaldo o por alguna contingencia
como la perdida de energía eléctrica, etc.
• Este proceso puede ser realizado como un servicio de
Windows (detener, pausa y reiniciar) o a través de un
usuario con el privilegio SHUTDOWN. Por ejemplo
ejecutando la orden mysqladmin shutdown o utilizando
una herramienta como “MySQL Administrator” .
Las opciones de arranque del servidor cambian según el
manejador de BD de que se trate. Por ejemplo en MYSQL
utilizando el comando mysqld tenemos:
Para iniciar por primera vez el servicio mysqld y generar la base de datos
inicial (mysql), utilizar:
/sbin/service mysqld start
Para reiniciar el servicio mysqld, utilice:
/sbin/service mysqld restart
Para detener el servicio mysqld, utilice:
/sbin/service mysqld stop
Agregar el servicio mysqld al arranque del sistema.
Para hacer que el servicio de mysqld esté activo con el siguiente inicio del
sistema, en todos los niveles de corrida (2, 3, 4, y 5), se utiliza lo siguiente:
/sbin/chkconfig mysqld on
Detener, arrancar y reiniciar las Bases de Datos
(Generación de scripts).
Una vez configurado el servidor de Base de Datos se
puede iniciar el demonio del dbms a través del comando
"mysqld" o alguna de sus variantes "safe_mysqld",
"mysqld-max"
Esto se puede hacer desde cualquier terminal y se
pueden pasar como parametros algunas de las mismas
variables disponibles para configuración (en caso de
necesitar alguna opción particular)
Terminación del manejador
Se puede hacer de 2 maneras
•
a) Usando el comando "mysqladmin shutdown"
•
b) Matando el proceso asociado
Detener, arrancar y reiniciar las Bases de Datos
(Generación de scripts).
Los scripts son programas cortos, generalmente escritos
en lenguaje SQL, (.sql) para ejecutar procesos o rutinas
que se realizan en una Base de Datos
Un esquema generado como script se puede utilizarse
para realizar las siguientes tareas:
copia de seguridad que permita al usuario volver a crear todos los
usuarios, grupos, inicios de sesión y permisos.
Crear o actualizar código para el desarrollo de una base de datos.
Crear un entorno de pruebas o de desarrollo a partir de un esquema
existente.
Procesos de respaldo y recuperación de información, etc.
Ejemplo de script de respaldo
DECLARE
DECLARE
DECLARE
DECLARE
@name VARCHAR(50) -- database name
@path VARCHAR(256) -- path for backup files
@fileName VARCHAR(256) -- filename for backup
@fileDate VARCHAR(20) -- used for file name
-- specify database backup directory
SET @path = 'C:\Backup\'
-- specify filename format
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb') -- exclude these databases
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
BACKUP DATABASE @name TO DISK = @fileName
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor
Mantenimiento rutinario
Una base de datos requiere de un mantenimiento rutinario,
de lo contrario puede desarrollar problemas en una o más
estructuras, lo cual a largo plazo puede provocar un mal
rendimiento de la aplicación, llegando incluso a perdidas
de datos.
Existen actividades que el administrador del sistema
gestor de bases de datos debe realizar habitualmente
como son:
- mantenimiento de los identificadores internos y de las
estadísticas de planificación de las consultas,
- una reindexación periódica de las tablas,
- y tratamiento de los archivos de registro.
Mantenimiento rutinario : Vacuum
Es el proceso que realiza una limpieza a la base de datos
en PostgreSQL.
Se eliminan definitivamente tuplas marcadas para borrar y
se efectúa una reorganización de datos a nivel físico.
El VACUUM se realiza periódicamente para:
•Recuperar espacio en disco perdido por datos borrados o
actualizados.
•Actualizar las estadísticas de datos utilizados por el
planificador de consultas SQL.
•Protegerse ante la pérdida de datos por reutilización de
identificadores de transacción.
Mantenimiento rutinario : Vacuum
sintaxis
VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table ]
VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [
table [ (column [, ...] ) ] ]
Ejemplo:
Se ejecuta VACUUM sobre una base de datos existente.
demo=# VACUUM;
VACUUM
Mantenimiento rutinario : Reindexación
Para facilitas la obtención de información de una tabla se
utilizan índices. El índice de una tabla permite encontrar
datos rápidamente. Sin índice se debería recorrer
secuencialmente toda la tabla para encontrar un registro.
Es muy útil para bases de datos que posee mucha
información.
Una tabla se indexa por un campo o varios. Es importante
identificar el o los datos por lo que sería útil crear un
índice, aquellos campos por los cuales se realizan
operaciones de búsqueda con frecuencia.
Mantenimiento rutinario : Reindexación
Hay distintos tipos de índice:
•primary key: clave primaria, los valores deben ser únicos
y además no pueden ser nulos.
•index: crea un índice común, los valores no
necesariamente son únicos y aceptan valores nulos.
•unique: crea un índice para los cuales los valores deben
ser únicos y diferentes, aparece un mensaje de error si
intentamos agregar un registro con un valor ya existente..
La reindexación completa de la base de datos no es una
tarea muy habitual, pero puede mejorar sustancialmente la
velocidad de las consultas complejas en tablas con
mucha actividad.
Mantenimiento rutinario : Reindexación
Ejemplo:
demo=# reindex database demo;
NOTICE: table "pg_class" was reindexed
NOTICE: table "pg_type" was reindexed
NOTICE: table "pg_statistic" was reindexed
NOTICE: table "sql_features" was reindexed
NOTICE: table "sql_implementation_info" was reindexed
NOTICE: table "sql_languages" was reindexed
NOTICE: table "sql_packages" was reindexed
Se utiliza las palabras reservadas reindex database
agregando el nombre de la base de datos “demo”.
Mantenimiento rutinario : Archivos de registro
Una buena práctica es mantener archivos de registro de la
actividad del servidor, al menos de los errores que origina.
Durante el desarrollo de aplicaciones se puede disponer
de un registro de las consultas efectuadas, aunque
disminuye el rendimiento del gestor en bases de datos de
mucha actividad, y puede no ser de mucha utilidad.
De igual modo es conveniente disponer de mecanismos
de rotación de los archivos de registro; es decir, que
periódicamente se mantenga un respaldo de estos
ficheros y se empiecen unos nuevos, lo que permite tener
un historial.
Mantenimiento rutinario : tuning
Una parte importante del mantenimiento de una Base de
Datos es la afinación (tuning) de la configuración,
rendimiento y desempeño del funcionamiento de los
datos.
El primer paso es detectar los cuellos de botella que se
manifiesta en prolongados tiempos de ejecución (la BD es
lenta)
El siguiente paso es los querys y su plan de consulta para
lo cual es necesario:
optimizar el query
crear o reindezar
cargar parcialmente la tabla o tablas a la memoria
cargar el indice a la memoria
cambiar el esquema de bloqueos
particionar la tabla
considerar el rediseño de la Base de Datos
Rediseño de la Base de Datos
Con frecuencia los problemas detectados se deben a un
mal diseño de la Base de Datos para resolver este
problema se debe aplicar los niveles de normalizacion
Problemas de bloqueo.
Cuando se debe a que los procesos estan esperando a
que se liberen recursos para poder aplicar cambios o
seleccionar datos de las tablas y se observan procesos
bloqueados por el uso de recursos de otro usuario, es
necesario considerar y analizar las concurrencias a las
tablas involucradas
Uso optimo de recursos
Una de las actividades finales de la afinacion de ejecución
de procesos es analizar la configuración actual del
manejador de BDs de acuerdo al hardware en el que esta
montado y optimizar los parámetros de configuración,
distribuir las cargas de IO de acurdo al hardware con el
que se cuenta, redistribuir el uso de memoria RAM,
redistribuir la información en diferentes dispositivos,
limitar las IO a usuarios no criticos, optimizar las
conexiones de la red.
Administración del catalogo (Tablas, vistas del
sistema)
El catalogo contiene elementos como son las tablas,
Los indices, las vistas (views) y los stores procedures
que se encuentran almacenados dentro de cada Base de
Datos.
El DBA debe identificar los elementos del sistema para
darles el correcto mantenimiento.
Por ejemplo la administración de tablas tablas de mysql
Diccionario de datos
Es un conjunto de metadatos que contiene las
características lógicas y puntuales de los datos que se
van a utilizar en el sistema que se programa, incluyendo
nombre, descripción, alias, contenido y organización.
Identifica los procesos donde se emplean