Параметры таблицы - Проблемы ALTER TABLE тормозит база данных Mysql

Лекция



Это продолжение увлекательной статьи про alter table.

...

153, 153); font-size:12.8304px">) | ADD {INDEX | KEY} [index_name] [index_type] (key_part,...) [index_option] ... | ADD {FULLTEXT | SPATIAL} [INDEX | KEY] [index_name] (key_part,...) [index_option] ... | ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (key_part,...) [index_option] ... | ADD [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY] [index_name] [index_type] (key_part,...) [index_option] ... | ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (col_name,...) reference_definition | ADD CHECK (expr) | ALGORITHM [=] {DEFAULT | INPLACE | COPY} | ALTER [COLUMN] col_name { SET DEFAULT {literal | (expr)} | DROP DEFAULT } | CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST | AFTER col_name] | [DEFAULT] CHARACTER SET [=] charset_name [COLLATE [=] collation_name] | CONVERT TO CHARACTER SET charset_name [COLLATE collation_name] | {DISABLE | ENABLE} KEYS | {DISCARD | IMPORT} TABLESPACE | DROP [COLUMN] col_name | DROP {INDEX | KEY} index_name | DROP PRIMARY KEY | DROP FOREIGN KEY fk_symbol | FORCE | LOCK [=] {DEFAULT | NONE | SHARED | EXCLUSIVE} | MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name] | ORDER BY col_name [, col_name] ... | RENAME {INDEX | KEY} old_index_name TO new_index_name | RENAME [TO | AS] new_tbl_name | {WITHOUT | WITH} VALIDATION } partition_options: partition_option [partition_option] ... partition_option: { ADD PARTITION (partition_definition) | DROP PARTITION partition_names | DISCARD PARTITION {partition_names | ALL} TABLESPACE | IMPORT PARTITION {partition_names | ALL} TABLESPACE | TRUNCATE PARTITION {partition_names | ALL} | COALESCE PARTITION number | REORGANIZE PARTITION partition_names INTO (partition_definitions) | EXCHANGE PARTITION partition_name WITH TABLE tbl_name [{WITH | WITHOUT} VALIDATION] | ANALYZE PARTITION {partition_names | ALL} | CHECK PARTITION {partition_names | ALL} | OPTIMIZE PARTITION {partition_names | ALL} | REBUILD PARTITION {partition_names | ALL} | REPAIR PARTITION {partition_names | ALL} | REMOVE PARTITIONING | UPGRADE PARTITIONING } key_part: col_name [(length)] [ASC | DESC] index_type: USING {BTREE | HASH} index_option: { KEY_BLOCK_SIZE [=] value | index_type | WITH PARSER parser_name | COMMENT 'string' } table_options: table_option [[,] table_option] ... table_option: { AUTO_INCREMENT [=] value | AVG_ROW_LENGTH [=] value | [DEFAULT] CHARACTER SET [=] charset_name | CHECKSUM [=] {0 | 1} | [DEFAULT] COLLATE [=] collation_name | COMMENT [=] 'string' | COMPRESSION [=] {'ZLIB' | 'LZ4' | 'NONE'} | CONNECTION [=] 'connect_string' | {DATA | INDEX} DIRECTORY [=] 'absolute path to directory' | DELAY_KEY_WRITE [=] {0 | 1} | ENCRYPTION [=] {'Y' | 'N'} | ENGINE [=] engine_name | INSERT_METHOD [=] { NO | FIRST | LAST } | KEY_BLOCK_SIZE [=] value | MAX_ROWS [=] value | MIN_ROWS [=] value | PACK_KEYS [=] {0 | 1 | DEFAULT} | PASSWORD [=] 'string' | ROW_FORMAT [=] {DEFAULT | DYNAMIC | FIXED | COMPRESSED | REDUNDANT | COMPACT} | STATS_AUTO_RECALC [=] {DEFAULT | 0 | 1} | STATS_PERSISTENT [=] {DEFAULT | 0 | 1} | STATS_SAMPLE_PAGES [=] value | TABLESPACE tablespace_name [STORAGE {DISK | MEMORY}] | UNION [=] (tbl_name[,tbl_name]...) } partition_options: (see CREATE TABLE options)

