V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
LieEar
V2EX  ›  MySQL

请教 OPTIMIZE TABLE 操作问题

  •  
  •   LieEar · 260 天前 · 1005 次点击
    这是一个创建于 260 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司现在有一张表,表空间是 1.04TB ,数据量是 4800 万行。主要问题在于表中有一些xx_deatil字段,记录了两个月内每天的历史数据。( json 格式的字符串)

    {"20220501": 0, "20220502": 0, "20220503": 0, "20220504": 0, "20220505": 0, "20220506": 0, "20220507": 0, "20220508": 0, "20220509": 0, "20220510": 0, "20220511": 0, "20221023": 0, "20220420": 0, "20220421": 0, "20220422": 0, "20220423": 0, "20220424": 0, "20220425": 0, "20220426": 0, "20220427": 0, "20220428": 0, "20220429": 0, "20220430": 0}
    

    之前表设计有问题,老员工都走了。现在准备将字段压缩(用 zlib 压缩,再使用 base64 编码)。 问题在于,压缩完后,再对表执行 OPTIMIZE TABLE 操作。磁盘剩余空间是 257.73 GB ,不确定能不能执行。 请问各位这个操作能不能执行?或者有没有其他办法?

    • 提出过使用分表方案,但是有很多代码需要修改,被否了。
    6 条回复    2024-03-11 09:37:49 +08:00
    liuzhedash
        1
    liuzhedash  
       260 天前
    如果表引擎是 innodb 的话,大概率是不行的,因为 optimize table 会先复制一个临时表出来,优化后再复制回去,那起码得 1.04TB*2 的存储空间才够
    LieEar
        2
    LieEar  
    OP
       260 天前
    @liuzhedash 感谢回复。表是 innodb ,看来只能申请新的数据库了
    defunct9
        3
    defunct9  
       260 天前   ❤️ 1
    不行
    iPisces77
        4
    iPisces77  
       259 天前   ❤️ 1
    这个会复制一份然后重新建一张表,空间 double 看着不够呢
    julyclyde
        5
    julyclyde  
       257 天前
    你这个表,从设计上来说是错误的啊……怎么能能把业务数据保存到 json 字段呢

    更何况你居然还想压缩??

    比如直接删掉这字段算了,反正将来你也没办法搜索和方便访问
    LieEar
        6
    LieEar  
    OP
       256 天前
    @julyclyde 我知道表有问题,老员工设计的,结果他们跑路了。没办法只能我来处理。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5574 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 03:00 · PVG 11:00 · LAX 19:00 · JFK 22:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.