Está en la página 1de 13

6.1 Introduccin 6.1.

1 Definicin DBMS Database Management System Coleccin de datos interrelacionados y un conjunto de programas para acceder a eso s datos 6.1.2 Componentes de un DBMS Data definition language (DDL): Define elementos de los datos en la base de datos Data manipulation language (DML): Manipula datos para aplicaciones Data dictionary: Definiciones de todas las variables en la base 6.2 DBMS ms populares 6.2.1 Ejemplos Logo Nombre URL Productos Sybase www.sybase.com Adaptive Server Oracle www.oracle.com Oracle8, Oracle8i, Oracle8iEE, Oracle9i, Oracle 10g PostgreSQL www.postgresql.org PostgreSQL Microsoft www.microsoft.com Access, MS-SQL Server MySQL www.mysql.com MySQL Informix www.informix.com Illustra, Universal Server, Dynamic Server IBM www.ibm.com DB2 Apache http://db.apache.org/derby Derby SQLite http://www.sqlite.org SQLite Firebird http://firebird.sourceforge.net Firebird

6.2.2 Principales Diferencias entre DBMS 6.2.2.1 Diferencias Costo Gratuitos: MySQL, PostgreSQL, mSQL, Interbase Comerciales: DB2, Sybase, Informix, Oracle Otros de dominio pblico: http://www.faqs.org/faqs/databases/free-databases/ Tcnicas Sub-selects Select into table Transactions UDF (user defined functions) Foreign keys Views Tipos de Datos Manejo de memoria (Virtual Memory, Shared Memory) Manejo de disco (Archivos, Chunks) 6.2.2.2 Costos de Oracle (2000) Cotizando Oracle Example 1: You are licensing the Oracle8iEE for a computer which has 2 - 400MHz RISC processors. How many Universal Power Units do you need? (1 computer x 2 processors * 400MHz * 1.5 (RISC Factor) = 1,200 Universal Power Units for each program that you license for this computer. Example 2: You are licensing Oracle8iEE for your entire environment 4 Intel computers each with a 550MHz Intel processor; 1 computer with 8 - 400MHz RISC processors. How many Universal Power Units do you need? 4 computers x 1 processor x 550MHz x 1.0 (Intel Factor)=2,200 UPU 1 computer x 8 processors x 400MHz x 1.5 (RISC Factor)=4,800 UPU Total: 7,000 UP U Example 3: You have a mainframe computer that has 200 MIPS and are licensing Ora cle8iEE. How many Universal Power Units do you need? 1 computer x 200 MIPS x 24 (Mainframe Factor) = 4,800 UPUs are required Pricing Case 1 For Oracle 8i (you can get 5%-10% off the list price, but that about it) take th e UPU and muiltiply by: Perpetual $15.00 4 Year(lease) 9.00 2 year (lease) 5.25 Example: 2 Sun ULTRA10 with 450mhz 2*450*1.5=1350 upu 1350upu*$15= $20,500 usd And do not forget about 15% or so per year for support. Support (each year) $ 3,075 usd Case 2 Now if you have more than 2 cpu's (they force you) or want Oracle 8iEE (all the good stuff) Perpetual $100.00 4 Year(lease) 60.00 2 year (lease) 35.00 1350upu* $100= $ 135,000 usd for 8iEE And do not forget about 15% or so per year for support. Support (each year) $ 20,250 usd

