在我的live数据库上测试MySQL压缩
我有很多巨大的表,其中有很多在我的live数据库上测试MySQL压缩,mysql,database,compression,innodb,Mysql,Database,Compression,Innodb,我有很多巨大的表,其中有很多VARCHAR,TINYTEXT,和TEXT字段。由于我不是MySQL数据库方面的专家,我最近通过查看此页面了解了MySQL数据库的压缩特性 我搜索并阅读了多个页面,发现我需要设置以下参数,并将这些更改应用到我的my.cnf: innodb_file_per_table=1; (this is already set) innodb_file_format=Barracuda; 对于表结构: ... ROW_FORMAT=COMPRESSED KEY_BLOC
VARCHAR
,TINYTEXT
,和TEXT
字段。由于我不是MySQL数据库方面的专家,我最近通过查看此页面了解了MySQL数据库的压缩特性
我搜索并阅读了多个页面,发现我需要设置以下参数,并将这些更改应用到我的my.cnf
:
innodb_file_per_table=1; (this is already set)
innodb_file_format=Barracuda;
对于表结构:
...
ROW_FORMAT=COMPRESSED
KEY_BLOCK_SIZE=8; (possibly I need to do a trial-and-error to find a
better key_block_size that fits better to my case)
所以,我想先测试一下,看看这种压缩对我的表大小有什么好处,并希望能更好地管理我的空间。为了进行此测试,我将生成一个包含数百行或数千行原始表的示例表,并进行测试和性能度量
由于这将是一个测试过程,而且我没有任何其他服务器可以在其上进行测试,所以我不想冒任何风险
这是我的问题:
如果我在当前服务器上更改我的my.cnf
文件(通过添加innodb\u file\u format=Barracuda;
)并重新启动服务器,它会对我现有的具有行格式=COMPACT
的表/数据产生任何影响吗
我找不到任何地方回答/提及这一点,因此提前感谢。innodb_file_格式适用于新创建的表,而不是现有表。我认为你甚至不需要重新启动
SET GLOBAL
命令需要root权限,但在此之后,您可以作为普通用户运行
SET GLOBAL innodb_file_format=Barracuda;
SET GLOBAL innodb_file_per_table=1; -- already done
SET GLOBAL innodb_large_prefix=1; -- optional
logout & login (to get the global values);
ALTER TABLE tbl ROW_FORMAT=COMPRESSED; -- This assumes table exists
CREATE TABLE tbl ( ...
) ROW_FORMAT=COMPRESSED; -- This assumes creating
innodb_file_格式
适用于新创建的表,而不是现有表。我认为你甚至不需要重新启动
SET GLOBAL
命令需要root权限,但在此之后,您可以作为普通用户运行
SET GLOBAL innodb_file_format=Barracuda;
SET GLOBAL innodb_file_per_table=1; -- already done
SET GLOBAL innodb_large_prefix=1; -- optional
logout & login (to get the global values);
ALTER TABLE tbl ROW_FORMAT=COMPRESSED; -- This assumes table exists
CREATE TABLE tbl ( ...
) ROW_FORMAT=COMPRESSED; -- This assumes creating
因此,您的意思是,如果我只设置
innodb_file_format=Barracuda,那么不会对我当前的表和数据造成伤害和/或影响代码>在my.cnf中(或设置全局innodb\u文件\u格式=Barracuda;
)?如果是的话,我很乐意开始我的测试:)我相信这是真的。但是,如果你做进一步的研究,在一个单独的系统中测试,等等,我永远不会生气。谢谢,它按预期工作。在我的my.cnf
中设置了innodb_file_format=Barracuda之后,我现在在PMA中有了所有四种文件格式。这意味着使用ROW_FORMAT=COMPACT
不会对我现有的表产生任何影响,因此,您的意思是,如果我只设置innodb_file_FORMAT=Barracuda,则不会对我当前的表和数据造成伤害和/或影响代码>在my.cnf中(或设置全局innodb\u文件\u格式=Barracuda;
)?如果是的话,我很乐意开始我的测试:)我相信这是真的。但是,如果你做进一步的研究,在一个单独的系统中测试,等等,我永远不会生气。谢谢,它按预期工作。在我的my.cnf
中设置了innodb_file_format=Barracuda之后,我现在在PMA中有了所有四种文件格式。这意味着使用ROW\u FORMAT=COMPACT