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.