ALTER TABLEизменяет структуру таблицы. Об этом говорит сайт https://intellect.icu . Например, вы можете добавлять или удалять столбцы, создавать или уничтожать индексы, изменять тип существующих столбцов или переименовывать столбцы или саму таблицу. Вы также можете изменить такие характеристики, как механизм хранения, используемый для таблицы или комментария к таблице.

  • Для использования ALTER TABLE, вам нужно ALTER, CREATEи INSERTпривилегии для таблицы. Переименование таблицы требует ALTERи DROP на старом таблице ALTER, CREATEи INSERT на новом таблице .

  • После имени таблицы укажите вносимые изменения. Если ничего не дано, ALTER TABLE ничего не делает.

  • Синтаксис многих допустимых изменений аналогичен положениям CREATE TABLE инструкции. column_definition в предложениях используется тот же синтаксис, что ADDи CHANGEдля CREATE TABLE. Для получения дополнительной информации см. Раздел 13.1.18, «Оператор CREATE TABLE» .

  • Слово COLUMNявляется необязательным и может быть опущено.

  • Множественное ADD, ALTER, DROPи CHANGEположение разрешается в одном ALTER TABLEзаявлении, разделенные запятыми. Это расширение MySQL для стандартного SQL, которое допускает только одно из каждого предложения для каждого ALTER TABLE оператора. Например, чтобы удалить несколько столбцов в одном операторе, сделайте следующее:

    ALTER TABLE t2 DROP COLUMN c, DROP COLUMN d;
  • Если подсистема хранения не поддерживает предпринятую ALTER TABLE операцию, может появиться предупреждение. Такие предупреждения могут отображаться с помощью SHOW WARNINGS. См. Раздел 13.7.5.40, «ПОКАЗАТЬ ПРЕДУПРЕЖДЕНИЯ» . Для получения информации об устранении неполадок ALTER TABLEсм. Раздел B.3.6.1, «Проблемы с ALTER TABLE» .

  • Для получения информации о сгенерированных столбцах см. Раздел 13.1.8.2, «ALTER TABLE и сгенерированные столбцы » .

  • Примеры использования см. В Раздел 13.1.8.3, «Примеры ALTER TABLE» .

  • С помощью mysql_info()функции C API вы можете узнать, сколько строк было скопировано ALTER TABLE. См. Mysql_info () .

К ALTER TABLEзаявлению относятся несколько дополнительных аспектов , описанных в следующих разделах этого раздела:

  • Параметры таблицы

  • Требования к производительности и пространству

  • Контроль параллелизма

  • Добавление и удаление столбцов

  • Переименование, переопределение и изменение порядка столбцов

  • Первичные ключи и индексы

  • Внешние ключи и другие ограничения

  • Изменение набора символов

  • Отказ от и импорт табличных пространств InnoDB

  • Порядок строк для таблиц MyISAM

  • Параметры разбиения

Параметры таблицы

table_optionsЗначит варианты табличных родов , которые могут быть использованы в CREATE TABLEзаявлении, такие как ENGINE, AUTO_INCREMENT, AVG_ROW_LENGTH, MAX_ROWS, ROW_FORMAT, или TABLESPACE.

Описание всех опций таблицы см. В Раздел 13.1.18, «Оператор CREATE TABLE» . Однако ALTER TABLEигнорирует DATA DIRECTORYи, INDEX DIRECTORYесли указано в качестве параметров таблицы. ALTER TABLE разрешает их только как опции разделения и, начиная с MySQL 5.7.17, требует, чтобы у вас была такая FILE привилегия.

