use*_*793 6 mysql innodb myisam my.cnf
我有一个数据库,由于一些问题,我需要将一些表从 MyISAM 转换为 InnoDB。
我基本上是这样做的:
set sql_log_bin = 0;
set sql_mode = 'STRICT_ALL_TABLES';
ALTER TABLE `table1` ENGINE = INNODB;
ALTER TABLE `table2` ENGINE = INNODB;
ALTER TABLE `table3` ENGINE = INNODB;
ALTER TABLE `table4` ENGINE = INNODB;
ALTER TABLE `table5` ENGINE = INNODB;
ALTER TABLE `table6` ENGINE = INNODB;
Run Code Online (Sandbox Code Playgroud)
它工作正常,但据我所知,我现在应该重新配置 my.cnf 然后重新启动 mysql 服务器,对吗?
如果服务器同时包含 MyISAM 和 InnoDB 表,我应该如何调整 my.cnf 文件?
为了调整 InnoDB 和 MyISAM 的 RAM,您必须知道每个存储引擎缓存的内容。
有两个查询将帮助您为其缓存生成正确的大小。@DTest 在他的答案中命名了这些缓存(顺便说一句@DTest +1)。
要调整 MyISAM Key Cache 的大小,请根据以下内容设置key_buffer_size :
SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.4999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1))
recommended_key_buffer_size FROM
(SELECT LEAST(POWER(2,32),KBS1) KBS
FROM (SELECT SUM(index_length) KBS1
FROM information_schema.tables
WHERE engine='MyISAM' AND
table_schema NOT IN ('information_schema','mysql')) AA ) A,
(SELECT 2 PowerOf1024) B;
Run Code Online (Sandbox Code Playgroud)
要调整 InnoDB 缓冲池的大小,请根据以下内容设置innodb_buffer_pool_size :
SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.49999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1)) recommended_innodb_buffer_pool_size
FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables
WHERE engine='InnoDB') A,
(SELECT 2 PowerOf1024) B;
Run Code Online (Sandbox Code Playgroud)
@DTest提到了另一个重要的事情:MySQL的版本。这对于 InnoDB 很重要,因为MySQL 5.5 现在可以选择强制 InnoDB 使用更多 CPU。MySQL 5.1.38 引入了这些选项,但当且仅当您修补了 InnoDB 插件时才可用。不要尝试通过合并插件来挽救 MySQL 5.1,只需升级到 MySQL 5.5。
您可以阅读以下一些内容:
InnoDB 最重要的变量之一是innodb_buffer_pool_size
. 这是仅为 InnoDB 加载表空间信息而分配的内存量。
由于您混合使用 MyISAM 和 InnoDB,因此您需要在key_buffer_size
(对于 MyISAM 索引)和innodb_buffer_pool_size
(对于 InnoDB 读取)之间找到良好的平衡。
一般来说,如果可能的话,您希望将整个数据放入内存中,因为磁盘读取(显然)非常昂贵。
您没有提到您正在运行哪个 MySQL 版本,但我建议您阅读相应版本的文档来调整 InnoDB 以获取更多详细信息。
归档时间: |
|
查看次数: |
3107 次 |
最近记录: |