Отказ от и импорт табличных пространств InnoDB - Проблемы ALTER

Лекция



Это окончание невероятной информации про alter table.

...

сопоставление использовать, оператор использует сопоставление по умолчанию для набора символов. Если это сопоставление не подходит для предполагаемого использования таблицы (например, если оно изменится с сопоставления с учетом регистра на сопоставление без учета регистра), укажите сопоставление явно.

Для столбца, который имеет тип данных VARCHARили один из TEXTтипов, при необходимости CONVERT TO CHARACTER SET изменяет тип данных, чтобы гарантировать, что новый столбец будет достаточно длинным для хранения такого же количества символов, как и исходный столбец. Например, TEXT столбец имеет два байта длины, в которых хранится длина значений в столбце до максимального значения 65 535 байтов. Для latin1 TEXT столбца для каждого символа требуется один байт, поэтому столбец может хранить до 65 535 символов. Если столбец преобразован в utf8, для каждого символа может потребоваться до трех байтов для максимально возможной длины 3 × 65 535 = 196 605 байтов. Эта длина не помещается в TEXT байтах длины столбца, поэтому MySQL преобразует тип данных в MEDIUMTEXT, который является наименьшим строковым типом, для которого в байтах длины может быть записано значение 196 605. Точно так же VARCHAR столбец можно преобразовать в MEDIUMTEXT.

Чтобы избежать изменений типа данных только что описанного типа, не используйте CONVERT TO CHARACTER SET. Вместо этого используйте MODIFYдля изменения отдельных столбцов. Например:

ALTER TABLE t MODIFY latin1_text_col TEXT CHARACTER SET utf8;
ALTER TABLE t MODIFY latin1_varchar_col VARCHAR(M) CHARACTER SET utf8;

Если указать CONVERT TO CHARACTER SET binary, что CHAR, VARCHARи TEXT столбцы преобразуются в соответствующие двоичные типы строк ( BINARY, VARBINARY, BLOB). Это означает, что столбцы больше не имеют набора символов, и последующая CONVERT TOоперация к ним не применяется.

Если charset_nameнаходится DEFAULTв CONVERT TO CHARACTER SETоперации, используется набор символов, указанный в character_set_databaseсистемной переменной.

Предупреждение

CONVERT TOОперация преобразует значение столбцов между оригиналом и именованными наборами символов. Это не то, что вам нужно, если у вас есть столбец с одним набором символов (например, latin1), но сохраненные значения фактически используют какой-то другой, несовместимый набор символов (например utf8). В этом случае для каждого такого столбца необходимо сделать следующее:

ALTER TABLE t1 CHANGE c1 c1 BLOB;
ALTER TABLE t1 CHANGE c1 c1 TEXT CHARACTER SET utf8;

Причина, по которой это работает, заключается в том, что при преобразовании в BLOBстолбцы или из столбцов преобразование не происходит .

Чтобы изменить только набор символов по умолчанию для таблицы, используйте этот оператор:

ALTER TABLE tbl_name DEFAULT CHARACTER SET charset_name;

Слово не DEFAULTявляется обязательным. Набор символов по умолчанию - это набор символов, который используется, если вы не указываете набор символов для столбцов, которые вы добавляете в таблицу позже (например, с помощью ALTER TABLE ... ADD column).

Когда foreign_key_checks системная переменная включена, что является настройкой по умолчанию, преобразование набора символов не разрешено для таблиц, которые включают столбец строки символов, используемый в ограничении внешнего ключа. Обходной путь - отключить foreign_key_checksперед выполнением преобразования набора символов. Перед повторным включением необходимо выполнить преобразование для обеих таблиц, участвующих в ограничении внешнего ключа foreign_key_checks. Если повторно включить foreign_key_checks после преобразования только одной из таблиц, операция ON DELETE CASCADEили ON UPDATE CASCADEможет повредить данные в ссылающейся таблице из-за неявного преобразования, которое происходит во время этих операций (ошибка № 45290, ошибка № 74816).

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