Ms cotizaciones de Oracle aqu 6.2.2.3 Escogiendo la combinacin perfecta Consideraciones al elegir un DBMS Nmero de usuarios Nmero de transacciones Cantidad de datos para almacenar Consistencia en la informacin Presupuesto Experiencia propia o externa* *SQL Server, Informix, Oracle SQL server is OK for very small installations. Do not try to run a major organization on this product. If horsepower (CPU number crunching for example) is required, move on to the real relation databases. Oracle is popular, expensive, global in its reach, and can do most any thing you need, (for a small fee). It tends to be more labour intensive then INFORMIX, and from my experience crashes far too often for my taste. You will hardly ever find an Oracle DBA alone. Be careful, because Oracle has the best marketing going right now, not necessarily the best product. Sort of like MS. Informix is fast, scalable ,affordable,stable if you have good code and does not require a herd of DBA's to keep the database operational. Set it up on good hardware and leave it alone. Case in point: Walmart runs every store and their Corp offices on INFORMIX databases. There are several thousand servers involved, all managed by less then 10 fulltime DBA's. Take a look at the number of DBA's in an average Oracle shop and please note they are all very busy, all the time. Best thing to do is get some loaner boxes and try them both. One Consultant/DBA's opinion 6.3 Arquitectura de un manejador de bases de datos (DBMS) Nota: Las partes utilizadas para ejemplificar la arquitectura se refieren a Orac le Una base de datos en ejecucin consta de 3 cosas: Archivos Control (ctl): almacenan informacin acerca de la estructura de archivos de la bas e. Rollback (rbs): cuando se modifica el valor de alguna tupla en una transaccin, lo s valores nuevos y anteriores se almacenan en un archivo, de modo que si ocurre algn error, se puede regresar (rollback) a un estado anterior. Redo (rdo): bitcora de toda transaccin, en muchos dbms incluye todo tipo de consul ta incluyendo aquellas que no modifican los datos. Datos (dbf): el tipo ms comn, almacena la informacin que es accesada en la base de datos. Indices (dbf) (dbi): archivos hermanos de los datos para acceso rpido. Temp (tmp): localidades en disco dedicadas a operaciones de ordenamiento o algun a actividad particular que requiera espacio temporal adicional. Memoria Shared Global Area (SGA): es el rea ms grande de memoria y quizs el ms importante Shared Pool: es una cach que mejora el rendimiento ya que almacena parte del dicc ionario de datos y el parsing de algunas consultas en SQL Redo Log Buffer: contiene un registro de todas las transacciones dentro de la ba se, las cuales se almacenan en el respectivo archivo de Redo y en caso de sinies tro se vuelven a ejecutar aquellos cambios que an no se hayan reflejado en el arc hivo de datos (commit). Large Pool: espacio adicional, generalmente usado en casos de multithreading y e sclavos de I/O. Java Pool: usado principalmente para almacenar objetos Java Program Global Area (PGA): informacin del estado de cursores/apuntadores User Global Area(UGA): informacin de sesin, espacio de stack Procesos Threading

System Monitor: despierta peridicamente y realiza algunas actividades entre las q ue se encuentran la recuperacin de errores, recuperacin de espacio libre en tables paces y en segmentos temporales. Process Monitor: limpia aquellos procesos que el usuario termina de manera anorm al, verificando consistencias, liberacin de recursos, bloqueos. Database Writer: escribe bloques de datos modificados del buffer al disco, aquel las transacciones que llegan a un estado de commit. Log Writer: escribe todo lo que se encuentra en el redo log buffer hacia el redo file Checkpoint: sincroniza todo lo que se tenga en memoria, con sus correspondientes archivos en disco Instancia de una bd en Oracle Rotacin de segmentos de rollback Rotacin de bitcoras de Redo Ejemplo del esquema de una base de datos en Oracle Utilizacin del Shared Pool Ejemplo del control de transaccin 6.4 Tipos de instancias de un DBMS Online Transaction Processing (OLTP): compra/venta, telemarketing Segmentos cortos de rollback Shared Pool muy largo Redo log suficiente Indices en discos separados Segmentos temporales pequeos Decision Support Systems (DSS): datawarehouse Segmentos largos de rollback Shared Pool relativamente corto Redo log suficiente Indices apropiados Segmentos largos de temporal Parallel Query en la medida de lo posible (si est disponible) Por otro lado un dbms puede ser implantado de 2 formas: Cliente-Servidor Three tier Implantacin Cliente-Servidor de un DBMS Implantacin 3 Tier de un DBMS Finalmente, tambin se puede considerar la opcin de crear clusters de mquinas o disc os para poder brindar disponibilidad y escalabilidad. Existen 2 tipos de cluster s: SharedNothing: explota mejor hardware econmico casi ilimitada escalabilidad trabaja bien en ambientes r-w los datos estn particionados a travs del cluster ShareNothing Cluster SharedDisk: adaptabilidad para el balance de cargas gran disponibilidad se desempea mejor en ambientes de solo r los datos no necesitan particionarse

