Как MariaDB выполняет преобразование набора символов в существующей базе данных? - PullRequest
0 голосов
/ 04 августа 2020

Вы можете изменить набор символов и сопоставление из существующей базы данных с помощью

ALTER DATABASE test CHARACTER SET='utf8' COLLATE='utf8_bin';

https://mariadb.com/kb/en/alter-database/

и преобразовать таблицы с

ALTER TABLE <tablename> CONVERT TO CHARACTER SET <set> COLLATE <collation>;

Что именно происходит, когда вы делаете это для действующей базы данных? Различные наборы символов могут занимать разное количество пространства dis c, поэтому использование dis c впоследствии может быть другим.

Но требует ли для самого преобразования дополнительного dis c space (или вычисление), и если да, то сколько?

1 Ответ

1 голос
/ 05 августа 2020

Что именно происходит?

  • С существующими данными ничего не происходит.
  • Использование диска не должно изменяться.
  • Будущее CREATE TABLEs в этой базе данных будет принимать эту кодировку и сопоставление, если они явно не установлены.
  • То же для Будущее CREATEs хранимых подпрограмм.

То есть , ALTER DATABASE в основном меняет некоторые значения по умолчанию.

Да, текст не на английском языке sh может измениться в размере при изменении кодировки («набор символов»). Но для этого изменения требуются определенные варианты ALTER TABLE

Что касается того, сколько байтов занимают отдельные символы:

  • Символы с диакритическими знаками (в основном) - это 1 байт в Ascii и Latin *, но 2 байта в utf8 или utf8mb4.
  • Если вам нужны дополнительные сведения или другие преобразования, спросите.

Внимание: «Преобразование» - это одно; «фиксация» - другое: http://mysql.rjweb.org/doc.php/charcoll#fixes_for_various_cases

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...