Spec-Zone .ru
спецификации, руководства, описания, API

17.5.12.1. MySQL Cluster Disk Data Objects

MySQL Cluster Disk Data storage реализуется, используя много Дисковых Объектов данных. Они включают следующее:

Отмените файлы журнала, и файлы данных являются фактическими файлами в файловой системе каждого узла данных; по умолчанию они размещаются в ndb_node_id_fs в DataDir определенный в MySQL Cluster config.ini файл, и где node_id ID узла узла данных. Возможно поместить их в другое место, определяя или абсолютный или относительный путь как часть имени файла, создавая файл журнала отмены или файл данных. Операторы, которые создают эти файлы, показывают позже в этом разделе.

Табличные области MySQL Cluster и группы файла журнала не реализуются как файлы.

Важный

Хотя не все Дисковые Объекты данных реализуются как файлы, они все совместно используют то же самое пространство имен. Это означает, что каждый Дисковый Объект данных нужно уникально назвать (и не просто каждый Дисковый Объект данных данного типа). Например, у Вас не может быть табличной области и группы файла журнала оба названные dd1.

Принятие, что Вы уже установили MySQL Cluster со всеми узлами (включая управление и узлы SQL), основные шаги для того, чтобы составить таблицу MySQL Cluster на диске, следующие:

  1. Создайте группу файла журнала, и присвойте один или более файлов журнала отмены ей (файл журнала отмены также иногда упоминается как undofile).

    Отметить

    Файлы журнала отмены необходимы только для Дисковых Таблиц данных; они не используются для NDBCLUSTER таблицы, которые сохранены только в памяти.

  2. Создайте табличную область; присвойте группу файла журнала, так же как один или более файлов данных, к табличной области.

  3. Создайте Дисковую Таблицу данных, которая использует эту табличную область для хранения данных.