DiskShared Cluster 6.5 Administracin de un DBMS real 6.5.1 MySQL MySQL (pronunciado mai-es-quiu-el), es una manejador de bases de datos relaciona l bastante robusto, de cdigo abierto bajo la licencia GPL el cual se ha convertid o en el ms popular hoy en da. Su origen se debi a la bsqueda por parte de los fundadores de crear un manejador d e bases de datos que fuera "rpido", todava ms rapido que mSQL. As surgi MySQL, primer o como un producto de la empresa y despes como software de dominio pblico. El nombre de My se debe probablemente a que la hija del cofundador Monty Wideniu s reciba ese sobrenombre, aunque a ciencia cierta nunca se ha revelado el origen. Por otro lado en el ao 2002 MySQL tuvo un logo ms original que el simple nombre, incluyendo un delfn, el cual a travs de una encuesta en la pgina web recibi su nombr e: "Sakila", de origen africano. 6.5.1.1 Por qu usar MySQL ? Es importante resaltar que no se trata de una herramienta de juguete o aprendiza je, MySQL es un manejador que puede competir competir con sus famosas contrapart es comerciales: Oracle, DB2, Informix, Sybase. Bsicamente los motivos por los cuales se podra optar por usar MySQL en lugar de ot ro manejador seran: Es gratis Es extensible Es robusto Es rpido No requiere de una gran nmero de recursos para funcionar (obviamente para aplicac iones a gran escala es mejor contar con una buena infraestructura) Es fcil de administrar 6.5.1.2 Instalacin Bsica MySQL posee varias versiones 3, 4 y 5 siendo la 3 la ms estable y la 5 la ms exper imental Los cambios en la versin 4 permiten tener mayor funcionalidad, teniendo por ejemp lo queries anidados y bsquedas a texto completo. MySQL posee 4 tipos de tablas (y en consecuencia de ndices): Index Versin MyISAM Standard, Max Heap Standard, Max BerkeleyDB Max Innodb Max Tabla 3.1 Indexamiento en MySQL MyISAM se basa en un indexamiento por bloques, Heap es una tabla que existe solo en memoria, mientras que BDB e InnoDB utilizan B-Trees. Se puede observar que existen 2 variantes del software, la Standard y la Max; la diferencia radica en el soporte de transacciones que es posible en la versin Max gracias a los mdulos de Berkeley DB e InnoDB incorporados en ella. Es importante resaltar que aunque esta funcionalidad esta disponible no es la co nfiguracin por default, salvo que se indique lo contrario, siempre tipo de indexa miento por defecto ser MyISAM. El equipo MySQL recomienda bajar los binarios compilados por ellos para evitar c ualquier tipo de problema, de manera que en la seccin de "Database Server" se pue de bajar el binario de la versin deseada. Una vez descargado el software se procede a desempaquetarlo (.tgz, zip) o bien e jecutar el .exe correspondiente. Dichos directorios contenidos en un directorio que por lo general lleva el mismo nombre 'mysql' contiene una estructura de la siguiente manera: bin: programas ejecutables, mysql, mysqld, mysqldump, myisamchk, mysqlbinlog.