Использование параметров таблицы с ALTER TABLEпредоставляет удобный способ изменения характеристик отдельной таблицы. Например:

  • Если t1в настоящее время это не InnoDBтаблица, этот оператор изменяет свой механизм хранения на InnoDB:

    ALTER TABLE t1 ENGINE = InnoDB;
    • См. Раздел 14.6.1.5, «Преобразование таблиц из MyISAM в InnoDB», чтобы узнать о том, как переключать таблицы на InnoDBмеханизм хранения.

    • Когда вы указываете ENGINEпредложение, ALTER TABLEперестраивает таблицу. Это верно, даже если таблица уже имеет указанный механизм хранения.

    • При запуске в существующей таблице выполняется « нулевая » операция, которую можно использовать для дефрагментации таблицы, как описано в Раздел 14.12.4, «Дефрагментация таблицы» . Выполнение на таблице выполняет ту же функцию. ALTER TABLE tbl_name ENGINE=INNODBInnoDB ALTER TABLEInnoDBALTER TABLE tbl_name FORCEInnoDB

    • ALTER TABLE tbl_name ENGINE=INNODBи используйте онлайн-DDL . Для получения дополнительной информации см. Раздел 14.13, «InnoDB и онлайн-DDL» . ALTER TABLE tbl_name FORCE

    • Результат попытки изменить механизм хранения таблицы зависит от того, доступен ли желаемый механизм хранения и от настройки режима NO_ENGINE_SUBSTITUTION SQL, как описано в Раздел 5.1.10, «Режимы SQL сервера» .

    • Чтобы предотвратить непреднамеренную потерю данных, ALTER TABLEнельзя использовать для изменения механизма хранения таблицы на MERGEили BLACKHOLE.

  • Чтобы изменить InnoDBтаблицу для использования сжатого формата хранения строк:

    ALTER TABLE t1 ROW_FORMAT = COMPRESSED;
  • Чтобы включить или отключить шифрование для InnoDBтаблицы в табличном пространстве "файл на таблицу":

    ALTER TABLE t1 ENCRYPTION='Y';
    ALTER TABLE t1 ENCRYPTION='N';

    Для использования этой ENCRYPTIONопции необходимо установить и настроить подключаемый модуль связки ключей . Для получения дополнительной информации см. Раздел 14.14, «Шифрование данных в состоянии покоя InnoDB» .

  • Чтобы сбросить текущее значение автоинкремента:

    ALTER TABLE t1 AUTO_INCREMENT = 13;

    Вы не можете сбросить счетчик на значение, меньшее или равное текущему значению. Для обоих InnoDBи MyISAM, если значение меньше или равно максимальному значению в данный момент в AUTO_INCREMENT столбце, значение сбрасывается до текущего максимального AUTO_INCREMENT значения столбца плюс один.

  • Чтобы изменить набор символов таблицы по умолчанию:

    ALTER TABLE t1 CHARACTER SET = utf8;

    См. Также Изменение набора символов .

  • Чтобы добавить (или изменить) комментарий к таблице:

    ALTER TABLE t1 COMMENT = 'New table comment';
  • Используйте ALTER TABLEс TABLESPACEопцией для перемещения InnoDBтаблиц между существующими общими табличными пространствами , табличными пространствами файлов на таблицу и системным табличным пространством . См.

продолжение следует...

Продолжение:


Часть 1 Проблемы ALTER TABLE тормозит база данных Mysql и варианты решения
Часть 2 Параметры таблицы - Проблемы ALTER TABLE тормозит база данных Mysql
Часть 3 Требования к производительности и пространству - Проблемы ALTER TABLE тормозит
Часть 4 Отказ от и импорт табличных пространств InnoDB - Проблемы ALTER

создано: 2021-03-27
обновлено: 2024-11-14
84



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Базы данных, знаний и хранилища данных. Big data, СУБД и SQL и noSQL

Термины: Базы данных, знаний и хранилища данных. Big data, СУБД и SQL и noSQL