#python #mysql #mariadb
Вопрос:
Итак, у меня есть эта база данных (общий размер 3,1 Гб), но это связано с одной конкретной таблицей, которая у меня есть, содержащей МНОГО текста вывода консоли, из некоторых тестовых запусков. Сама таблица составляет 2,7 Гб, и мне было интересно, может ли быть другое решение для этой таблицы, чтобы база данных стала намного меньше? Становится немного неудобно создавать резервную копию базы данных или даже делать копию базы данных на игровой площадке, потому что эта таблица такая большая.
Стол вот этот
Было бы лучше удалить эту таблицу и сохранить все данные LogTextData <- LongText в формате PDF вместо базы данных? (Тогда я не смогу создать резервную копию этих данных, хотя…) У кого-нибудь есть идея о том, как сделать эту таблицу меньше или другое решение? Я открыт для предложений, чтобы сделать эту таблицу меньше.
Способ импорта данных журнала консоли в базу данных осуществляется с помощью Python scipts, поэтому у меня есть полный доступ к другим решениям python, если таковые имеются.
Комментарии:
1. PDF-файл точно не сэкономит место, я бы предложил использовать реальные файлы журналов (в виде обычного текста), а затем использовать для них сжатие. В любом случае это не вопрос программирования
2. @OferSadan У вас есть идея о том, как сделать резервную копию этого контента? Я мог бы каждый день создавать gzip из всех созданных файлов журналов, а затем переносить их в другое место (облако)? База данных уже переносится в другое место, если сервер ломается, поэтому данные не теряются.
3. Да, старые журналы gzip-хорошее решение (ежедневно или по другому расписанию, зависит от вас), и в этом случае оно не займет места в базе данных (но займет файловое пространство сжатых файлов, которое, вероятно, будет намного меньше).
4. Все это верно, кстати, если и только если вам, конечно, не нужно регулярно получать доступ к этому контенту в вашей базе данных. Я предлагаю спросить еще раз о dba.stackexchange.com
5. @OferSadan Это правда, доступ к этим данным осуществляется регулярно ..
Ответ №1:
Вы могли бы попробовать включить независимое сжатие столбцов механизма хранения или сжатие страниц InnoDB. Оба способа позволяют иметь меньшую базу данных на диске, что особенно полезно для больших текстовых полей.
Ответ №2:
По моему мнению, вы должны просто хранить путь к файлам журналов вместо полных журналов в базе данных. Используя эти пути, вы можете получить доступ к файлам в любое удобное для вас время.
Это также уменьшит размер базы данных.
Ваша новая таблица будет выглядеть так: LogID, buildId, JenkinsJobName,LogTextData.
Комментарии:
1. Но, сохраняя путь к журналам, я не получаю резервную копию самих файлов? Мне нужно убедиться, что все файлы сохранены и не потеряны. На данный момент MySqlDumps загружены на облачный сервер, поэтому я всегда могу запустить импорт MySQL и перестроить базу данных, но это займет целую вечность, так как база данных составляет 3,2 Гб