include, lib, libexec: libreras y encabezados para programar en C/C++ mysql-test, sql-bench: pruebas y benchmarks var data: estructura de todas las bases y datos de las tablas tipo MyISAM y Berk eley DB. man: pginas de manual share: informacin en distintos idiomas support-files: archivos de configuracin y scripts de arranque automtico Antes de poder ejecutar el demonio (o guardin) del manejador, es conveniente real izar una configuracin, para ello se tiene que editar alguno de los archivos .cnf, los cuales se encuentran ubicados en el directorio raz de mysql o bien en el dir ectorio support-files. El archivo elegido dependera de la configuracin de la mquin a (small, medium, large, huge), cada archivo provee informacin acerca de la memor ia apropiada para cada configuracin. La tabla 3.2 muestra un ejemplo de configura cin para una arquitectura media. Parte de la tarea de configuracin es habilitar el soporte de InnoDB, configurando cada una de las variables de acuerdo a lo propuesto en 3.2, desde luego los asp ectos ms importantes sern los buffers # Example mysql config file for medium systems. # # This is for a system with little memory (32M - 64M) where MySQL plays # a important part and systems up to 128M very MySQL is used together with # other programs (like a web server) # # You can copy this file to # /etc/mf.cnf to set global options, # mysql-data-dir/my.cnf to set server-specific options (in this # installation this directory is /centia01/develop/database/mysql/var) or # ~/.my.cnf to set user-specific options. # # One can in this file use all long options that the program supports. # If you want to know which options a program support, run the program # with --help option. # The following options will be passed to all MySQL clients [client] #password = your_password port = 3306 socket = /tmp/mysql.sock # Here follows entries for some specific programs # The MySQL server [mysqld] port = 3306 socket = /tmp/mysql.sock skip-locking set-variable = key_buffer=64M set-variable = max_allowed_packet=256M set-variable = table_cache=64 set-variable = sort_buffer=512K set-variable = net_buffer_length=8K set-variable = myisam_sort_buffer_size=16M set-variable = max_connections=500 set-variable = interactive_timeout=604800 set-variable = wait_timeout=604800 log-bin server-id = 1 set-variable=default_table_type=innodb # Point the following paths to different dedicated disks tmpdir = /var/tmp/ #log-update = /centia01/final/database/mysql/var/log-catarina # Uncomment the following if you are using BDB tables set-variable = bdb_cache_size=4M

set-variable = bdb_max_lock=10000 # Uncomment the following if you are using Innobase tables innodb_data_file_path = ibdata1:30G:autoextend innodb_data_home_dir = /database/mysql/innodb innodb_log_group_home_dir = /database/mysql/innodb innodb_log_arch_dir = /database/mysql/innodb set-variable = innodb_mirrored_log_groups=1 set-variable = innodb_log_files_in_group=3 set-variable = innodb_log_file_size=5M set-variable = innodb_log_buffer_size=16M innodb_flush_log_at_trx_commit=1 innodb_log_archive=0 set-variable = innodb_buffer_pool_size=256M set-variable = innodb_additional_mem_pool_size=256M set-variable = innodb_file_io_threads=4 set-variable = innodb_lock_wait_timeout=50 #set-variable = innodb_force_recovery=3 [mysqldump] quick set-variable = max_allowed_packet=256M [mysql] prompt=(\u) [\d]>\_ no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates [isamchk] set-variable = key_buffer=20M set-variable = sort_buffer=20M set-variable = read_buffer=2M set-variable = write_buffer=2M [myisamchk] set-variable = key_buffer=20M set-variable = sort_buffer=20M set-variable = read_buffer=2M set-variable = write_buffer=2M [mysqlhotcopy] interactive-timeout Tabla 3.2 Archivo de Configuracin my.cnf, my.ini 6.5.1.3 Arranque y Terminacin Arranque del manejador Una vez configurado se puede iniciar el demonio del dbms a travs del comando "mys qld" o alguna de sus variantes "safe_mysqld", "mysqld-max" Esto se puede hacer desde cualquier terminal y se pueden pasar como parametros a lgunas de las mismas variables disponibles para configuracin (en caso de necesita r alguna opcin particular) Terminacin del manejador Se puede hacer de 2 maneras a) Usando el comando "mysqladmin shutdown" b) Matando el proceso asociado 6.5.1.4 Creacin de bases y cuentas de usuario La tabla 3.3 muestra la manera en que cualquier usuario puede conectarse a la ba se llamada 'mysql' con el usuario 'root', para ello es indispensable contar con el password correspondiente; como se presentar ms adelante la cuenta del super usu ario 'root' se administra de manera similar que los dems usuario. [digital@pcproal digital]$ mysql -u root -p mysql Enter password: **** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 4.1.0-alpha-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

