jueves, 23 de mayo de 2013

Respaldos
      Por qué es importante para el administrador saber hacer respaldos?
Las copias de seguridad son uno de los mecanismos más utilizados por administradores para restaurar un sistema informático. La pérdida de datos o la inestabilidad del sistema son factores a tener en cuenta a la hora de hacer estas copias de seguridad o backups. Al perderse estos datos tenemos una copia de nuestro sistema en otro dispositivo de almacenamiento masivo que se utilizara para restaurar dichos datos.

      Es responsabilidad del administrador hacer un respaldo periódico de los sistemas de archivos de la máquina que administra?
El sistema de archivo debe respaldarse de acuerdo con algún proceso automatizado, de preferencia cuando el sistema no se encuentre en uso, y con la menor intervención posible de los operadores. Además debe tener un plan de respaldo que satisfaga sus necesidades y que haga posible la restauración de copias recientes de archivos, utilizando una combinación de respaldos completos e incrementales
    Cómo se hace un respaldo y ¿Cómo se restaura un respaldo ?
    Primero abrimos una ventana de comandos de Windows (menuInicio => Ejecutarcmd).
    Ya abierta dicha ventana nos situamos en la carpeta de los binarios de mySQL, pues ahí se encuentra el ejecutable de mysqldump, la cual se encuentra en la carpeta bin del directorio
     A continuación ejecutamos el programa mysqldump con las opciones que más nos convengan. Para mi caso en especial utilizaré el comando como se muestra a continuación.
mysqldump --opt -a --single-transaction -h localhost -u root -pmiServer –databases bdd_practica1 > c:\Users\G10\backup_bdd_practica1.sql
Restaurar
mysql --user=root --password=miServer bdd_practica1 < c:\Users\G10\backup_bdd_practica1.sql
    Cómo se muestra en pantalla el contenido de un respaldo?
Para ver el contenido de un respaldo se usa la opción (t), veamos el contenido de los respaldos que ya efectuamos.
# cd /root
# tar tvzf backup.tgz | more
# tar tvf /dev/fd0 | more
¿  Se puede  copiar una estructura de directorios, preservando los permisos, dueños, grupos, fechas y ligas ? Ilustra tu respuesta.
# mkdir /users/newhome Crear el directorio destino.
# cd /home Colocarse en el directorio a copiar.
# find . -depth -print | cpio -pdmv /users/newhome Copiar los archivos.
# rm -rf /home Opcional. Borrar el directorio origen,
sólo si se desea mover el directorio.

lunes, 13 de mayo de 2013


ESPEJEO
¿Qué es  Espejeo (mirroring)?
Es una configuración donde dos o tres servidores de datos, se ejecutan en equipos independientes, cooperan para mantener copias delas bases de datos y archivos de registro de transacciones (log).
Tanto el servidor primario como el servidor espejo mantienen una copia de la BD y el registro de transacciones, mientras que el tercer servidor, llamado el servidor arbitro es usado cuando es necesario determinar cuál de los otros dos servidores puede tomar la propiedad dela BD. El árbitro no mantiene una copia de la BD.
Beneficios del espejeo
Además de proporcionar una copia adicional de los datos con el fin de redundancia en caso de fallo de hardware, la duplicación de disco puede permitir que cada disco se acceda por separado para los propósitos de lectura. En determinadas circunstancias esto puede mejorar significativamente el rendimiento ya que el sistema puede elegir para cada lectura que disco puede buscar más rápidamente a los datos requeridos. Esto es especialmente importante cuando hay varias tareas que compiten por los datos en el mismo disco, y el "trashing" (donde el cambio entre tareas ocupa más tiempo que la tarea en sí) se puede reducir. Esta es una consideración importante en las configuraciones de hardware que frecuentemente tienen acceso a los datos en el disco.
En algunas implementaciones, el disco reflejado se puede dividir fuera y se utiliza para la copia de seguridad de datos, permitiendo que el primer disco para permanecer activos. Sin embargo, la fusión de los dos discos se puede requerir un período de sincronización en su caso escribir la actividad I/O ha ocurrido con el disco duplicado.
Espejeo en MYSQL ofrece tres modos de funcionamiento:
  • Modo de Alta Disponibilidad (síncrono y con testigo). Las transacciones son aplicadas de forma síncrona a las base de datos principal y espejo. Requiere de un Servidor Testigo (Witness) ubicado sobre una tercera máquina (que no sea ni el Servidor Principal ni el Servidor Espejo), gracias al cual es posible la recuperación automática ante fallos (automatic failover) o conmutación automática de roles.
  • Modo de Alta Protección (síncrono y sin testigo). Las transacciones son aplicadas de forma síncrona a las base de datos principal y espejo. Sin embargo, no utiliza un Servidor Testigo (Witness). En este modo de funcionamiento, no es posible la existencia de pérdida de datos, pero la recuperación ante fallos se realiza de forma manual (manual failover).
  • Modo de Alto Rendimiento (asíncrono y sin testigo). Las transacciones son aplicadas de forma asíncrona a la base de datos espejo, ofreciendo mejor rendimiento que los anteriores modos de funcionamiento, pero pagando como precio la existencia de posibles pérdidas de transacciones (y en consecuencia, potenciales pérdidas de datos).

