На настоящий момент версия MySQL под Windows зарекомендовала себя как весьма устойчивая. Возможности этой версии и версии под Unix аналогичны, за исключением следующих моментов:
Windows 95 и потоки
При создании каждого потока в
Windows 95 теряется приблизительно
200 байтов основной памяти. А
поскольку каждое соединение с
MySQL создает новый поток, на Windows
95 не следует запускать
mysqld на
продолжительное время, если ваш
сервер обрабатывает много
соединений! Другие версии Windows
не подвержены этой ошибке.
Параллельное чтение
Для обработки смешанных
запросов SELECT и
INSERT в MySQL
используются функции
pread() и pwrite().
В настоящее время для эмуляции
pread()/pwrite()
мы применяем mutex'ы. Однако в наши
планы на будущее входит замена
интерфейса файлового уровня
виртуальным интерфейсом, чтобы
иметь возможность использовать
интерфейс
readfile()/writefile()
на NT/2000/XP - с целью ускорения
работы. В текущей реализации
число одновременно открытых в
MySQL файлов не может быть больше
1024; это означает, что вы не
сможете создать такое же
количество одновременных
соединений с MySQL в NT/2000/XP, как в
Unix.
Чтение с блокировкой
В MySQL для каждого соединения используется чтение с блокировкой. Это означает, что:
Соединение не будет автоматически закрыто по истечении 8 часов, как в случае Unix-версии MySQL.
В случае ``зависания'' соединения невозможно оборвать его без остановки MySQL.
mysqladmin kill не
работает для ``спящих''
соединений
mysqladmin shutdown не
может отработать до тех пор,
пока существуют ``спящие''
соединения.
Перечисленные проблемы мы планируем решить, когда наши разработчики под Windows придумают изящный способ их решения.
DROP DATABASE
Нельзя удалить базу данных, если она используется каким-либо потоком.
Остановка MySQL из диспетчера задач
В Windows 95 нельзя остановить MySQL из
диспетчера задач или с помощью
инструментальной программы
shutdown; это можно
сделать с помощью mysqladmin
shutdown.
Имена, не зависящие от регистра символов
Имена файлов в Windows не зависят от регистра символов, поэтому имена таблиц и баз данных в MySQL под Windows также не зависимы от регистра. Единственное ограничение заключается в том, что имена баз данных и таблиц в пределах одного выражения должны задаваться с использованием одинакового регистра символов (see Раздел 6.1.3, «Чувствительность имен к регистру»).
Символ каталогов
‘\’
Компоненты путей в Windows 95
разделяются символом
‘\’, который
также является символом
экранирования в MySQL. Если вы
используете LOAD DATA INFILE
или SELECT ... INTO OUTFILE,
символ ‘\’
необходимо вводить дважды:
mysql>LOAD DATA INFILE "C:\\tmp\\skr.txt" INTO TABLE skr;mysql>SELECT * INTO OUTFILE 'C:\\tmp\\skr.txt' FROM skr;
В качестве альтернативы можно использовать имена файлов Unix-стиля:
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 (невозможно открыть
именованный канал)
При использовании MySQL версии 3.22
на NT с самым свежим клиентом
mysql можно получить
следующее сообщение об ошибке:
error 2017: can't open named pipe to host: . pipe...
Это происходит из-за того, что в
данной версии MySQL на NT
именованные каналы применяются
по умолчанию. Чтобы избежать
таких ошибок, следует
использовать с новым клиентом
MySQL флаг --host=localhost или
создать файл флагов
C:\my.cnf, содержащий
следующие строки:
[client] host = localhost
Начиная с версии 3.23.50
именованные каналы
используются только в случае,
если mysqld запущен с
флагом --enable-named-pipe.
Ошибка access denied
for user (доступ пользователю
запрещен)
Если вы получили сообщение об
ошибке Access denied for user:
`some-user@unknown' to database `mysql' при
попытке доступа к MySQL-серверу,
находящемуся на той же машине, с
которой происходит доступ, это
значит, что MySQL не может
правильно определить адрес
вашей машины. Для решения
данной проблемы следует
создать файл
\windows\hosts, содержащий:
127.0.0.1 localhost
ALTER
TABLE
При выполнении оператора
ALTER TABLE доступ к
таблице для других потоков
блокируется. Именно поэтому
Windows не может удалить файл,
который используется другим
потоком (возможно, в будущем мы
найдем какой-нибудь способ
обойти эту проблему).
Выполнение DROP TABLE над
таблицей, входящей в состав
сводной таблицы MERGE,
не будет работать в Windows, так как
отображение таблицы, которое
выполняет обработчик
MERGE, скрыто от
верхнего уровня MySQL. Поскольку в
Windows нельзя удалять открытые
файлы, вначале следует сбросить
все MERGE-таблицы
(используя FLUSH TABLES)
или удалить все
MERGE-таблицы перед
удалением таблицы. Мы исправим
эту ошибку одновременно с
введением оператора
VIEW. Операторы DATA
DIRECTORY и INDEX DIRECTORY
в CREATE TABLE в Windows
игнорируются, поскольку Windows не
поддерживает символические
ссылки.
Ниже приведены некоторые открытые вопросы для всех, кто захочет помочь нам в работе над выпусками под Windows:
Требуется создать
однопользовательский сервер
MYSQL.DLL. Он должен
включать все возможности
стандартного MySQL-сервера, за
исключением потоков. Это
заметно упростит использование
MySQL в приложениях, которые не
нуждаются в настоящем
клиент-серверном
взаимодействии и в доступе к
базе с других машин.
Нужно было бы добавить в инсталляционный пакет нескольких симпатичных иконок для старта и остановки MySQL.
При регистрации mysqld в
качестве сервиса с флагом
--install (на NT) было бы
неплохо иметь возможность
добавлять флаги по умолчанию к
командной строке. Сейчас эта
проблема решается путем записи
списка параметров в файл
C:\my.cnf.
Было бы удобно останавливать
mysqld из диспетчера
задач. Сейчас для этого нужно
применять mysqladmin shutdown.
Требуется перенести
readline в Windows для
использования с
инструментальной программой,
запускаемой из командной
строки mysql.
GUI версия стандартных
MySQL-клиентов (mysql,
mysqlshow,
mysqladmin и
mysqldump) будет очень
полезна.
Было бы хорошо, если бы чтение и
запись сокетов из
net.c можно было бы
прерывать. Это позволило бы
останавливать открытые потоки
командой mysqladmin kill в
Windows.
mysqld всегда стартует в
местоположении "C", а не в
местоположении, установленном
по умолчанию. С благодарностью
будет принято исправление,
позволяющее использование
программой mysqld
текущего значения
местоположения для порядка
сортировки.
Требуется добавить макрос для ускорения безопасного для потоков метода инкремента/декремента, обеспечиваемого Windows.
Остальные, специфические для
Windows вопросы, можно найти в
файле README, который
находится в поставке MySQL-Windows.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
© 1995-2005 MySQL AB. All rights reserved.