Каждая из этих задач может быть выполнена, используя SQL-операторы в mysql клиенте или другом клиентском приложении MySQL, как показано в примере, который следует.

  1. Мы создаем названную группу файла журнала lg_1 использование CREATE LOGFILE GROUP. Эта группа файла журнала должна быть составлена из двух файлов журнала отмены, которые мы называем undo_1.log и undo_2.log, чьи начальные размеры составляют 16 Мбайт и 12 Мбайт, соответственно. (Размер начальной буквы значения по умолчанию для файла журнала отмены составляет 128 Мбайт.) Дополнительно, можно также определить размер для группового буфера отмены файла журнала, или разрешить этому принимать значение по умолчанию 8 Мбайт. В этом примере мы устанавливаем буферный размер ОТМЕНЫ в 2 Мбайтах. Группа файла журнала должна быть создана с файлом журнала отмены; таким образом, мы добавляем undo_1.log к lg_1 в этом CREATE LOGFILE GROUP оператор:

    CREATE LOGFILE GROUP lg_1    ADD UNDOFILE 'undo_1.log'    INITIAL_SIZE 16M    UNDO_BUFFER_SIZE 2M    ENGINE NDBCLUSTER;

    Добавить undo_2.log группе файла журнала используйте следующий ALTER LOGFILE GROUP оператор:

    ALTER LOGFILE GROUP lg_1    ADD UNDOFILE 'undo_2.log'    INITIAL_SIZE 12M    ENGINE NDBCLUSTER;

    Некоторые знаменитые элементы:

    • .log расширение файла, используемое здесь, не требуется. Мы используем это просто, чтобы сделать файлы журнала легко опознаваемыми.

    • Каждый CREATE LOGFILE GROUP и ALTER LOGFILE GROUP оператор должен включать ENGINE пункт. В MySQL Cluster NDB 7.3, единственные разрешенные значения для этого пункта NDBCLUSTER и NDB.

      Важный

      Там может существовать самое большее одна группа файла журнала в том же самом MySQL Cluster в любой момент времени.

    • Когда Вы добавляете файл журнала отмены к групповому использованию файла журнала ADD UNDOFILE 'filename', файл с именем filename создается в ndb_node_id_fs каталог в пределах DataDir из каждого узла данных в кластере, где node_id ID узла узла данных. Каждый файл журнала отмены имеет размер, определенный в SQL-операторе. Например, если у MySQL Cluster есть 4 узла данных, то ALTER LOGFILE GROUP оператор, только показанный, создает 4 файла журнала отмены, 1 каждый на в каталоге данных каждого из этих 4 узлов данных; каждый из этих файлов называют undo_2.log и каждый файл составляет 12 Мбайт в размере.

    • UNDO_BUFFER_SIZE ограничивается количеством доступной системной памяти.

    • Для получения дополнительной информации о CREATE LOGFILE GROUP оператор, см. Раздел 13.1.14,"CREATE LOGFILE GROUP Синтаксис". Для получения дополнительной информации о ALTER LOGFILE GROUP, см. Раздел 13.1.3,"ALTER LOGFILE GROUP Синтаксис".

  2. Теперь мы можем создать табличную область, которая содержит файлы, которые будут использоваться MySQL Cluster Disk Data tables для того, чтобы хранить их данные. Табличная область также связывается с определенной группой файла журнала. Создавая новую табличную область, следует определить группу файла журнала, которую она должна использовать для журналирования отмены; следует также определить файл данных. Можно добавить больше файлов данных к табличной области после того, как табличная область создается; также возможно отбросить файлы данных от табличной области (пример отбрасывания файлов данных обеспечивается позже в этом разделе).

    Предположите, что мы хотим создать названную табличную область ts_1 который использует lg_1 как его группа файла журнала. Эта табличная область должна содержать два названные файла данных data_1.dat и data_2.dat, чьи начальные размеры составляют 32 Мбайта и 48 Мбайт, соответственно. (Значение по умолчанию для INITIAL_SIZE 128 Мбайт.) Мы можем сделать это использование двух SQL-операторов, как показано здесь:

    CREATE TABLESPACE ts_1    ADD DATAFILE 'data_1.dat'    USE LOGFILE GROUP lg_1    INITIAL_SIZE 32M    ENGINE NDBCLUSTER;ALTER TABLESPACE ts_1    ADD DATAFILE 'data_2.dat'    INITIAL_SIZE 48M    ENGINE NDBCLUSTER;

    CREATE TABLESPACE оператор создает табличную область ts_1 с файлом данных data_1.dat, и партнеры ts_1 с группой файла журнала lg_1. ALTER TABLESPACE добавляет второй файл данных (data_2.dat).

    Некоторые знаменитые элементы:

    • Как имеет место с .log расширение файла, используемое в этом примере для файлов журнала отмены, нет никакого специального значения для .dat расширение файла; это используется просто для легкого распознавания файлов данных.

    • Когда Вы добавляете файл данных к использованию табличной области ADD DATAFILE 'filename', файл с именем filename создается в ndb_node_id_fs каталог в пределах DataDir из каждого узла данных в кластере, где node_id ID узла узла данных. Каждый файл журнала отмены имеет размер, определенный в SQL-операторе. Например, если у MySQL Cluster есть 4 узла данных, то ALTER TABLESPACE оператор, только показанный, создает 4 файла журнала отмены, 1 каждый на в каталоге данных каждого из этих 4 узлов данных; каждый из этих файлов называют data_2.dat и каждый файл составляет 48 Мбайт в размере.

    • Все CREATE TABLESPACE и ALTER TABLESPACE операторы должны содержать ENGINE пункт; только таблицы используя тот же самый механизм хранения в качестве табличной области могут быть составлены в табличной области. В MySQL Cluster NDB MySQL 7.3, единственные разрешенные значения для этого пункта NDBCLUSTER и NDB.

    • Для получения дополнительной информации о CREATE TABLESPACE и ALTER TABLESPACE операторы, см. Раздел 13.1.18,"CREATE TABLESPACE Синтаксис", и Раздел 13.1.8,"ALTER TABLESPACE Синтаксис".

  3. Теперь возможно составить таблицу, неиндексированные столбцы которой сохранены на диске в табличной области ts_1:

    CREATE TABLE dt_1 (    member_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,    last_name VARCHAR(50) NOT NULL,    first_name VARCHAR(50) NOT NULL,    dob DATE NOT NULL,    joined DATE NOT NULL,    INDEX(last_name, first_name)    )    TABLESPACE ts_1 STORAGE DISK    ENGINE NDBCLUSTER;

    TABLESPACE ... STORAGE DISK опция говорит NDBCLUSTER механизм хранения, чтобы использовать табличную область ts_1 для дискового хранения данных.

    Отметить

    Также возможно определить, сохранен ли отдельный столбец на диске или в памяти при использовании a STORAGE пункт как часть определения столбца в a CREATE TABLE или ALTER TABLE оператор. STORAGE DISK заставляет столбец быть сохраненным на диске, и STORAGE MEMORY память причин, которая будет использоваться. См. Раздел 13.1.17,"CREATE TABLE Синтаксис", для получения дополнительной информации.

    Однажды таблица ts_1 был создан как показано, можно выполнить INSERT, SELECT, UPDATE, и DELETE операторы на этом, как Вы были бы с любой другой таблицей MySQL.

    Для таблицы dt_1 поскольку это было определено здесь, только dob и joined столбцы сохранены на диске. Это - то, потому что есть, индексирует на id, last_name, и first_name столбцы, и таким образом, данные, принадлежащие этим столбцам, хранятся в RAM. В MySQL Cluster NDB 7.3, только неиндексированные столбцы могут быть сохранены на диске; индексирует и индексированные данные столбца продолжают храниться в памяти. Этот компромисс между использованием индексирует, и сохранение RAM - что-то, что следует иметь в виду, поскольку Вы разрабатываете Дисковые Таблицы данных.

