Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL MyISAM表文件现在太大_Mysql_Myisam - Fatal编程技术网

MySQL MyISAM表文件现在太大

MySQL MyISAM表文件现在太大,mysql,myisam,Mysql,Myisam,我有一个MySQL MyISAM表,用于处理中等Blob数据。现在它达到了1.09TB。我现在很担心。是否可以将此表拆分为多个文件?File.MYD01,File.MYD01,。。。等等 或者,如果你对另一条路有更好的想法,你会很乐意听到的 (从评论中添加:) 如果您的mysql安装支持它,您可以使用分区: 请提供显示创建表和显示表状态 长期以来,MyISAM数据大小的默认限制为2^48字节。对于索引,默认的FIXED格式为2^40行,这可能不是您的情况——因为您有一个MEDIUMBLOB 2^

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

或者,如果你对另一条路有更好的想法,你会很乐意听到的

(从评论中添加:)


如果您的mysql安装支持它,您可以使用分区:

请提供
显示创建表
显示表状态

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

2^48可能是你唯一的限制;这是256TB。你离成功还有很长的路要走。进行
合并
分区
的痛苦可能不值得。您可能不会获得任何性能方面的好处

压缩建议

blob在加密之前是什么类型的数据?如果它是文本(或者更像文本而不是图像),您可以在加密之前对其进行压缩。这可能会将空间缩小3倍。(当然,只有在
优化
更改
表格后,才能收回空间。)


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

1.09TB?哇!你存储的是什么?我存储的是加密的二进制Blob:(它将与MyISAM一起使用,但在Innodb和其他地方会有一些麻烦。但是不可能对现有数据集进行分区-你需要创建一个新的(分区的)表并复制数据。这可以在停机时间最少的情况下完成-查看Percona或Facebooks零停机模式更改脚本。@symcbean-InnoDB的“并发症”是什么?请参阅Percona的
pt online模式更改
。它确实涉及
触发器
,并且需要足够的磁盘空间来额外复制表。@Rick:外键不起作用,你需要小心优化(这是我避开FKs的另一个原因)。下面是我的演示:为fileTBL创建表,创建表
fileTBL
fileID
int(11)非空自动增量,
docID
int(11)非空,
versionID
int(11)不为空,
docCode
varchar(30)不为空,
fileData
mediumblob,
docSalt
varchar(1000)默认为空,主键(
fileID
),键
DocVersion
versionID
docID
)ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=latin1I为了清晰起见,我将
CREATE
移到了问题中。我添加了“压缩建议”对于我的答案,请看您的想法。加密前的文件是文档的PNG图像。是的,它在加密前也会被压缩。如果您没有额外的TB,您将无能为力。但可能没有“问题”;您还远远没有达到任何限制。
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