【发布时间】:2012-08-26 09:08:38
【问题描述】:
我找不到任何关于我的问题的信息。这是一个更理论的问题。 例如,我有表 keywords。
CREATE TABLE IF NOT EXISTS `keywords` (
`kid` int(11) unsigned NOT NULL AUTO_INCREMENT,
`language_id` int(11) NOT NULL,
`keyword` varchar(120) NOT NULL,
PRIMARY KEY (`kid`),
UNIQUE KEY `custom_idx` (`language_id`,`keyword`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
我的服务器有 1GB 的可用 RAM 内存。我的表有数百万行,我的 custom_idx 大小超过 1GB。 索引无法放入 RAM 内存。 mysql会做什么?是不是只有这个索引的一部分会存储在内存中?这会极大地破坏 BTREE/聚集索引的性能吗?
另外,如果我的索引大小不能满足 innodb_buffer_pool_size 限制,会发生什么?
复制是索引无法放入 RAM 内存的庞大 InnoDB 数据库的解决方案吗?
【问题讨论】:
-
我已经在 hexa 视图中检查了如何执行 MYISAM:单独的文件和索引。那个“egnine”可以在 InnoDB 中完成,但我没有在低级别检查过如何做,所以我不知道你的问题的答案,但是:根据我在那些大型数据库上的经验,其他的要好得多DB,以“O”开头,以“racle”结尾:) 对我来说,100 万是极限:在另一个 db 之上的那个 mysql 下。
标签: mysql replication innodb