У меня есть таблица URL в MySQL, которая имеет только два поля id и varchar (255) для URL.В настоящее время там находится более 50 миллионов URL-адресов, и мой начальник только что дал мне подсказку о расширении нашего текущего проекта, что приведет к добавлению дополнительных URL-адресов в эту таблицу URL-адресов, и ожидаемые цифры в середине 150-х годов составят примерно 150 миллионов.в следующем году.
В настоящее время размер базы данных составляет около 6 ГБ, поэтому я могу с уверенностью сказать, что если все оставить без изменений, то она превысит 20 ГБ, что не очень хорошо.Итак, я думаю о каком-то решении, которое может уменьшить дисковое пространство для хранения URL.
Я также хочу прояснить, что эта таблица не занята и что в данный момент не слишком много запросов, поэтому я просто хочу сэкономить место на диске и, что более важно, я ищу новые идеисжатого короткого текста и его хранения в mysql
НО в будущем к этой таблице также можно будет получить большой доступ, так что лучше оптимизировать таблицу задолго до наступления времени.
Я немного потрудился, чтобыизмените URL в числовую форму и сохраните, используя BIGINT, но поскольку он имеет ограничения в 64 бита, поэтому он не сработал достаточно хорошо.То же самое относится и к типу данных BIT, который также накладывает ограничение в 64 бита.
Моя идея преобразования в числовую форму заключается в том, что 8-байтовый BIGINT хранит 19 цифр, поэтому, если каждая цифра указывает символ в наборе символовиз всех возможных символов он может хранить 19 символов в 8 байтах, если все символы находятся в диапазоне от 1 до 10, но, как и в сценарии реального мира, есть 52 символа английского языка и 10 числовых плюс несколько символов, так что его около 100 символов.Таким образом, в худшем случае BIGINT все еще может указывать на 6 символов, и да, это не окончательный вердикт, ему все еще нужно потренироваться, чтобы точно знать, на что указывает каждая цифра, это 10+ цифр или 30+ цифр или 80+ цифр, но у вас естьПонял, о чем я думаю.
Еще одна важная вещь заключается в том, что поскольку URL-адреса имеют переменную длину, я также пытаюсь сэкономить дисковое пространство небольших URL-адресов, поэтому я не хочу даватьтип столбца фиксированной длины.
Я также рассмотрел некоторые алгоритмы сжатия текста, такие как алгоритмы сжатия smaz и Huffman, но не очень убедительно, потому что они используют какие-то словарные слова, но я ищу чистый метод.
И я не хочу использовать двоичный тип данных, потому что он также занимает слишком много места, как varchars в байтах.