Espejeo en un DBMS
Ejemplos de creación de espacios de disco con espejo.
1.-Ejecuta el programa R-Drive Image desde la ubicación en la que esté instalado.
2.-Haz clic en el botón "Crear imagen", que se localiza en la sección superior de la ventana principal del programa.
3.-Selecciona la unidad que quieres configurar como espejo de la lista de unidades disponibles y presiona el botón "Siguiente".
4.-Selecciona un destino para el espejo nuevo en la ventaja de navegación y haz clic en el botón "Siguiente". Éste puede colocarse en cualquier medio, como un CD, DVD u otro disco duro, dependiendo del tamaño que elijas para hacerlo.
5.-Presiona nuevamente el botón "Siguiente" de la página "Modo de imagen" y deja marcadas las opciones por defecto. Estas opciones son para usuarios avanzados que quieren crear espejos especializados en arreglos RAID o servidores NAS.
6.-Si lo deseas, introduce una contraseña para el espejo nuevo y haz clic en el botón "Siguiente".
7.-Presiona el botón "Iniciar" para comenzar a crear el espejo del disco duro. Este proceso tomará desde minutos a varias horas dependiendo de la velocidad y cantidad de información del disco duro que se esté configurando. Una ventana de diálogo aparecerá para informarte cuando el proceso haya sido completado exitosamente.
Bibliografía


Replicación

¿Qué es la Replicación?
·       ·         Es el proceso de copiar y mantener objetos de las base de datos, como por ejemplo relaciones, en múltiples bases de datos que forman un sistema de bases de datos distribuido.
Tipos de replicación
Los tipos básicos de replicación son:
  • replicación de instantáneas
  • replicación transaccional
  • replicación de mezcla
Para ajustarse aún más a los requerimientos de los usuarios se incorporan opciones como son la actualización inmediata en el suscriptor, la actualización en cola y la transformación de datos replicados.
 Replicación de instantáneas
En la replicación de instantáneas los datos se copian tal y como aparecen exactamente en un momento determinado. Por consiguiente, no requiere un control continuo de los cambios. Las publicaciones de instantáneas se suelen replicar con menos frecuencia que otros tipos de publicaciones. Puede llevar más tiempo propagar las modificaciones de datos a los suscriptores. Se recomienda utilizar: cuando la mayoría de los datos no cambian con frecuencia; se replican pequeñas cantidades de datos; los sitios con frecuencia están desconectados y es aceptable un periodo de latencia largo (la cantidad de tiempo que transcurre entre la actualización de los datos en un sitio y en otro). En ocasiones se hace necesario utilizarla cuando están involucrados algunos tipos de datos (text, ntext, e image) cuyas modificaciones no se registran en el registro de transacciones y por tanto no se pueden replicar utilizando la metodología de replicación transaccional.
Los servidores OLAP son candidatos a la replicación de instantáneas. Las consultas ad-hoc que aplican los administradores de sistemas de información son generalmente de solo lectura y los datos con antigüedad de horas o días no afectan sus consultas. Por ejemplo un departamento desea hacer una investigación sobre demografía de los artículos vendidos hace dos meses. La información de la semana pasada no afectará sus consultas; además el departamento no está planeando hacer cambio en los datos, solo necesita el almacén de datos. Hay que destacar además que cuando están involucrados algunos tipos de datos (text, ntext, e image) cuyas modificaciones no se registran en el registro de transacciones [Mic01] y por lo tanto es necesario transportar estos datos del publicador al suscriptor para lo cual es necesario utilizar la replicación de instantáneas, al menos como una solución parcial.
Con la opción de actualización inmediata en el suscriptor se permite a los suscriptores actualizar datos solamente si el publicador los va a aceptar inmediatamente. Si el publicador los acepta, se propagan a otros suscriptores. El suscriptor debe estar conectado de forma estable y continua al publicador para poder realizar cambios en el suscriptor. Esta opción es útil en escenarios en los que tienen lugar unas cuantas modificaciones ocasionales en los servidores suscriptor.
 Replicación transaccional
