• Aucun résultat trouvé

MySQL pour Windows face `a MySQL pour

Dans le document Manuel MySQL pdf enjeux et pratiques (Page 151-154)

2.6 Notes sp´ecifiques aux syst`emes d’exploitation

2.6.2 Notes relatives `a Windows

2.6.2.7 MySQL pour Windows face `a MySQL pour

MySQL pour Windows a prouv´e qu’il ´etait tr`es stable. Cette version de MySQL a les mˆemes fonctionnalit´es que la version Unix, a quelques exceptions :

Windows 95 et les threads

Windows 95 perf environs 200 octets de m´emoire central lors de la cr´eation de chaque thread. Chaque connexion MySQL cr´ee un nouveau thread, ce qui fait qu’il n’est pas recommand´e d’ex´ecuter mysqld pour des dur´ees longues sur Windows 95 si votre serveur g`ere de nombreuses connexions. Les autres versions de Windows ne souffrent pas du mˆeme probl`eme.

Lectures concurrentes

MySQL d´epends des fonctions pread() et pwrite() pour ˆetre capable de mˆeler des INSERT et des SELECT. Actuellement, nous utilise mutexes pour ´emuler les fonctions pread()/pwrite(). Nous allons, `a long terme, remplacer ce niveau d’interface par une interface virtuelle de fa¸con `a ce que nous puissions utiliser l’interface readfile()/writefile() de Windows NT/2000/XP pour gagner de la vitesse. L’impl´ementation courante limite le nombre de fichiers ouverts par MySQL `a 1024, ce qui signifie que vous ne pouvez pas utiliser d’aussi nombreux threads concurrents sur NT/2000/XP que sur Unix.

Blocking read

• Une connexion ne sera pas d´econnect´ee automatiquement apr`es 8 heures

d’inactivit´e, comme c’est le cas sous Unix.

• Si une connexion se bloque, il est impossible de la d´etruire sans tuer

MySQL.

• mysqladmin kill ne fonctionne pas sur une connexion endormie.

• mysqladmin shutdown ne peut pas s’ex´ecuter tant qu’il y a des connexions

qui dorment.

Nous envisageons de corriger ce probl`eme, lorsque les d´eveloppeurs Windows auront fourni un palliatif.

DROP DATABASE

Vous ne pouvez pas d´etruire une base qui est utilis´ee par un autre thread. Killing MySQL from the task manager

Vous ne pouvez pas tuer MySQL depuis le gestionnaire de tˆache ou avec un utilitaire d’extinction de Windows 95. Vous devez l’´eteindre avec mysqladmin shutdown.

Noms sensibles `a la casse

Les noms de fichiers sont insensibles `a la casse sous Windows, ce qui fait que les noms de tables et de bases ne sont pas sensibles `a la casse pour MySQL sur Windows. La seule restriction est que les noms de tables et de bases doivent ˆetre donn´es avec mˆeme casse dans le nom (tout en majuscules, ou en minuscules). Voir Section 6.1.3 [Name case sensitivity], page 408.

Le caract`ere ‘\’

Les composants d’un chemin sont s´epar´es par le caract`ere ‘\’ sous Windows, qui est aussi le caract`ere de protection de MySQL. Si vous utilisez la com- mande LOAD DATA INFILE ou SELECT ... INTO OUTFILE, vous devez doubler le caract`ere ‘\’ :

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`ere ‘/’ :

mysql> LOAD DATA INFILE "C:/tmp/skr.txt" INTO TABLE skr; mysql> SELECT * INTO OUTFILE ’C:/tmp/skr.txt’ FROM skr; Can’t open named pipe erreur

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ˆu au fait que les versions modernes de MySQL utilisent des pipes nomm´es sous NT, par d´efaut. Pour ´eviter cette erreur, vous devez utiliser l’option --host=localhost sur les nouveaux clients, ou bien cr´eer le fichier d’options ‘C:\my.cnf’, qui contiendra les informations suivantes :

[client]

Depuis la version 3.23.50, les pipes nomm´es sont les seuls activ´es si mysqld est d´emarr´e 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`es au serveur MySQL sur la mˆeme machine, cela signifie que MySQL ne peut r´esoudre proprement votre nom d’hˆote. Pour corriger cela, vous devriez cr´eer un fichier ‘\windows\hosts’ dans l’information suivante :

127.0.0.1 localhost

ALTER TABLE

Lorsque vous ex´ecutez la commande ALTER TABLE, la table est verrouill´e, empˆechant les autres threads d’y acc´eder. Cela est li´e au fait que sous Windows, vous ne pouvez pas effacer un fichier qui est en cours d’utilisation par d’autres threads : `a l’avenir, vous pourrions trouver un moyen de contourner ce probl`eme.

La commande DROP TABLE sur une table qui est utilis´ee dans le cadre d’un MERGE ne fonctionne pas sous Windows, car le gestionnaire de MERGE garde la carte des tables cach´ee de la couche sup´erieure de MySQL. Comme Windows ne vous autorise pas `a effacer des fichiers qui sont ouverts, vous devez d’abord vider de la m´emoire toutes les tables du MERGE (avec la commande FLUSH TABLES) puis effacer la table MERGEavant d’effacer les tables. Nous allons corriger cela lorsque nous introduirons la notion de VIEWs.

Les directives DATA DIRECTORY et INDEX DIRECTORY de CREATE TABLE sont ig- nor´ees sous Windows, car Windows ne supporte pas les liens symboliques. Voici quelques probl`emes connus et pas encore corrig´es, si jamais quelqu’un souhaite nous aider sur la version Windows :

• Mettre en place une librairie pour un utilisateur simple MYSQL.DLL. Elle inclurait toutes

les caract´eristiques d’un serveur MySQL standard, hormis la cr´eation de threads. Cela permettra d’inclure facilement MySQL dans des applications qui n’ont pas vraiment besoin du support client, ou qui n’ont pas besoin d’acc´eder `a un serveur distant.

• Ajouter des icˆones sympas pour le d´emarrage et l’arrˆet de MysQL, dans l’installateur. • Lorsque mysqld est enregistr´e comme service avec --install (sous NT) il serait bien

de pouvoir ajouter les options par d´efaut de la ligne de commande. Pour le moment, le palliatif consiste `a lister les param`etres dans le fichier ‘C:\my.cnf’.

• Il serait vraiment pratique de pouvoir arrˆeter le processus mysqld depuis le gestionnaire

de tˆaches. 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 com-

mande 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’´ecriture sur les sockets de ‘net.c’ pouvaient

ˆetre interrompues. Cela rendrait possible l’arrˆet des threads en court avec mysqladmin kill sous Windows.

• mysqld se lance toujours avec la locale "C" et non pas avec la locale par d´efaut. Nous

voulons que mysqld utilise la configuration de localisation pour l’ordre de tri.

• Ajouter des macros pour utiliser les m´ethodes rapides d’incr´ement/d´ecr´ement compat-

ibles avec les threads, fourni par Windows.

D’autres sp´ecificit´es de Windows sont d´ecrites dans le fichier ‘README’ qui est livr´e avec la distribution Windows de MySQL.

Dans le document Manuel MySQL pdf enjeux et pratiques (Page 151-154)