В чем разница между MEDIUMTEXT и MEDIUMBLOB в MariaDB? - PullRequest
0 голосов
/ 22 июня 2019

Я только что видел, что MediaWiki использует MEDIUMBLOB для text.old_text. Глядя на документацию, MEDIUMBLOB и MEDIUMTEXT выглядят практически одинаково:

Столбец BLOB с максимальной длиной 16 777 215 (2 ^ 24 - 1) байтов. Каждое значение MEDIUMBLOB хранится с использованием трехбайтового префикса длины, который указывает количество байтов в значении.

и

Столбец TEXT с максимальной длиной 16 777 215 (2 ^ 24 - 1) символов. Эффективная максимальная длина меньше, если значение содержит многобайтовые символы. Каждое значение MEDIUMTEXT сохраняется с использованием трехбайтового префикса длины, который указывает количество байтов в значении.

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

Итак, вопрос в том, почему MediaWiki использует BLOB вместо текста? Есть ли другая разница, например для резервных копий?

1 Ответ

1 голос
/ 23 июня 2019
Столбец

A BLOB (крошечный, средний, длинный) содержит предоставленные байты.

Столбец TEXT также делает это, но имеет CHARACTER SET, поэтому он может преобразовывать и / или проверять символы на допустимость в течение INSERT.

Если кодировка в клиенте отличается от заявленной для столбца в таблице, кодировка преобразуется. Смотри SET NAMES. Типичные кодировки latin1 и utf8mb4.

После считывания (SELECT) выполняется обратное транскодирование.

Но если у клиента есть, скажем, латинские байты 1, и соединение неправильно утверждает, что клиент закодирован utf8mb4 (UTF-8), тогда произойдет любая из нескольких неприятностей - Mojibake (gibberish), усечение, вопросительные знаки и т. Д. .

Я подозреваю, что old_text был объявлен как MEDIUMBLOB, чтобы избежать проблем с набором символов. Недостатком является то, что вы не знаете, как отобразить old_text.

Сортировка и сравнение (например, с =) также различаются. BLOB просто смотрит на биты. TEXT может выполнять сворачивание регистра, региональные эквиваленты и т. Д., В зависимости от выбранного COLLATION.

...