En este caso se propaga una instantánea inicial de datos a los suscriptores, y después, cuando se efectúan las modificaciones en el publicador, las transacciones individuales se propagan a los suscriptores. SQL Server 2000 almacena las transacciones que afectan a los objetos replicados y propaga esos cambios a los suscriptores de forma continua o a intervalos programados. Al finalizar la propagación de los cambios, todos los suscriptores tendrán los mismos valores que el publicador. Suele utilizarse cuando: se desea que las modificaciones de datos se propaguen a los suscriptores, normalmente pocos segundos después de producirse; se necesita que las transacciones sean atómicas, que se apliquen todas o ninguna al suscriptor; los suscriptores se conectan en su mayoría al publicador; su aplicación no puede permitir un periodo de latencia largo para los suscriptores que reciban cambios.
Es útil en escenarios en los que los suscriptores pueden tratar a sus datos como de sólo lectura, pere necesitan cambios a los datos con una cantidad mínima de latencia. Ejemplo: un sistema para el procesamiento y distribución de pedidos. En este tipo de escenario, podría tener varios publicadores recibiendo pedidos de mercancías. Estos pedidos se replican entonces a un almacén central donde se despachan los pedidos. El almacén puede tratar los datos como de sólo lectura y requiere nueva información en forma periódica.
Con el uso de la opción de atualización inmediata en el suscriptor se pierde aún más la autonomía de sitio, pero se reduce el tiempo en el cual los sitios actualizan sus copias de los datos. Para hacer modificaciones en la base de datos del suscriptor éstas se realizan (o intentan) también en la base de datos publicador en una confirmación de dos fases (2PC) por lo que si su modificación se confirma indica que es válida y luego en cuestión de minutos, o según la planificación hecha, estos cambios son duplicados a las demás bases de datos suscriptoras.
 Replicación de mezcla
Permite que varios sitios funcionen en línea o desconectados de manera autónoma, y mezclar más adelante las modificaciones de datos realizadas en un resultado único y uniforme. La instantánea inicial se aplica a los suscriptores; a continuación SQL Server 2000 hace un seguimiento de los cambios realizados en los datos publicados en el publicador y en los suscriptores. Los datos se sincronizan entre los servidores a una hora programada o a petición. Las actualizaciones se realizan de manera independiente, sin protocolo de confirmación, en más de un servidor, así el publicador o más de un suscriptor pueden haber actualizado los mismos datos. Por lo tanto, pueden producirse conflictos al mezclar las modificaciones de datos. Cuando se produce un conflicto, el Agente de mezcla invoca una resolución para determinar qué datos se aceptarán y se propagarán a otros sitios. Es útil cuando: varios suscriptores necesitan actualizar datos en diferentes ocasiones y propagar los cambios al publicador y a otros suscriptores; los suscriptores necesitan recibir datos, realizar cambios sin conexión y sincronizar más adelante los cambios con el publicador y otros suscriptores; el requisito de periodo de latencia de la aplicación es largo o corto; la autonomía del sitio es un factor crucial.
Es útil en ambientes en los que cada sitio hacen cambios solamente en sus datos pero que necesitan tener la información de los otros sitios. Por ejemplo podría crearse una base de datos que registre la historia delictiva de individuos. En cada municipio de Villa Clara, se puede tener una copia de la base de datos de toda la provincia y no se requiere estar conectado permanentemente a la base de datos de la instancia provincial.
Beneficios:
La Replicación se usa mucho en sistema de acceso a datos por varios motivos:
Rendimiento: Normalmente y dependiendo del caso, hay mas lectura que escritura en una base de datos, por lo que tener varios nodos solo procesando la lectura puede traer un gran beneficio de rendimiento en una base de datos muy consultada.
Prueba de fallas: Un esclavo estando casi sincrónicamente actualizado puede ser útil en caso de que el nodo maestro caiga, este puede reemplazarlo y así no detener el servicio.
Fiabilidad: Muchas veces se puede tener una Replicación para tener la seguridad de que los datos están siendo copiados a otro nodo, en caso de sufrir un desperfecto en el maestro.
Generación de bloqueos: aunque esta es más precisa, también se puede usar para procesos que necesiten leer datos, generando bloqueos, al hacerlo sobre un esclavo esto no interviene en el funcionamiento de todo el sistema, es muy usado para por ejemplo, hacer copias de seguridad, o extraer grandes cantidades de datos para generar estadísticas.

