2.3.6 Ограничения платформы Windows
Следующие ограничения применяются к использованию MySQL на платформе Windows:
-
Память процесса
В 32-разрядных платформах Windows по умолчанию невозможно использовать более 2 ГБ оперативной памяти в рамках одного процесса, включая MySQL. Это связано с тем, что предел физического адреса в 32-разрядных системах Windows составляет 4 ГБ, а по умолчанию виртуальное адресное пространство разделяется между ядром (2 ГБ) и пользователем/приложениями (2 ГБ).
Некоторые версии Windows имеют параметр загрузки, позволяющий использовать более крупные приложения, уменьшая объем памяти, выделенной ядру. В качестве альтернативы, для использования более 2 ГБ следует использовать 64-разрядную версию Windows.
-
Псевдонимы файловой системы
При работе с таблицами
MyISAMневозможно использовать псевдонимы в Windows для ссылки на файлы данных на другом томе, а затем ссылки обратно на основное расположение MySQLdatadir.Эта функция часто используется для перемещения файлов данных и индексов на RAID или другие быстродействующие решения.
-
Ограниченное количество портов
Системы Windows предоставляют примерно 4000 портов для подключений клиентов, и после закрытия подключения на порту требуется от двух до четырех минут, прежде чем порт можно будет повторно использовать. В ситуациях, когда клиенты подключаются и отключаются от сервера с высокой скоростью, все доступные порты могут быть исчерпаны, прежде чем освободятся закрытые порты. В этом случае сервер MySQL может казаться неотзывчивым, даже если он работает. Порты также могут использоваться другими приложениями, работающими на компьютере, в этом случае число доступных портов для MySQL будет ниже.
Дополнительную информацию об этой проблеме можно найти по адресу https://support.microsoft.com/kb/196271.
-
DATA DIRECTORYиINDEX DIRECTORYОператор
DATA DIRECTORYв оператореCREATE TABLEподдерживается в Windows только для таблицInnoDB, как описано в Раздел 17.6.1.2, «Создание таблиц внешним образом». ДляMyISAMи других движков хранилища операторыDATA DIRECTORYиINDEX DIRECTORYдляCREATE TABLEигнорируются в Windows и на других платформах с неработающей функциейrealpath(). -
Нельзя удалить базу данных, которой пользуется другая сессия.
-
Имена, не зависящие от регистра
Имена файлов в Windows не чувствительны к регистру, поэтому имена баз данных и таблиц MySQL также не чувствительны к регистру в Windows. Единственное ограничение заключается в том, что имена баз данных и таблиц должны быть указаны с одинаковым регистром в данном операторе. См. Раздел 11.2.3, «Чувствительность имен идентификаторов к регистру».
-
Имена каталогов и файлов
В Windows сервер MySQL поддерживает только имена каталогов и файлов, совместимые с текущими кодовыми страницами ANSI. Например, следующее японское имя каталога не работает в западной локали (кодовая страница 1252):
datadir="C:/私たちのプロジェクトのデータ"
То же ограничение распространяется на имена каталогов и файлов, к которым ссылаются операторы SQL, например, на путь к файлу данных в
LOAD DATA. -
Разделитель пути к файлу
\Компоненты пути в Windows разделяются символом
\, который также является символом экранирования в MySQL. Если вы используетеLOAD DATAилиSELECT ... INTO OUTFILE, используйте имена файлов в формате Unix с символами/:mysql>
LOAD DATA INFILE 'C:/tmp/skr.txt' INTO TABLE skr;mysql>SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;В качестве альтернативы, вы должны удвоить символ
\:mysql>
LOAD DATA INFILE 'C:\\tmp\\skr.txt' INTO TABLE skr;mysql>SELECT * INTO OUTFILE 'C:\\tmp\\skr.txt' FROM skr; -
Проблемы с каналами передачи данных
Каналы передачи данных не работают надёжно с командной строки Windows. Если канал передачи данных включает символ
^Z/CHAR(24), Windows считает, что встретился конец файла, и прерывает программу.Это в основном проблема, когда вы пытаетесь применить бинарный журнал следующим образом:
C:\>
mysqlbinlogbinary_log_file| mysql --user=rootЕсли у вас возникли проблемы с применением журнала и вы подозреваете, что это из-за символа
^Z/CHAR(24), вы можете использовать следующее решение:C:\>
mysqlbinlogC:\>binary_log_file--result-file=/tmp/bin.sqlmysql --user=root --execute "source /tmp/bin.sql"Последняя команда также может использоваться для надёжного чтения любого файла SQL, который может содержать двоичные данные.
© 2025 Oracle
Licensed under the GPLv2 License.