Примечание производительности. Производительность кластера, используя Дисковое Хранение данных значительно улучшается, если Дисковые Файлы данных сохраняются на отдельном физическом диске от файловой системы узла данных. Это должно быть сделано для каждого узла данных в кластере, чтобы получить любое значимое преимущество.

Можно использовать системные пути абсолютного и файла прямого доступа с ADD UNDOFILE и ADD DATAFILE. Относительные пути вычисляются относительно каталога данных узла данных. Можно также использовать символьные ссылки; см. Раздел 17.5.12.2, "Используя Символьные ссылки с Дисковыми Объектами данных", для получения дополнительной информации и примеры.

Группа файла журнала, табличная область, и любые Дисковые Таблицы данных, используя их должны быть созданы в определенном порядке. То же самое является истиной для того, чтобы отбросить любой из этих объектов:

Например, чтобы отбросить все объекты, создаваемые до сих пор в этом разделе, Вы использовали бы следующие операторы:

mysql> DROP TABLE
        dt_1;mysql> ALTER TABLESPACE
        ts_1    -> DROP DATAFILE 'data_2.dat'    -> ENGINE NDBCLUSTER;mysql> ALTER
        TABLESPACE ts_1    -> DROP DATAFILE
        'data_1.dat'    -> ENGINE NDBCLUSTER;mysql> DROP TABLESPACE ts_1    -> ENGINE
        NDBCLUSTER;mysql> DROP LOGFILE GROUP lg_1    -> ENGINE NDBCLUSTER;

Эти операторы должны быть выполнены в показанном порядке, за исключением того, что два ALTER TABLESPACE ... DROP DATAFILE операторы могут быть выполнены в любом порядке.

Можно получить информацию о файлах данных, используемых Дисковыми Таблицами данных, запрашивая FILES таблица в INFORMATION_SCHEMA база данных. Дополнительное"NULL строка" обеспечивает дополнительную информацию о файлах журнала отмены. Для получения дополнительной информации и примеры, см. Раздел 20.8," INFORMATION_SCHEMA FILES Таблица".

Также возможно просмотреть информацию о выделенном и свободном пространстве на диске для каждой Дисковой Таблицы данных или табличного раздела, используя ndb_desc утилиту. Для получения дополнительной информации см. Раздел 17.4.9, "ndb_desc — Описывают Таблицы NDB".