Ejemplo:

Bibliografía:

Espejeo
¿Qué es el espejeo?
 (Database Mirroring) es una configuración donde dos o tres servidores de dase de datos, ejecutándose en equipos independientes, cooperan para mantener copias de la base de datos y archivo de registro de transacciones (log).
Tanto el servidor primario como el servidor espejo mantienen una copia de la base de datos y el registro de transacciones, mientras que el tercer servidor, llamado el servidor árbitro, es usado cuando es necesario determinar cuál de los los otros dos servidores puede tomar la propiedad de la base de datos. El árbitro no mantiene una copia de la base de datos. La configuración de los tres servidores de base de datos (el primario, el espejo y el árbitro) es llamado Sistema Espejo (Mirroring System), y el servidor primarioy espejo juntos son llamados Servidores Operacionales (Operational Servers) o Compañeros (Partners).
Beneficios del espejeo de Datos en un DBMS
·         Incrementa la disponibilidad de una base de datos.
·         Aumenta la protección de los datos.
·         Mejora la disponibilidad de la base de datos de producción durante las actualizaciones.

Creación de reflejo de la base de datos.
Se puede reflejar una base de datos que está habilitada para la captura de datos modificados. Para asegurarse de que la captura y la limpieza se producen automáticamente tras una conmutación por error siga estos pasos:
Asegúrese de que el Agente SQL Server se ejecute en la nueva instancia del servidor principal.
Cree el trabajo de captura y el trabajo de limpieza en la nueva base de datos principal, la antigua base de datos de reflejo. Para crear los trabajos, use el procedimiento almacenado sp_cdc_add_job.
Para ver la configuración actual de un trabajo de captura o limpieza, use el procedimiento almacenadosys.sp_cdc_help_jobs en la nueva instancia de servidor principal. Para una base de datos dad, el trabajo de captura se denomina.database_name_capture y el trabajo de limpieza se denomina cdc.database_name_cleanup, donde database_name es el nombre de la base de datos.
Para cambiar el trabajo de configuración, use el procedimiento almacenado sys.sp_cdc_change_job.

Bibliografía:

Seguridad

Problemas:
1.- Se recibe el siguiente mensaje de error: Error de inicio de sesión del usuario 'distributor_admin'.
Solución:   Asegúrese de que la cuenta distributor_admin tiene una contraseña segura válida. La replicación crea un servidor remoto, repl_distributor, que permite la comunicación entre el distribuidor y el publicador. El inicio de sesión distributor_admin se asocia con este servidor remoto y debe tener una contraseña válida.
2.- Autenticación, control de acceso, y Gestión de derechos
No todos los datos y no todos los usuarios son creados iguales. Usted debe autenticar a los usuarios, garantizar la rendición de cuentas por usuario, y administrar los privilegios para de limitar el acceso a los datos.
Solución:
Implemente y revise periódicamente los informes sobre de derechos de usuarios, como parte de un proceso de formal de auditoría.
Utilice el cifrado [6] para hacer ilegibles los datos confidenciales, complique el trabajo a los atacantes, esto incluye el cifrado de los datos en tránsito, de modo que un atacante no puede escuchar en la capa de red y tener acceso a los datos cuando se envía al cliente de base de datos.
Desarrolle o adquiera herramientas de identificación, asegurando éstas contra el malware, colocado en su base de datos el resultado de los ataques de inyección SQL ; pues aparte de exponer información confidencial debido a vulnerabilidades, como la inyección SQL, también facilita a los atacantes incorporar otros ataques en el interior de la base de datos.
3.- Tiene problemas de permisos al conectarse con un publicador de Oracle.
Solución: Es necesario realizar diversas comprobaciones, que incluyen comprobar que la cuenta que la replicación utiliza para conectar con el publicador de Oracle y la cuenta con la que Microsoft SQL Server se ejecuta en el distribuidor disponen de permisos suficientes. 
4.- La contraseña de una cuenta que utilizan uno o más agentes de replicación ha cambiado.
Solución: Cambie la contraseña de todos los agentes de replicación que utilicen dicha cuenta. Para obtener más información.
5.- Tablas sensibles
Solución: Confeccione un buen catálogo de tablas o datos sensibles de sus instancias de base de datos.  Además, automatice el proceso de identificación, ya que estos datos y su correspondiente ubicación pueden estar en constante cambio debido a nuevas aplicaciones o cambios producto de fusiones y adquisiciones.



