• Aucun résultat trouvé

Sommaire 27 Historique des changements MySQL

2.2 Installation standard rapide de MySQL

2.2.1 Installer MySQL sous Windows

2.2.1.10 MySQL pour Windows face à MySQL pour Un

MySQL pour Windows a prouvé qu'il était très stable. Cette version de MySQL a les mêmes fonctionnalités que la version Unix, a quelques exceptions :

Windows 95 et les threads

Windows 95 perd environs 200 octets de mémoire central lors de la création de chaque thread. Chaque connexion MySQL crée un nouveau thread, ce qui fait qu'il n'est pas recommandé d'exécuter mysqld

pour des durées longues sur Windows 95 si votre serveur gère de nombreuses connexions. Les autres versions de Windows ne souffrent pas du même problème.

Nombre limités de ports de connexions

Les systèmes Windows disposent d'environs 4,000 pour les connexions clientes, et après connexion, cela prend de 2 à 4 minutes avant qu'un port soit de nouveau utilisable. Dans des situations où les clients se connectent et se déconnectent à haute vitesse, il est possible que tous les ports soient utilisés, avant que les anciens ports ne redeviennent utilisables. Lorsque cela arrive, le serveur semblera

inaccessible, même s'il fonctionne bien. Notez que des ports peuvent aussi être utilisées par d'autres applications, ce qui réduit encore le nombre de ports disponibles pour MySQL.

Lectures concurrentes

MySQL dépends des fonctions pread()

et pwrite()

pour être capable de mêler des INSERT

et des SELECT

. Actuellement, nous utilisons les mutexes

pour émuler les fonctions pread()

/

pwrite()

. Nous allons, à long terme, remplacer ce niveau d'interface par une interface virtuelle de façon à ce que nous puissions utiliser l'interface readfile()

/ writefile()

de

Windows NT/2000/XP

pour gagner de la vitesse. L'implémentation courante limite le nombre de fichiers ouverts par MySQL à 1024, ce qui signifie que vous ne pouvez pas utiliser d'aussi nombreux threads concurrents sur Windows NT/2000/XP

que sur Unix.

Blocking read

MySQL utilise une lecture bloquée pour chaque connexion. Cela signifie que : Une connexion ne sera pas déconnectée automatiquement après 8 heures d'inactivité, comme c'est le cas sous Unix.

Si une connexion se bloque, il est impossible de la détruire sans tuer MySQL.

mysqladmin kill

ne fonctionne pas sur une connexion endormie.

mysqladmin shutdown

ne peut pas s'exécuter tant qu'il y a des connexions qui dorment.

Nous envisageons de corriger ce problème, lorsque les développeurs Windows auront fourni un palliatif.

DROP DATABASE

Vous ne pouvez pas détruire une base qui est utilisée par un autre thread.

Interrompre MySQL depuis le gestionnaire de tâches

Vous ne pouvez pas tuer MySQL depuis le gestionnaire de tâche ou avec un utilitaire d'extinction de Windows 95. Vous devez l'éteindre avec mysqladmin shutdown

.

Noms sensibles à la casse

Les noms de fichiers sont insensibles à la casse sous Windows, ce qui fait que les noms de tables et de bases ne sont pas sensibles à la casse pour MySQL sur Windows. La seule restriction est que les noms de tables et de bases doivent être donnés avec même casse dans le nom (tout en majuscules, ou en minuscules). Identifier Case Sensitivity .

Le caractère '\'

Les composants d'un chemin sont séparés par le caractère '\'

sous Windows, qui est aussi le caractère de protection de MySQL. Si vous utilisez la commande LOAD DATA INFILE

ou SELECT ... INTO OUTFILE

, vous devez doubler le caractère '\'

:

mysql> LOAD DATA INFILE "C:\\tmp\\skr.txt" INTO TABLE skr; mysql> SELECT * INTO OUTFILE 'C:\\tmp\\skr.txt' FROM skr;

Alternativement, vous pouvez utiliser les noms de fichiers au format Unix, avec le caractère '/'

:

mysql> LOAD DATA INFILE "C:/tmp/skr.txt" INTO TABLE skr; mysql> SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;

