La siguiente lista describe algunas de las características más importantes del software de base de datos MySQL. Consulte Sección 1.5, “Mapa de desarrollo de MySQL” para más información acerca de las características actuales y próximas.
Interioridades y portabilidad
Escrito en C y en C++
Probado con un amplio rango de compiladores diferentes
Funciona en diferentes plataformas. Consulte Sección 2.1.1, “Sistemas operativos que MySQL soporta”.
Usa GNU Automake, Autoconf, y Libtool para portabilidad.
APIs disponibles para C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, y Tcl. Consulte Capítulo 24, APIs de MySQL.
Uso completo de multi-threaded mediante threads del kernel. Pueden usarse fácilmente multiple CPUs si están disponibles.
Proporciona sistemas de almacenamiento transaccionales y no transaccionales.
                  Usa tablas en disco B-tree (MyISAM)
                  muy rápidas con compresión de índice.
                
Relativamente sencillo de añadir otro sistema de almacenamiento. Esto es útil si desea añadir una interfaz SQL para una base de datos propia.
Un sistema de reserva de memoria muy rápido basado en threads.
Joins muy rápidos usando un multi-join de un paso optimizado.
Tablas hash en memoria, que son usadas como tablas temporales.
Las funciones SQL están implementadas usando una librería altamente optimizada y deben ser tan rápidas como sea posible. Normalmente no hay reserva de memoria tras toda la inicialización para consultas.
El código MySQL se prueba con Purify (un detector de memoria perdida comercial) así como con Valgrind, una herramienta GPL (http://developer.kde.org/~sewardj/).
El servidor está disponible como un programa separado para usar en un entorno de red cliente/servidor. También está disponible como biblioteca y puede ser incrustado (linkado) en aplicaciones autónomas. Dichas aplicaciones pueden usarse por sí mismas o en entornos donde no hay red disponible..
Tipos de columnas
                  Diversos tipos de columnas: enteros con/sin signo de
                  1, 2, 3, 4, y 8 bytes de longitud,
                  FLOAT, DOUBLE,
                  CHAR, VARCHAR,
                  TEXT, BLOB,
                  DATE, TIME,
                  DATETIME,
                  TIMESTAMP, YEAR,
                  SET, ENUM, y
                  tipos espaciales OpenGIS. Consulte
                  Capítulo 11, Tipos de columna.
                
Registros de longitud fija y longitud variable.
Sentencias y funciones
                  Soporte completo para operadores y funciones en las
                  cláusulas de consultas SELECT y
                  WHERE. Por ejemplo:
                
mysql> SELECT CONCAT(first_name, ' ', last_name)
    -> FROM citizen
    -> WHERE income/dependents > 10000 AND age > 30;
                  Soporte completo para las cláusulas SQL
                  GROUP BY y ORDER
                  BY. Soporte de funciones de agrupación
                  (COUNT(), COUNT(DISTINCT
                  ...), AVG(),
                  STD(), SUM(),
                  MAX(), MIN(), y
                  GROUP_CONCAT()).
                
                  Soporte para LEFT OUTER JOIN y
                  RIGHT OUTER JOIN cumpliendo
                  estándares de sintaxis SQL y ODBC.
                
Soporte para alias en tablas y columnas como lo requiere el estándar SQL.
                  DELETE, INSERT,
                  REPLACE, y
                  UPDATE devuelven el número de
                  filas que han cambiado (han sido afectadas). Es
                  posible devolver el número de filas que serían
                  afectadas usando un flag al conectar con el servidor.
                
                  El comando específico de MySQL
                  SHOW puede usarse para obtener
                  información acerca de la base de datos, el motor de
                  base de datos, tablas e índices. El comando
                  EXPLAIN puede usarse para
                  determinar cómo el optimizador resuelve una consulta.
                
                  Los nombres de funciones no colisionan con los nombres
                  de tabla o columna. Por ejemplo,
                  ABS es un nombre válido de
                  columna. La única restricción es que para una
                  llamada a una función, no se permiten espacios entre
                  el nombre de función y el '(' a
                  continuación. Consulte
                  Sección 9.6, “Tratamiento de palabras reservadas en MySQL”.
                
Puede mezclar tablas de distintas bases de datos en la misma consulta (como en MySQL 3.22).
Seguridad
Un sistema de privilegios y contraseñas que es muy flexible y seguro, y que permite verficación basada en el host. Las contraseñas son seguras porque todo el tráfico de contraseñas está encriptado cuando se conecta con un servidor.
Escalabilidad y límites
Soporte a grandes bases de datos. Usamos MySQL Server con bases de datos que contienen 50 millones de registros. También conocemos a usuarios que usan MySQL Server con 60.000 tablas y cerca de 5.000.000.000.000 de registros.
                  Se permiten hasta 64 índices por tabla (32 antes de
                  MySQL 4.1.2). Cada índice puede consistir desde 1
                  hasta 16 columnas o partes de columnas. El máximo
                  ancho de límite son 1000 bytes (500 antes de MySQL
                  4.1.2).Un índice puede usar prefijos de una columna
                  para los tipos de columna CHAR,
                  VARCHAR, BLOB, o
                  TEXT.
                
Conectividad
Los clientes pueden conectar con el servidor MySQL usando sockets TCP/IP en cualquier plataforma. En sistemas Windows de la familia NT (NT,2000,XP, o 2003), los clientes pueden usar named pipes para la conexión. En sistemas Unix, los clientes pueden conectar usando ficheros socket Unix.
                  En MySQL 5.0, los servidores Windows soportan
                  conexiones con memoria compartida si se inicializan
                  con la opción --shared-memory. Los
                  clientes pueden conectar a través de memoria
                  compartida usando la opción
                  --protocol=memory.
                
La interfaz para el conector ODBC (MyODBC) proporciona a MySQL soporte para programas clientes que usen conexiones ODBC (Open Database Connectivity). Por ejemplo, puede usar MS Access para conectar al servidor MySQL. Los clientes pueden ejecutarse en Windows o Unix. El código fuente de MyODBC está disponible. Todas las funciones para ODBC 2.5 están soportadas, así como muchas otras. Consulte Sección 25.1, “MySQL Connector/ODBC”.
La interfaz para el conector J MySQL proporciona soporte para clientes Java que usen conexiones JDBC. Estos clientes pueden ejecutarse en Windows o Unix. El código fuente para el conector J está disponible. Consulte Sección 25.4, “MySQL Connector/J”.
Localización
El servidor puede proporcionar mensajes de error a los clientes en muchos idomas. Consulte Sección 5.9.2, “Escoger el idioma de los mensajes de error”.
                  Soporte completo para distintos conjuntos de
                  caracteres, incluyendo latin1
                  (ISO-8859-1), german,
                  big5, ujis, y
                  más. Por ejemplo, los caracteres escandinavos
                  'â', 'ä' y
                  'ö' están permitidos en nombres
                  de tablas y columnas. El soporte para Unicode está
                  disponible
                
Todos los datos se guardan en el conjunto de caracteres elegido. Todas las comparaciones para columnas normales de cadenas de caracteres son case-insensitive.
La ordenación se realiza acorde al conjunto de caracteres elegido (usando colación Sueca por defecto). Es posible cambiarla cuando arranca el servidor MySQL. Para ver un ejemplo de ordenación muy avanzada, consulte el código Checo de ordenación. MySQL Server soporta diferentes conjuntos de caracteres que deben ser especificados en tiempo de compilación y de ejecución.
Clientes y herramientas
                  MySQL server tiene soporte para comandos SQL para
                  chequear, optimizar, y reparar tablas. Estos comandos
                  están disponibles a través de la línea de comandos
                  y el cliente mysqlcheck. MySQL
                  también incluye myisamchk, una
                  utilidad de línea de comandos muy rápida para
                  efectuar estas operaciones en tablas
                  MyISAM. Consulte
                  Capítulo 5, Administración de bases de datos.
                
                  Todos los programas MySQL pueden invocarse con las
                  opciones --help o
                  -? para obtener asistencia en
                  línea.
                
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

