GNU Info

Info Node: (mysql.info)Windows vs Unix

(mysql.info)Windows vs Unix


Prev: Windows compiling Up: Windows
Enter node , (file) or (file)node

MySQL-Windows Compared to Unix MySQL
....................................

MySQL-Windows has by now proven itself to be very stable. This version
of MySQL has the same features as the corresponding Unix version with
the following exceptions:

*Win95 and threads*
     Win95 leaks about 200 bytes of main memory for each thread
     creation.  Each connection in MySQL creates a new thread, so you
     shouldn't run `mysqld' for an extended time on Win95 if your
     server handles many connections!  WinNT and Win98 don't suffer
     from this bug.

*Concurrent reads*
     MySQL depends on the `pread()' and `pwrite()' calls to be able to
     mix `INSERT' and `SELECT'.  Currently we use mutexes to emulate
     `pread()'/`pwrite()'.  We will, in the long run, replace the file
     level interface with a virtual interface so that we can use the
     `readfile()'/`writefile()' interface on NT to get more speed.  The
     current implementation limits the number of open files MySQL can
     use to 1024, which means that you will not be able to run as many
     concurrent threads on NT as on Unix.

*Blocking read*
     MySQL uses a blocking read for each connection.  This means that:

        * A connection will not be disconnected automatically after 8
          hours, as happens with the Unix version of MySQL.

        * If a connection hangs, it's impossible to break it without
          killing MySQL.

        * `mysqladmin kill' will not work on a sleeping connection.

        * `mysqladmin shutdown' can't abort as long as there are
          sleeping connections.

     We plan to fix this problem when our Windows developers have
     figured out a nice workaround.

*UDF functions*
     For the moment, MySQL-Windows does not support user-definable
     functions.

*`DROP DATABASE'*
     You can't drop a database that is in use by some thread.

*Killing MySQL from the task manager*
     You can't kill MySQL from the task manager or with the shutdown
     utility in Win95.  You must take it down with `mysqladmin
     shutdown'.

*Case-insensitive names*
     Filenames are case insensitive on Windows, so database and table
     names are also case insensitive in MySQL for Windows.  The only
     restriction is that database and table names must be specified
     using the same case throughout a given statement.  Note: Name case
     sensitivity.

*The `\' directory character*
     Pathname components in Win95 are separated by the `\' character,
     which is also the escape character in MySQL.  If you are using
     `LOAD DATA INFILE' or `SELECT ... INTO OUTFILE', you must double
     the `\' character:

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

     Alternatively, use Unix style filenames with `/' characters:

          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' error*
     If you use a MySQL 3.22 version on NT with the newest mysql-clients
     you will get the following error:

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

     This is because the release version of MySQL uses named pipes on NT
     by default.  You can avoid this error by using the
     `--host=localhost' option to the new MySQL clients or create an
     option file `C:\my.cnf' that contains the following information:

          [client]
          host = localhost

     Starting from 3.23.50, named pipes are only enabled if mysqld is
     started with `--enable-named-pipe'.

*`Access denied for user' error*
     If you get the error `Access denied for user: 'some-user@unknown'
     to database 'mysql'' when accessing a MySQL server on the same
     machine, this means that MySQL can't resolve your host name
     properly.

     To fix this, you should create a file `\windows\hosts' with the
     following information:

          127.0.0.1       localhost

*`ALTER TABLE'*
     While you are executing an `ALTER TABLE' statement, the table is
     locked from usage by other threads.  This has to do with the fact
     that on Windows, you can't delete a file that is in use by another
     threads.  (In the future, we may find some way to work around this
     problem.)

*`DROP TABLE' on a table that is in use by a `MERGE' table will not work*
     The `MERGE' handler does its table mapping hidden from MySQL.
     Because Windows doesn't allow you to drop files that are open, you
     first must flush all `MERGE' tables (with `FLUSH TABLES') or drop
     the `MERGE' table before dropping the table.  We will fix this at
     the same time we introduce `VIEW's.

Here are some open issues for anyone who might want to help us with the
Windows release:

   * Make a single-user `MYSQL.DLL' server.  This should include
     everything in a standard MySQL server, except thread creation.
     This will make MySQL much easier to use in applications that don't
     need a true client/server and don't need to access the server from
     other hosts.

   * Add some nice start and shutdown icons to the MySQL installation.

   * Create a tool to manage registry entries for the MySQL startup
     options.  The registry entry reading is already coded into
     `mysqld.cc', but it should be recoded to be more parameter
     oriented.  The tool should also be able to update the `C:\my.cnf'
     option file if the user prefers to use that instead of the
     registry.

   * When registering `mysqld' as a service with `--install' (on NT) it
     would be nice if you could also add default options on the command
     line.  For the moment, the workaround is to list the parameters in
     the `C:\my.cnf' file instead.

   * It would be real nice to be able to kill `mysqld' from the task
     manager.  For the moment, you must use `mysqladmin shutdown'.

   * Port `readline' to Windows for use in the `mysql' command line
     tool.

   * GUI versions of the standard MySQL clients (`mysql', `mysqlshow',
     `mysqladmin', and `mysqldump') would be nice.

   * It would be nice if the socket read and write functions in `net.c'
     were interruptible. This would make it possible to kill open
     threads with `mysqladmin kill' on Windows.

   * `mysqld' always starts in the "C" locale and not in the default
     locale.  We would like to have `mysqld' use the current locale for
     the sort order.

   * Implement UDF functions with `.DLL's.

   * Add macros to use the faster thread-safe increment/decrement
     methods provided by Windows.


Other Windows-specific issues are described in the `README' file that
comes with the MySQL-Windows distribution.


automatically generated by info2www version 1.2.2.9