InnoDBТаблица , созданная в своем файловом каждой таблицу табличного может быть импортирована из резервной копии или из другого экземпляра сервера MySQL с использованием DISCARD TABLEPACEи IMPORT TABLESPACEстатьями. См. Раздел 14.6.1.3, «Импорт таблиц InnoDB» .

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

ORDER BYпозволяет вам создать новую таблицу со строками в определенном порядке. Этот параметр полезен в первую очередь, когда вы знаете, что большую часть времени запрашиваете строки в определенном порядке. Используя эту опцию после серьезных изменений в таблице, вы сможете повысить производительность. В некоторых случаях это может упростить сортировку для MySQL, если таблица упорядочена по столбцу, который вы хотите отсортировать позже.

Примечание

Таблица не остается в указанном порядке после вставки и удаления.

ORDER BYсинтаксис позволяет указать одно или несколько имен столбцов для сортировки, за каждым из которых может следовать ASCили DESCдля указания порядка сортировки по возрастанию или убыванию соответственно. По умолчанию используется возрастающий порядок. В качестве критериев сортировки можно использовать только имена столбцов; произвольные выражения не допускаются. Этот пункт следует ставить последним после любых других пунктов.

ORDER BYне имеет смысла для InnoDBтаблиц, потому что InnoDB всегда упорядочивает строки таблицы в соответствии с кластеризованным индексом .

При использовании в многораздельной таблице ALTER TABLE ... ORDER BYупорядочивает строки только внутри каждой секции.

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

partition_options обозначает параметры, которые можно использовать с многораздельными таблицами для повторного разбиения, добавления, удаления, удаления, импорта, слияния и разделения разделов, а также для выполнения обслуживания разбиения.

Это возможно для ALTER TABLE заявления содержать PARTITION BYили REMOVE PARTITIONING пункт в дополнении к другому альтеру спецификации, но PARTITION BYи REMOVE PARTITIONING пункт должен быть указан последним после всех других спецификаций. ADD PARTITION, DROP PARTITION, DISCARD PARTITION, IMPORT PARTITION, COALESCE PARTITION, REORGANIZE PARTITION, EXCHANGE PARTITION, ANALYZE PARTITION, CHECK PARTITION, И REPAIR PARTITIONварианты не могут быть объединены с другими альтер спецификаций в один ALTER TABLE, так как варианты только перечисленные действуют на отдельных разделах.

Для получения дополнительной информации о параметрах раздела см. Раздел 13.1.18, «Оператор CREATE TABLE» и Раздел 13.1.8.1, «Операции с разделением ALTER TABLE» . Для получения информации и примеров ALTER TABLE ... EXCHANGE PARTITION операторов см. Раздел 22.3.3, «Обмен разделами и подразделами с таблицами» .

До MySQL 5.7.6 в секционированных InnoDBтаблицах использовался общий ha_partitionобработчик секционирования, используемый MyISAMи другими механизмами хранения, не предоставляющими свои собственные обработчики секционирования; в MySQL 5.7.6 и более поздних версиях такие таблицы создаются с использованием InnoDBсобственного (или « собственного » ) обработчика секционирования подсистемы хранения . Начиная с MySQL 5.7.9, вы можете обновить InnoDBтаблицу, созданную в MySQL 5.7.6 или ранее (то есть созданную с помощью ha_partition), до InnoDB собственного обработчика разделов, используя ALTER TABLE ... UPGRADE PARTITIONING. (Ошибка № 76734, Ошибка № 20727344) Этот ALTER TABLE синтаксис не допускает никаких других параметров и может использоваться только для одной таблицы за раз. Вы также можете использовать mysql_upgrade в MySQL 5.7.9 или новее для обновления старых секционированныхтаблиц InnoDB до собственного обработчика секционирования

Дополнительно читайте

https://github.com/github/gh-ost

https://www.facebook.com/notes/10157508558976696/

Данная статья про alter table подтверждают значимость применения современных методик для изучения данных проблем. Надеюсь, что теперь ты понял что такое alter table и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Базы данных, знаний и хранилища данных. Big data, СУБД и SQL и noSQL

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


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

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



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


Поделиться:

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

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

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

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

Комментарии


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

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

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