Назад | Перейти на главную страницу

Как MySQL 5.5 и InnoDB в Linux используют оперативную память?

MySQL 5.5 InnoDB хранит индексы в памяти и таблицы на диске? Выполняется ли когда-либо собственное кеширование в памяти части или целых таблиц? Или он полностью полагается на кеш страницы ОС (я предполагаю, что это так, поскольку кеш SSD Facebook, который был построен для MySQL, был создан на уровне ОС: https://github.com/facebook/flashcache/)? Использует ли Linux по умолчанию всю доступную оперативную память для кеширования страниц? Итак, если размер ОЗУ превышает размер таблицы + память, используемую процессами, тогда, когда сервер MySQL запускается и впервые считывает всю таблицу, она будет с диска, и с этого момента вся таблица будет в ОЗУ? Итак, используя базу данных Alchemy (SQL поверх Redis, все всегда в ОЗУ: http://code.google.com/p/alchemydatabase/) не должно быть намного быстрее MySQL, учитывая тот же размер RAM и базы данных?

Прочтите innodb_buffer_pool_size.

Вот как вы сообщаете innodb, сколько оперативной памяти нужно удерживать для кеширования. (без использования кеша страниц ОС)

Документы MySQL 5.5 - http://dev.mysql.com/doc/refman/5.5/en/innodb-parameters.html

Хороший блог для подписки - http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/

Думайте о Flashcache как о кэше SSD L1, расположенном перед жестким диском.

Я не могу говорить о производительности Redis по сравнению с MySQL, но у MySQL есть другие накладные расходы на производительность при обработке операторов, соответствие ACID и тому подобное ...

Если вы все в оперативной памяти, производительность будет "ХОРОШЕЙ" в любой системе.