MySQL para Windows ha demostrado por sí mismo ser muy estable. La versión para Windows de MySQL tiene las mismas características que su contraparte Unix, con las siguientes excepciones:
Windows 95 y los subprocesos
Windows 95 pierde cerca de 200 bytes de memoria principal por cada vez que crea un subproceso. Cada conexión en MySQL crea un nuevo subproceso, de modo que no se debería ejecutar mysqld por un período prolongado de tiempo, en Windows 95, si el servidor va a gestionar muchas conexiones. Otras versiones de Windows no presentan este inconveniente.
Cantidad limitada de puertos
Los sistemas Windows tienen alrededor de 4.000 puertos disponibles para conexiones de clientes, y luego de que una conexión se cierra, el puerto demora entre dos y cuatro minutos en liberarse. En situaciones donde los clientes se conecten y desconecten del servidor frecuentemente, es posible que todos los puertos disponibles se utilicen antes de que los puertos cerrados sean utilizables de nuevo. Si esto ocurre, el servidor MySQL no responderá aun cuando se esté ejecutando. Debe tenerse en cuenta que los puertos pueden ser usados por otras aplicaciones que se ejecuten en el mismo ordenador, en cuyo caso la cantidad de puertos disponibles para MySQL será menor que lo mencionado.
Para más información, consulte http://support.microsoft.com/default.aspx?scid=kb;en-us;196271.
Lecturas simultáneas
MySQL depende de las llamadas del sistema
pread()
y pwrite()
para ser capaz de mezclar INSERT
y
SELECT
. Actualmente se usan mutexes para
emular pread()
y
pwrite()
. Se planea reemplazar en un
futuro la interfaz a nivel de ficheros con una interfaz
virtual, de modo que se pueda utilizar la interfaz
readfile()
/writefile()
en Windows NT, 2000 y XP, para obtener más velocidad. La
implementación actual limita a 2.048 el número de ficheros
abiertos que MySQL 5.0 puede usar, lo cual significa que no
se pueden abrir tantos procesos simultáneos en Windows NT,
2000, XP y 2003 como en Unix.
Bloqueo de lectura
MySQL utiliza un bloqueo de lectura por cada conexión, lo cual tiene los siguientes efectos cuando están habilitadas conexiones named pipe:
Una conexión no es desconectada automáticamente luego de ocho horas, como ocurre en la versión Unix de MySQL.
Si una conexión se congela, no es posible eliminarla sin interrumpir a MySQL.
mysqladmin kill no funciona con una conexión congelada.
mysqladmin shutdown no funciona en tanto haya conexiones congeladas.
Se planea resolver este problema en el futuro.
ALTER
TABLE
Mientras se está ejecutando una sentencia ALTER
TABLE
, la tabla está bloqueada frente al uso por
parte de otros subprocesos. Esto tiene que ver con el hecho
de que en Windows no se puede eliminar un fichero que está
en uso por otro subproceso. En el futuro se podría
encontrar alguna solución a este problema.
DROP
TABLE
Realizar DROP TABLE
sobre una tabla que
está en uso por una tabla MERGE
no
funcionará en Windows porque el manejador
MERGE
oculta el mapeo de la tabla a la
capa superior de MySQL. Debido a que Windows no permite
eliminar archivos que se encuentran abiertos, primero
deberán guardarse los cambios en todas las tablas
MERGE
(con FLUSH
TABLES
) o eliminar la tabla
MERGE
antes de borrar la tabla en
cuestión.
DATA DIRECTORY
e
INDEX DIRECTORY
Las opciones de CREATE TABLE
DATA DIRECTORY
e INDEX
DIRECTORY
se ignoran en Windows, ya que Windows no
soporta vínculos simbólicos. Estas opciones también se
ignoran en otros sistemas operativos que no tengan una
llamada realpath()
funcional.
DROP
DATABASE
No se puede eliminar una base de datos que está siendo utilizada por algún subproceso.
Finalizar MySQL desde el Administrador de Tareas
No es posible finalizar MySQL desde el Administrador de Tareas o con la utilidad shutdown en Windows 95. Se lo debe detener usando mysqladmin shutdown.
Nombres case-insensitive
Los nombres de ficheros no son case sensitive en Windows, por lo tanto tampoco lo son los nombres de bases de datos y tablas. La única restricción es que los nombres de bases de datos y tablas deben ser especificados empleando el mismo esquema de mayúsculas y minúsculas a lo largo de la misma sentencia. Consulte Sección 9.2.2, “Sensibilidad a mayúsuclas y minúsculas de identificadores”.
El separador de rutas
'\
'
En Windows, los componentes de las rutas de directorios
están separados por '\
', el cual es
también el carácter de escape en MySQL. Si se está
utilizando LOAD DATA INFILE
o
SELECT ... INTO OUTFILE
, deben usarse
nombres de ficheros al estilo Unix, separados con caracteres
'/
':
mysql> LOAD DATA INFILE 'C:/tmp/skr.txt' INTO TABLE skr; mysql> SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;
Una alternativa es duplicar el carácter
'\
':
mysql> LOAD DATA INFILE 'C:\\tmp\\skr.txt' INTO TABLE skr; mysql> SELECT * INTO OUTFILE 'C:\\tmp\\skr.txt' FROM skr;
Problemas con pipes.
Los pipes no funcionan confiablemente desde la línea de
comandos de Windows. Si el pipe incluye el carácter
^Z
/ CHAR(24)
, Windows
lo reconocerá como fin de fichero y terminará el programa.
Esto es un problema particularmente cuando se intenta aplicar un fichero de registro (log) binario:
C:\> mysqlbinlog binary-log-name | mysql --user=root
Si ocurre un problema al aplicar el fichero de registro y se
sospecha que es causado por un carácter
^Z
/ CHAR(24)
, puede
intentarse la siguiente solución:
C:\> mysqlbinlog binary-log-file --result-file=/tmp/bin.sql C:\> mysql --user=root --execute "source /tmp/bin.sql"
El último comando tambien puede usarse para leer confiablemente cualquier fichero SQL que pueda contener datos binarios.
Error Access denied for
user
(Acceso denegado a usuario)
Si se intenta ejecutar un programa cliente MySQL para
conectarse a un servidor que funciona en el mismo ordenador,
pero se obtiene el mensaje de error Access denied
for user
'
, significa que MySQL no puede
resolver apropiadamente el nombre del ordenador anfitrión
(host).
algún-usuario
'@'unknown' to
database 'mysql'
Para resolver esto, se debe crear un fichero llamado
\windows\hosts
conteniendo la siguiente
información:
127.0.0.1 localhost
La siguiente es una lista de temas pendientes para aquellos que deseen colaborar en el perfeccionamiento de MySQL para Windows:
Agregar macros para utilizar los métodos de incremento/decremento provistos por Windows, más rápidos y seguros para el trabajo con subprocesos.
É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.