Несколько наборов символов в одной таблице: MySql / Mariadb - PullRequest
0 голосов
/ 22 февраля 2020

Я застрял в ситуации, нуждающейся в помощи / предложении, чтобы принять решение. У меня есть таблица, которая насчитывает почти 20 миллионов строк и растет по продолжительности каждые шесть месяцев. Мой набор символов таблицы по умолчанию - utf8mb4. Он состоит в основном из 7 столбцов. Из которых один столбец должен быть utf8mb4.

Я решил go для latin1_swedish_ci для остальных столбцов. Это мешало бы столу? если в худшем случае мне нужно изменить таблицу.

Я застрял, является ли несколько наборов символов хорошим или плохим в случае, рассматривающем случай количества строк.

1 Ответ

1 голос
/ 23 февраля 2020

Во-первых, давайте разберемся в двух терминах:

  • "Набор символов" - это кодировка, такая как latin1, utf8, utf8mb4.

  • «Сортировка» - это способ сортировки, как в latin1_swedish_ci, utf8_general_ci, utf8mb4_unicode_520_ci.

Нет проблем с наличием разных столбцов с использованием разных наборов символов и / или параметров сортировки. И столбцы не должны совпадать с значениями по умолчанию .

таблицы. Как правило, лучше использовать набор символов utf8mb4 для всех столбцов. Но это не сильное требование. Микширование не мешает операциям.

ALTER TABLE .. CONVER TO .. - это способ правильно преобразовать все столбцы (одной таблицы) в набор символов diff, предполагая, что они были правильно закодированы в соответствии с старое объявление.

ALTER TABLE .. MODIFY COLUMN x VARCHAR(..) CHARACTER SET .. - это способ изменить один столбец. Примечание: размер, по умолчанию, null / not-null и т. Д. c. необходимо повторить.

Независимо от того, как вы это делаете, потребуется некоторое время, чтобы изменить кодировку для одного или нескольких столбцов в таблице из 20-миллиметровых строк.

Когда JOINing две таблицы для строкового столбца более эффективно, если обе таблицы имеют одинаковый набор символов и параметры сортировки для столбца, к которому вы присоединяетесь.

...