MySQL MyISAM表文件现在太大了

时间:2016-01-27 07:27:22

标签: mysql myisam

我有一个处理中等Blob数据的MySQL MyISAM表。现在它达到了1.09TB。我现在很担心。是否可以将此表拆分为多个文件? 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 

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

请提供SHOW CREATE TABLESHOW TABLE STATUS

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

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

More Limits

压缩建议

blob在加密之前是什么类型的数据?如果它是文本(或更像文本而不是像图像),您可以在加密之前压缩它。这可能会使空间缩小3倍。(当然,在表OPTIMIZEALTER之前,您无法获得空间。)

对表的任何更改都需要至少足够的空间来存放表的副本。如果您可以同时进行压缩,则可能只需要400GB的额外磁盘空间。然后你可以放弃1.09TB,只留下400GB。