(root) [mysql]> Tabla 3.3 Conexin con el dbms La tabla 3.4 muestra las tablas correspondientes a la base principal y que admin istra todos los usuarios, mquinas y bases permitidas en el manejador, recordando que se trata de un esquema relacional en el cual por ejemplo los usuarios se enc uentran vinculados son bases de datos, de manera que no pueden existir problemas de seguridad al haber algun usuario malintencionado que pretenda modificar una base a la cual no tenga acceso. (root) [mysql]> show databases; +------------+ | Database | +------------+ | mysql | +------------+ 1 rows in set (0.12 sec) (root) [mysql]> show tables; +-----------------+ | Tables_in_mysql | +-----------------+ | columns_priv | | db | | func | | help_category | | help_relation | | help_topic | | host | | tables_priv | | user | +-----------------+ 9 rows in set (0.10 sec) Tabla 3.4 Tablas de administracin del dbms Para cada tabla se puede emplear el comando 'desc' o 'describe' para analizar la estructura de cada tabla y apreciar la relacin que tiene con las dems. Para dar de un alta un usuario, ejemplo de la tabla 3.5, se debe crear el usuari o dentro de la tabla 'user', crear la base de datos y posteriormente asociar dic ho usuario con la base en la tabla 'bd', todo lo anterior utilizando instruccion es de SQL tradicionales. (root) [mysql]> desc user; +-----------------------+-----------------------------------+------------------+------+-----+---------+-------+ | Field | Type | Collation | Null | Key | Default | Extra | +-----------------------+-----------------------------------+------------------+------+-----+---------+-------+ | Host | varchar(60) binary | binary | | PRI | | | | User | varchar(16) binary | binary | | PRI | | | | Password | varchar(45) binary | binary | | | | | | Select_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Insert_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Update_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Delete_priv | enum('N','Y') | latin1_swedish_ci

| | | N | | | Create_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Drop_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Reload_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Shutdown_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Process_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | File_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Grant_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | References_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Index_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Alter_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Show_db_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Super_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Create_tmp_table_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Lock_tables_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Execute_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Repl_slave_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Repl_client_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | ssl_type | enum('','ANY','X509','SPECIFIED') | latin1_swedish_ci | | | | | | ssl_cipher | blob | binary | | | | | | x509_issuer | blob | binary | | | | | | x509_subject | blob | binary | | | | | | max_questions | int(11) unsigned | binary | | | 0 | | | max_updates | int(11) unsigned | binary | | | 0 | | | max_connections | int(11) unsigned | binary | | | 0 | | +-----------------------+-----------------------------------+------------------+------+-----+---------+-------+ 31 rows in set (0.00 sec) (root) [mysql]> desc db; +-----------------------+-----------------+-------------------+------+-----+--------+-------+ | Field | Type | Collation | Null | Key | Def ault | Extra | +-----------------------+-----------------+-------------------+------+-----+--------+-------+

| Host | char(60) binary | binary | | PRI | | | | Db | char(64) binary | binary | | PRI | | | | User | char(16) binary | binary | | PRI | | | | Select_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Insert_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Update_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Delete_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Create_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Drop_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Grant_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | References_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Index_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Alter_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Create_tmp_table_priv | enum('N','Y') | latin1_swedish_ci | | | N | | | Lock_tables_priv | enum('N','Y') | latin1_swedish_ci | | | N | | +-----------------------+-----------------+-------------------+------+-----+--------+-------+ (root) [mysql]> insert into user (host,user,password) values ('%','carlos',passw ord('lolo')); Query OK, 1 row affected (0.07 sec) (root) [mysql]> select * from user where user='carlos'; +------+--------+-----------------------------------------------+-------------+------------+-------------+-------------+ | Host | User | Password | Select_priv | Insert_priv | Update_priv | Delete_priv | +------+--------+-----------------------------------------------+-------------+------------+-------------+-------------+ | % | carlos | *87f0212af7420ce3e0b2b8992eb42dda4be54c9125b3 | N | N | N | N | +------+--------+-----------------------------------------------+-------------+------------+-------------+-------------+ 1 row in set (0.00 sec) (root) [mysql]> create database prueba; Query OK, 1 row affected (0.00 sec) (root) [mysql]> insert into db values ('%','prueba','carlos','Y','Y','Y','Y','Y' ,'Y','Y','Y','Y','Y','Y','Y'); Query OK, 1 row affected (0.00 sec) (root) [mysql]> select * from db where user='carlos'; +------+--------+--------+-------------+-------------+-------------+------------