Problèmes avec les pipes

Les pipes ne fonctionnent pas de manière fiables depuis la ligne de commande Windows. Si le pipe reçoit un caractère ^Z

/ CHAR(24)

, Windows va croire qu'il atteind la fin du fichier et arrête le programme.

C'est un problème, notamment lorsque vous essayez d'utiliser le log binaire de cette manière :

mysqlbinlog binary−log−name | mysql −−user=root

Si vous rencontrez un problème lors de l'utilisation du log, et que vous pensez que c'est à cause du caractère ^Z

/ CHAR(24)

, vous pouvez utiliser le palliatif suivant :

mysqlbinlog binary−log−file −−result−file=/tmp/bin.sql mysql −−user=root −−execute "source /tmp/bin.sql"

Cette dernière commande peut aussi être utilisée pour lire fiablement tout fichier SQL qui contient des données binaires.

L'erreur Can't open named pipe

Si vous utilisez MySQL 3.22 sous NT

avec les derniers clients mysql, vous allez obtenir cette erreur :

error 2017: can't open named pipe to host: . pipe...

Ceci est dû au fait que les versions modernes de MySQL utilisent des pipes nommés sous NT

, par défaut. Pour éviter cette erreur, vous devez utiliser l'option −−host=localhost

sur les nouveaux clients, ou bien créer le fichier d'options C:\my.cnf

, qui contiendra les informations suivantes :

[client] host = localhost

Depuis la version 3.23.50, les pipes nommés sont les seuls activés si mysqld

est démarré avec −−enable−named−pipe

.

Erreur Access denied for user

Si vous rencontrez l'erreur Access denied for user: 'utilisateur@unknown' to database 'mysql'

lors de l'accès au serveur MySQL sur la même machine, cela signifie que MySQL ne peut résoudre proprement votre nom d'hôte.Pour corriger cela, vous devriez créer un fichier \windows\hosts

dans l'information suivante :

127.0.0.1 localhost ALTER TABLE

Lorsque vous exécutez la commande ALTER TABLE

, la table est verrouillé, empêchant les autres threads d'y accéder. Cela est lié au fait que sous Windows, vous ne pouvez pas effacer un fichier qui est en cours d'utilisation par d'autres threads : à l'avenir, vous pourrions trouver un moyen de contourner ce problème.

DROP TABLE

La commande DROP TABLE

sur une table qui est utilisée dans le cadre d'un MERGE

ne fonctionne pas sous Windows, car le gestionnaire de MERGE

garde la carte des tables cachée de la couche supérieure de MySQL. Comme Windows ne vous autorise pas à effacer des fichiers qui sont ouverts, vous devez d'abord vider de la mémoire toutes les tables du MERGE

(avec la commande FLUSH TABLES

) puis effacer la table MERGE

avant d'effacer les tables. Nous allons corriger cela lorsque nous introduirons la notion de VIEW

s.

DATA DIRECTORY

et INDEX DIRECTORY

Les directives DATA DIRECTORY

et INDEX DIRECTORY

de CREATE TABLE

sont ignorées sous Windows, car Windows ne supporte pas les liens symboliques.

Voici quelques problèmes connus et pas encore corrigés, si jamais quelqu'un souhaite nous aider sur la version Windows :

Ajouter des icônes pour le démarrage et l'arrêt de MySQL, dans l'installateur.

Il serait vraiment pratique de pouvoir arrêter le processus mysqld

depuis le gestionnaire de tâches. Pour le moment, il faut passer par mysqladmin shutdown

.

Le port de readline

sur Windows pour pouvoir l'utiliser avec l'outil de ligne de commande mysql

.

Des versions graphiques des clients standards MySQL ( mysql

, mysqlshow , mysqladmin et mysqldump ) seraient bien. •

Il serait bien si les fonctions de lecture et d'écriture sur les sockets de net.c

pouvaient être interrompues. Cela rendrait possible l'arrêt des threads en court avec mysqladmin kill

sous Windows.

Ajouter des macros pour utiliser les méthodes rapides d'incrément/décrément compatibles avec les threads, fourni par Windows.