MySQL MyISAM Table 文件现在太大

MySQL MyISAM Table File is now Too Large

我有一个 MySQL MyISAM Table 来处理中型 Blob 数据。现在它达到了 1.09TB。我现在很担心。是否可以将此 table 拆分为多个文件? File.MYD01, File.MYD01,...等等

或者,如果您有更好的替代路径想法,很乐意听取。

(从评论中添加:)

CREATE TABLE fileTBL (
    fileID int(11) NOT NULL AUTO_INCREMENT, 
    docID int(11) NOT NULL, 
    versionID int(11) NOT NULL, 
    docCode varchar(30) NOT NULL, 
    fileData mediumblob, 
    docSalt varchar(1000) DEFAULT NULL, 
    PRIMARY KEY (fileID), 
    KEY DocVersion (versionID,docID)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=latin1 

如果您的 mysql 安装支持,您可以使用分区: http://dev.mysql.com/doc/refman/5.7/en/partitioning.html

请提供 SHOW CREATE TABLESHOW TABLE STATUS

长期以来,MyISAM 数据大小的默认限制一直是 2^48 字节。对于索引,FIXED 格式的默认值为 2^40 行,这可能不是你的情况——因为你有 MEDIUMBLOB.

2^48 可能是您唯一的限制;那是256TB。你离击中它还有很长的路要走。做 MERGEPARTITION 的痛苦可能不值得。而且您可能获得没有性能优势。

More Limits.

压缩建议

blob加密前是什么数据?如果它是文本(或者更像文本而不是图像),您可以在加密之前对其进行压缩。这可能会将 space 缩小 3 倍。(当然,在 OPTIMIZEALTER 之前,您无法取回 space table.)

对 table 的任何更改都需要至少足够 space 来复制 table。如果您可以同时进行该压缩,则可能只需要 400GB 的额外磁盘 space。那你可以把1.09TB丢掉,只剩下400GB。