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

5.4. Создание и Используя InnoDB Таблицы и Индексируют

5.4.1. Управление Табличными областями InnoDB
5.4.2. Группировка Операций DML с Транзакциями
5.4.3. Преобразование Таблиц от MyISAM кInnoDB
5.4.4. AUTO_INCREMENT Обработка в InnoDB
5.4.5. InnoDB и FOREIGN KEY Ограничения
5.4.6. Работа с InnoDB Сжатые Таблицы
5.4.7. InnoDB Управление формата файла
5.4.8. Как InnoDB Столбцы Переменной длины хранилищ

Создать InnoDB таблица, используйте CREATE TABLE оператор без любых специальных пунктов. Прежде, Вы нуждались ENGINE=InnoDB пункт, но не больше теперь, когда InnoDB механизм хранения значения по умолчанию. (Вы могли бы все еще использовать тот пункт, если Вы планируете использовать mysqldump или репликацию, чтобы воспроизвести CREATE TABLE оператор на сервере рабочий MySQL 5.1 или ранее, где механизм хранения значения по умолчанию MyISAM.)

-- Default storage engine = InnoDB.CREATE TABLE t1 (a INT, b CHAR (20), PRIMARY KEY (a));-- Backwards-compatible with older MySQL.CREATE TABLE t2 (a INT, b CHAR (20), PRIMARY KEY (a)) ENGINE=InnoDB;

В зависимости от установки файла на таблицу, InnoDB составляет каждую таблицу, и связанный первичный ключ индексируют или в системной табличной области, или в отдельной табличной области (представленный.ibd файлом) для каждой таблицы. MySQL создает t1.frm и t2.frm файлы в test каталог в соответствии с каталогом базы данных MySQL. Внутренне, InnoDB добавляет запись для таблицы к ее собственному словарю данных. Запись включает имя базы данных. Например, если test база данных в который t1 таблица составляется, запись для 'test/t1'. Это означает, что можно составить таблицу того же самого имени t1 в некоторой другой базе данных, и именах таблиц не сталкиваются внутри InnoDB.

Видеть свойства этих таблиц, проблемы a SHOW TABLE STATUS оператор:

SHOW TABLE STATUS FROM test LIKE 't%';

В выводе состояния Вы видите, что свойство формата строки этих первых таблиц Compact. Хотя та установка прекрасна для основного экспериментирования, чтобы использовать в своих интересах самое мощное InnoDB технические характеристики, Вы быстро дипломируете к использованию других форматов строки такой как Dynamic и Compressed. Используя те значения требует немного установки сначала:

set global innodb_file_per_table=1;set global innodb_file_format=barracuda;CREATE TABLE t3 (a INT, b CHAR (20), PRIMARY KEY (a)) row_format=dynamic;CREATE TABLE t4 (a INT, b CHAR (20), PRIMARY KEY (a)) row_format=compressed;

Всегда устанавливайте первичный ключ для каждого InnoDB таблица, определяя столбец или столбцы, что:

Например, в таблице, содержащей информацию о людях, Вы не создали бы первичный ключ на (firstname, lastname) потому что больше чем у одного человека может быть то же самое имя, у некоторых людей есть пустые фамилии, и иногда люди меняют свои имена. С очень многими ограничениями часто нет очевидного набора столбцов, чтобы использовать в качестве первичного ключа, таким образом, Вы создаете новый столбец с числовым ID, чтобы служить всеми или частью первичного ключа. Можно объявить столбец автоприращения так, чтобы возрастающие значения были заполнены в автоматически, поскольку строки вставляются:

-- The value of ID can act like a pointer between related items in different tables.CREATE TABLE t5 (id INT AUTO_INCREMENT, b CHAR (20), PRIMARY KEY (id));-- The primary key can consist of more than one column. Any autoinc column must come first.CREATE TABLE t6 (id INT AUTO_INCREMENT, a INT, b CHAR (20), PRIMARY KEY (id,a));

Хотя таблица работает правильно без Вас определяющий первичный ключ, первичный ключ связан со многими аспектами производительности и является решающим аспектом проекта для любой большой или часто используемой таблицы. Сделайте привычку ко всегда определению того в CREATE TABLE оператор. (Если Вы составляете таблицу, данные загрузки, и затем делаете ALTER TABLE чтобы добавить первичный ключ позже, та работа намного медленнее чем определение первичного ключа, составляя таблицу.)