Bibliografía:

Rendimiento de una base de datos

Técnicas de estimación para medir el rendimiento de la base de datos:
El motivo de este gran rendimiento es que estas tablas que tienen cientos de millones de registros están diseñadas y entendidas para trabajar con MySql, si diseñamos considerando lo que puede y no puede hacer el motor de base de datos probablemente consigamos un buen rendimiento, cualquier sistema de administración de Bases de Datos es distinto con respecto a los otros, lo que funciona bien y es eficaz en Oracle ó PostgreSQL no debe ser lo que mayor rendimiento ofrezca en Mysql.
Por ello para trabajar con tablas muy grandes debemos tener en cuenta tres claves: Buffers, Índices y Consultas.
Buffers
Un buffer es una ubicación de la memoria reservada para el almacenamiento temporal de información digital.
La primera cosa que deberíamos tener muy clara es el hecho de que hay una gran diferencia entre “Datos que están en memoria” y “Datos que no están en memoria”.
Pongamos que comenzamos con un tamaño de memoria y notamos un descenso gradual del rendimiento porque la base de datos está creciendo, la solución sería asegurarnos que tenemos memoria suficiente para el volumen de datos que estamos utilizando.
Índices
Los índices son usados para encontrar rápidamente los registros que tengan un determinado valor en alguna de sus columnas. Sin un índice, MySql tiene que iniciar una búsqueda por el primer registro yleer toda la tabla para encontrar los registros relevantes.
Un error común es pensar que los índices no afectan en tablas con poco volumen de datos, aún en tablas pequeñas (1.000 registros) es por lo menos 100 veces más rápido leer datos utilizando un índice, sin este índice estaríamos haciendo una lectura secuencial.
Por lo tanto queda claro que los índices son realmente eficaces para acelerar el acceso a datos.
Cuando MySql encuentra un índice en una columna lo utiliza en lugar de hacer un escaneo completo de la tabla (leer todos los registros de la tabla de manera secuencial). Esto reduce los tiempos de CPU y las operaciones de “lectura/escritura en disco”.
Para verlo lo mejor es explicarlo con datos, comenzamos con una tabla que tiene 100 Bytes por registro y suponiendo que tenemos 100MB/segundo de velocidad de lectura por lo que calculando llegamos a la conclusión de que podemos conseguir 1,000.000 de registros por segundo (Tablas tipo MyISAM).
Estimación de Rendimiento
Una de las tareas principales del DBA es el monitoreo de rendimiento y afinamiento de la base de datos. Sin embargo, la gestión de rendimiento de la mayoría de las organizaciones es reactiva. Los problemas de rendimiento pueden ser causados por cualquier componente de las TIC: servidores, red, SO, clientes o base de datos. Poseer una sólida comprensión de la infraestructura de TI permite a los DBA’s responder eficazmente cuando surgen problemas de rendimiento.
Rendimiento es la celeridad con la que la DBMS atiende la demanda de los usuarios. Cinco factores que influyen en el rendimiento de base de datos:
• Carga de trabajo.
• Capacidad del computador
• Recursos adicionales de hardware y software.
• Optimización
• Contención.
Un código SQL pobremente ejecutado puede causar los siguientes problemas que afectan al rendimiento:
• Búsquedas secuenciales en las tablas.
• La falta de índices adecuados.
• Creación de índices inapropiados.
• No utilizar los índices disponibles.
• Estadísticas de base de datos no actualizadas.
• Junturas de tablas en un orden no óptimo
Desde la perspectiva de la optimización del rendimiento de bases de datos, el DBA se concentrará en primer lugar en las causas más probables de los problemas de rendimiento, como es el código SQL.
Encontrar el código que produce los problemas es muy difícil ya que éste puede estar escondido en uno de los cientos o incluso miles de programas, en alguna aplicación o en una consulta de AdHoc.
Para detectar en dónde están los problemas se deben utilizar herramientas de monitoreo que vienen con las DBMS, también se pueden adquirir herramientas de empresas independientes. Normalmente, en estas herramientas se califican a las instrucciones SQL, en base a la cantidad de recursos que consumen, identifican a los programas y usuarios que las ejecutan. La correcta codificación y puesta a punto de sentencias SQL requiere de un gran esfuerzo. La estimación del rendimiento de una aplicación no solo comprende el análisis del código SQL. La aplicación debe ser revisada totalmente y no solo una parte con el fin de aumentar el rendimiento. El análisis debe mostrar el efecto global de las consultas y como afectan unas a otras. Crear un método de rendimiento seguro es iterativo y se debe cooperar entre DBA, SA, y desarrolladores.
Tipos de Optimización del Rendimiento
Una aplicación de base de datos puede afinarse en tres áreas:
1. Ajuste del sistema
El DBMS puede y debe ser ajustado para asegurar un rendimiento óptimo. El software de otros sistemas con los que interactúa el DBMS incluye: el sistema operativo, software de red, sistemas de colas de mensajes, middleware y procesadores de transacciones.
2. Ajuste de base de datos
El rendimiento puede verse afectado por el diseño físico de la base de datos, incluyendo la normalización, almacenamiento en disco, el número de tablas, diseño de índices, y el uso de DDL y sus parámetros asociados.
LA revisión de los índices es necesaria para evitar impactos negativos en la modificación de datos.
3. Ajuste de las aplicaciones
Muchas herramientas de terceras partes puede gestionar con eficacia el rendimiento de las aplicaciones de base de datos de misión crítica:
• Monitores de rendimiento.
• Herramientas de estimación de rendimiento.
• Herramientas de planificación de la capacidad.
• Análisis de SQL y herramientas de ajuste.
Optimizar el tiempo de consultas
Recomendación para crear consultas
• Revisar siempre el plan de ejecución de las consultas para que identifiques como SQL está viendo la consulta y veas la manera de mejorar el rendimiento.
• Tratar de no utilizar cursores, ya que impactan al rendimiento.
• Sub-Consultas transfórmalas en “JOINS”. Muchas veces las sub-consultas con sentencias “IN” se vuelven muy lentas.
• Evitar consultas que generan bloqueos.
• Evitar el uso de “NOT IN”, usar mejor “EXISTS” o “NO EXISTS”.
• Evitar usar “SUBSTRING” dentro de un “WHERE”
• Usar “ORDER BY” solo si es absolutamente necesario.
• No usar el comando “GROUP BY” sin una función de agregación.
• Consultar únicamente las filas y columnas requeridas. No usar un “SELECT”.
Disponer de índices en los campos adecuados optimizará sus resultados:
• Para mejorar una consulta (SELECT), hay que crear un índice sobre los campos que son utilizados en las búsquedas (los que aparecen en las cláusulas WHERE o JOIN).
• Utilice índices sobre campos con valores únicos. Los índices funcionan peor si el campo tiene valores duplicados.
• Trate de que los índices sean cortos. Si indexa un campo de texto, evite hacerlo sobre campos de longitud variable, y acorte siempre el tamaño del índice a lo que considere más adecuado. Por ejemplo, si un campo CHAR tiene 200 caracteres y sabe que los valores se distinguen en los primeros 20 caracteres, indexe sólo hasta dicho tamaño de campo. Ahorrará espacio y ganará velocidad de respuesta.
• No cree índices innecesarios. Estos se actualizan con cada cambio en la tabla asociada y pueden ralentizar las modificaciones de la misma.
Bibliografía





