I can't find any info regarding my question. This is more theoretical question. For example, i have table 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 ;
My server has 1GB of free RAM memory. My table has millions of rows and size of my custom_idx is more than 1GB. Index can't fit into RAM memory. What would mysql do ? Is only part of this index will be stored in the memory ? Will this break BTREE/Clustered index performance dramatically ?
Also, if size of my index can't fit into innodb_buffer_pool_size limits, what would happen ?
Is replication is the answer to enormous InnoDB databases where indexes can't fit into RAM memory ?
I need to keep all my indexes in RAM ? What if my db size is more than 500gb?
SELECT COUNT(1) FROM keywords;
2)SELECT MAX(language_id) FROM keywords;