Spec-Zone.ru › MySQL 8.4

2.3.6 Ограничения платформы Windows

Следующие ограничения применяются к использованию MySQL на платформе Windows:

  • Оперативная память

    На 32-разрядных платформах Windows по умолчанию невозможно использовать более 2 ГБ оперативной памяти в пределах одного процесса, включая MySQL. Это связано с тем, что физический предел адресации на 32-разрядных системах Windows составляет 4 ГБ, а по умолчанию виртуальное адресное пространство делится между ядром (2 ГБ) и пользователем/приложениями (2 ГБ).

    В некоторых версиях Windows существует параметр загрузки, позволяющий использовать более крупные приложения, уменьшая объем памяти, отведённый ядру. В качестве альтернативы, для использования более 2 ГБ оперативной памяти, используйте 64-разрядную версию Windows.

  • Псевдонимы файловой системы

    При использовании MyISAM таблиц вы не можете использовать псевдонимы в рамках Windows, чтобы связать файлы данных на другом томе и затем связаться с основным расположением MySQL datadir.

    Эта возможность часто используется для перемещения файлов данных и индексов на 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().

  • DROP DATABASE

    Нельзя удалить базу данных, которая используется другой сессией.

  • Регистронезависимые имена

    Имена файлов в 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:\> mysqlbinlog binary_log_file | mysql --user=root
    

    Если у вас проблемы с применением журнала и вы подозреваете, что это из-за символа ^Z / CHAR(24), вы можете использовать следующее решение:

    C:\> mysqlbinlog binary_log_file --result-file=/tmp/bin.sql
    C:\> mysql --user=root --execute "source /tmp/bin.sql"
    

    Последняя команда также может быть использована для надёжного чтения любого файла SQL, который может содержать двоичные данные.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/windows-restrictions.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API