Manejo de índices
¿Qué es un índice?
El índice  es una estructura de datos que mejora la velocidad de las operaciones, permitiendo un rápido acceso a los registros de una tabla en una base de datos. Al aumentar drásticamente la velocidad de acceso, se suelen usar sobre aquellos campos sobre los cuales se hacen frecuentes búsquedas.
El índice tiene un funcionamiento similar al índice de un libro, guardando parejas de elementos: el elemento que se desea indexar y su posición en la base de datos. Para buscar un elemento que esté indexado, sólo hay que buscar en el índice dicho elemento para, una vez encontrado, devolver el registro que se encuentre en la posición marcada por el índice.
Los índices pueden ser creados usando una o más columnas, proporcionando la base tanto para búsquedas rápidas al azar como de un ordenado acceso a registros eficiente.
El espacio en disco requerido para almacenar el índice es típicamente menor que el espacio de almacenamiento de la tabla (puesto que los índices generalmente contienen solamente los campos clave de acuerdo con los que la tabla será ordenada, y excluyen el resto de los detalles de la tabla), lo que da la posibilidad de almacenar en memoria los índices de tablas que no cabrían en ella. En una base de datos relacional un índice es una copia de una parte de la tabla.
Algunas bases de datos amplían la potencia del indexado al permitir que los índices sean creados de funciones o expresiones. Por ejemplo, un índice puede ser creado sobre la función upper(apellido), que almacenaría en el índice solamente las versiones mayúsculas del campo apellido. Otra opción a veces soportada, es el uso de índices "filtrados", donde las entradas del índice son creadas solamente para los registros que satisfagan una cierta expresión condicional. Un aspecto adicional de flexibilidad es permitir la indexación en funciones definidas por el usuario, también como expresiones formadas de un surtido de funciones incorporadas. Todos estos refinamientos de la indexación son soportados en Visual FoxPro y otros lenguajes de programación, por ejemplo.1
Los índices pueden ser definidos como únicos o no únicos. Un índice único actúa como una restricción en la tabla previniendo filas idénticas en el índice.
Tipos de  índice


