Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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
在我的live数据库上测试MySQL压缩_Mysql_Database_Compression_Innodb - Fatal编程技术网

在我的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