-+ | Host | Db | User | Select_priv | Insert_priv | Update_priv | Delete_priv | +------+--------+--------+-------------+-------------+-------------+------------+ | % | prueba | carlos | Y | Y | Y | Y | +------+--------+--------+-------------+-------------+-------------+------------+ 1 row in set (0.09 sec) (root) [mysql]> flush privileges; Query OK, 0 rows affected (0.07 sec) Tabla 3.5 Creacin de una cuenta de usuario 6.5.1.5 Utilizacin de la base de datos SQL MySQL cumple con el estndar SQL92. Es importante resaltar que aunque no implement a todas las funciones que otros manejadores poseen, es posible realizar cualquie r consulta usando los distintos tipos de joins o inclusive a travs de tablas temp orales. [digital@pcproal digital]$ mysql -u carlos -p prueba Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 to server version: 4.1.0-alpha-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. (carlos) [prueba]> show tables; Empty set (0.00 sec)

(carlos) [prueba]> create table auser (id int primary key, last_name char(255),f irst_name char(255)); Query OK, 0 rows affected (0.07 sec) (carlos) [prueba]> show tables; +------------------+ | Tables_in_prueba | +------------------+ | auser | +------------------+ 1 row in set (0.00 sec) (carlos) [prueba]> insert into auser values (1,'proal','carlos'); Query OK, 1 row affected (0.00 sec)

(carlos) [prueba]> select * from auser; +----+-----------+------------+ | id | last_name | first_name | +----+-----------+------------+ | 1 | proal | carlos | +----+-----------+------------+ 1 row in set (0.08 sec) Tabla 3.6 Ejemplos de SQL Creacin de ndices La sintxis de creacin de ndices no est considerada como un estndar, as que vara en cad dbms, ej. create index index_name on table_name (atrib_1,..atrib_n);

En el caso partcular de MySQL toda llave primaria est asociada a un ndice, as que no se requiere crear un ndice adicional para dicho propsito. Por otro lado si se crea un ndice X que contiene a los atributos (a,b,c) ya no es necesario crear un ndice para el caso de hacer una consulta que slo involucre a ( a) o (a,b) ya que se emplear el mismo ndice X; para saber con certeza qu ndices de e stn empleando en una consulta se puede recurrir a la expresin de 'explain'. (carlos) [prueba]> create index iname on auser(last_name,first_name); Query OK, 1 row affected (0.15 sec) Records: 1 Duplicates: 0 Warnings: 0 (carlos) [prueba]> show index from auser; +-------+------------+----------+--------------+-------------+-----------+------------+----------+--------+------+------------+---------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardi nality | Sub_part | Packed | Null | Index_type | Comment | +-------+------------+----------+--------------+-------------+-----------+------------+----------+--------+------+------------+---------+ | auser | 0 | PRIMARY | 1 | id | A | 1 | NULL | NULL | | BTREE | | | auser | 1 | iname | 1 | last_name | A | 1 | NULL | NULL | YES | BTREE | | | auser | 1 | iname | 2 | first_name | A | 1 | NULL | NULL | YES | BTREE | | +-------+------------+----------+--------------+-------------+-----------+------------+----------+--------+------+------------+---------+ 3 rows in set (0.00 sec) (carlos) [prueba]> explain select * from auser where last_name='aguilar'; +----+-------------+-------+------+---------------+-------+---------+-------+-----+--------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | ro ws | Extra | +----+-------------+-------+------+---------------+-------+---------+-------+-----+--------------------------+ | 1 | SIMPLE | auser | ref | iname | iname | 256 | const | 1 | Using where; Using index | +----+-------------+-------+------+---------------+-------+---------+-------+-----+--------------------------+ 1 row in set (0.08 sec) Tabla 3.7 Empleo de ndices Mantenimiento y monitoreo de la base Actividad Comando Revisar el estado de las tablas show table status; Los procesos que estn ejecutndose show processlist; Variables con las que se est ejecutando la instancia show variables; Estado actual de innodb; show innodb status; Respaldos La manera usual de hacer un respaldo es usando el comando mysqldump, que posee m uchas opciones que permiten duplicar todas las base, una base en particular, una tabla, solo los datos, solo la estructura, etc. Para obtener un respaldo completo de una base [digital@pcproal digital]$ mysqldump --opt -u carlos -p prueba > prueba.bak Para restaurar un respaldo completo de una base

[digital@pcproal digital]$ mysql -u carlos -p prueba < prueba.bak Otra manera de hacer respaldos es atravs del comando "select into" y restaurar lo s datos con "mysqlimport" o "load data infile".

También podría gustarte