Como Crear  índices en MySql
Un índice (KEY, o INDEX) es un grupo de datos que MySQL asocia con una o varias columnas de la tabla. En este grupo de datos aparece la relación entre el contenido y el número de fila donde está ubicado. Los índices (como los índices de los libros) sirven para agilizar las consultas a las tablas, evitando que mysql tenga que revisar todos los datos disponibles para devolver el resultado.
Podemos crear el índice a la vez que creamos la tabla, usando la palabra INDEX seguida del nombre del índice a crear y columnas a indexar (que pueden ser varias):
INDEX nombre_indice (columna_indexada, columna_indexada2...)
Podemos también añadirlos a una tabla después de creada:
ALTER TABLE nombre_tabla ADD INDEX nombre_indice (columna_indexada);
Si queremos eliminar un índice:
ALTER TABLE tabla_nombre DROP INDEX nombre_indice
Los index permiten mayor rápidez en la ejecución de las consultas a la base de datos de la clausula SELECT. Son mejores candidatas a indexar aquellas columnas que presentan muchos valores distintos, mientras que no son buenas candidatas las que tienen muchos valores idénticos, como por ejemplo sexo (masculino y femenino) porque cada consulta implicará siempre recorrer practicamente la mitad del indice. Los tipos de indices mas comun son:
  • INDEX: se explicará mas adelante.
  • PRIMARY KEY: Se trata de un índice diseñado para consultas especialmente rápidas. Todos sus campos deben ser unicos y no admite NULL
  • UNIQUE: se trata de un indice que no permite almacenar dos valores iguales.
  • FULL TEXT: permiten realizar búsquedas de palabras. Puedes crear indices FULLTEXT sobre columnas tipo CHAR, VARCHAR o TEXT.
Como Crear  índices en Oracle
El estamento básico para crear índices en una base de datos Oracle 11g es:
1.CREATE INDEX <em>nombre_indice</em> ON <em>nombre_tabla</em> (<em>columna, columna1,….</em>);
En el artículo - Introducción a la creación de tablas en Oracle 11g - creamos la tabla clientes, vamos a utilizarla como base para practicar la creación de índices.
En primer lugar vamos a crear un índice sobre la columna CIF para que nuestras búsquedas por esta columna sean llo más rapidas posible:
1.CREATE INDEX factura.clientes_idx1 ON factura.clientes (CIF)
2.TABLESPACE FACTURA_IDX01;
Vamos a crear otro índice compuesto por las columnas NombreCli y DireccionCli:
1.CREATE INDEX factura.clientes_idx2 ON factura.clientes (NombreCli, DireccionCli)
2.TABLESPACE FACTURA_IDX01;

Crear  mínimo 4 archivos indices en la base de datos (veterinaria)




Bibliografìa