我有一个处理中等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
答案 0 :(得分:1)
如果你的mysql安装支持它,你可以使用分区: http://dev.mysql.com/doc/refman/5.7/en/partitioning.html
答案 1 :(得分:0)
请提供SHOW CREATE TABLE
和SHOW TABLE STATUS
。
长期以来,MyISAM数据大小的默认限制为2 ^ 48字节。对于索引,FIXED
格式的默认值为2 ^ 40行,这可能不是您的情况 - 因为您有MEDIUMBLOB
。
2 ^ 48可能是你唯一的限制;那是256TB。你打击它还有很长的路要走。做MERGE
或PARTITION
的痛苦可能不值得。并且你可能获得没有性能优势。
压缩建议
blob在加密之前是什么类型的数据?如果它是文本(或更像文本而不是像图像),您可以在加密之前压缩它。这可能会使空间缩小3倍。(当然,在表OPTIMIZE
或ALTER
之前,您无法获得空间。)
对表的任何更改都需要至少足够的空间来存放表的副本。如果您可以同时进行压缩,则可能只需要400GB的额外磁盘空间。然后你可以放弃1.09TB,只留下400GB。