【问题标题】:MySQL table with a lot of text包含大量文本的 MySQL 表
【发布时间】:2021-10-29 19:15:55
【问题描述】:

所以我有这个数据库(总大小 3.1Gb),但这是由于我有一个特定的表,其中包含来自一些测试运行的大量控制台输出文本。表本身是 2.7Gb,我想知道这个表是否有其他解决方案,所以数据库会变得更小?备份数据库甚至将数据库复制到游乐场有点烦人,因为这张表太大了。

桌子就是这个

最好删除这个表并将所有 LogTextData LongText 存储在 PDF 中,而不是数据库? (然后我无法备份这些数据......) 有没有人知道如何使这张桌子更小,或其他解决方案?我愿意接受建议,让这张桌子变小。

此控制台日志数据通过 Python scipts 导入数据库的方式,因此我可以完全访问其他 Python 解决方案(如果有的话)。

【问题讨论】:

  • PDF 不会完全节省空间,我建议使用实际的日志文件(纯文本),然后对它们使用压缩。无论哪种方式,这都不是编程问题
  • @OferSadan 您知道如何对此内容进行备份吗?我可以每天制作所有创建的日志文件的 gzip,然后将它们转移到另一个位置(云)?如果服务器中断,数据库已经转移到另一个位置,因此不会丢失任何数据。
  • 是的,gzip 旧日志是一个很好的解决方案(每天或按其他计划,由您决定),在这种情况下它不会占用任何数据库空间(但会占用压缩文件的文件空间,这可能会少得多)
  • 当且仅当您当然不需要定期访问数据库中的这些内容时,这都是真的。我建议再次询问dba.stackexchange.com
  • @OferSadan 没错,这些数据正在定期访问..

标签: python mysql mariadb


【解决方案1】:

您可以尝试启用Storage-Engine Independent Column CompressionInnoDB page compression。两者都提供了拥有更小的磁盘数据库的方法,这对于大型文本字段特别有用。

由于只有一个表具有一个占用空间的特定字段,因此尝试单个列压​​缩似乎是最简单的第一步。

【讨论】:

    【解决方案2】:

    根据我的说法,您应该只将日志文件的路径而不是完整的日志存储在数据库中。通过使用这些路径,您可以随时访问文件。

    它也会减少数据库的大小。

    你的新表应该是这样的, LogID、BuildID、JenkinsJobName、LogTextData。

    【讨论】:

    • 但是通过存储日志的路径我没有得到文件本身的备份?我需要确保所有文件都已备份,并且没有丢失。目前 MySqlDumps 已上传到云服务器,所以我总是可以运行 MySQL 导入并重建数据库,但由于数据库是 3.2Gb,所以需要很长时间
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    • 2021-11-17
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    相关资源
    最近更新 更多