2.3.7 Ограничения платформы Windows
Следующие ограничения применяются к использованию MySQL на платформе Windows:
-
Оперативная память
На 32-битных платформах Windows по умолчанию невозможно использовать более 2 ГБ оперативной памяти в рамках одного процесса, включая MySQL. Это связано с тем, что физический адресной предел в Windows 32-бит составляет 4 ГБ, а по умолчанию виртуальное адресное пространство разделено между ядром (2 ГБ) и пользователем/приложениями (2 ГБ).
В некоторых версиях Windows есть возможность во время загрузки изменить настройки для работы с более объемными приложениями, уменьшив размер ядра. В качестве альтернативы, для использования более 2 ГБ, используйте 64-битную версию Windows.
-
Псевдонимы файловой системы
При использовании
MyISAMтаблиц, вы не можете использовать псевдонимы в рамках Windows для ссылки на файлы данных на другом томе и затем ссылаться обратно на основное расположение MySQLdatadir.Эта возможность часто используется для перемещения файлов данных и индексов на RAID или другое быстрое решение, сохраняя основные
.frmфайлы в стандартном каталоге данных, настроенном с помощью параметраdatadir. -
Ограниченное количество портов
Системы Windows предоставляют около 4000 портов для подключений клиентов, и после закрытия подключения на порте, требуется от двух до четырех минут, прежде чем порт можно будет повторно использовать. В ситуациях, когда клиенты подключаются и отключаются от сервера с высокой скоростью, возможно, что все доступные порты будут исчерпаны до того, как освободятся закрытые порты. Если это произойдет, сервер MySQL может казаться невосприимчивым, даже если он работает. Порты также могут использоваться другими приложениями, работающими на компьютере, в этом случае количество портов, доступных для MySQL, будет меньше.
Для получения дополнительной информации об этой проблеме, обратитесь к https://support.microsoft.com/kb/196271.
-
DATA DIRECTORYиINDEX DIRECTORYКлауза
DATA DIRECTORYинструкцииCREATE TABLEподдерживается в Windows только дляInnoDBтаблиц, как описано в Разделе 14.6.1.2, «Создание таблиц внешним образом». ДляMyISAMи других типов хранилищ, клаузыDATA DIRECTORYиINDEX DIRECTORYдляCREATE TABLEигнорируются в Windows и на других платформах с нерабочей функциейrealpath()вызова. -
Невозможно удалить базу данных, которая используется другой сессией.
-
Регистронезависимые имена
Имена файлов нечувствительны к регистру в Windows, поэтому имена баз данных и таблиц MySQL также нечувствительны к регистру в Windows. Единственное ограничение заключается в том, что имена баз данных и таблиц должны указываться с использованием одного и того же регистра в данном операторе. См. Раздел 9.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.