Итак, при свободном выводе мы заботимся об использовании памяти приложением, как правило, об объеме свободной памяти в строке - / + buffers / cache. Как насчет приложений баз данных, таких как Oracle, важно ли иметь достаточный объем кеширования и буферов, доступных для базы данных, чтобы она хорошо работала со всеми операциями ввода-вывода?
Если в этом есть какой-то смысл, как узнать, сколько именно?
Ну, это же вроде просто. Короткий ответ - «возитесь с этим и проводите нагрузочные испытания, пока не найдете пиковые характеристики».
Более детально:
Большинство движков баз данных попадают в одну из двух слишком широких категорий:
Тип №1 не заботится о буферном кэше ОС. Он хочет использовать всю ОЗУ для своего собственного кеша и предпочел бы, чтобы ОС убиралась с его пути (они почти всегда работают на больших жирных выделенных системах)
Совершенно очевидно, что Oracle и Sybase могут быть настроены таким образом, но я уверен, что другие могут.
Тип № 2 включает Oracle и Sybase (с разными конфигурациями), а также два гиганта с открытым исходным кодом (MySQL и Postgres). Эти системы делать заботиться о буферном кеше ОС, но Сколько их забота спорна и зависит от основного механизма хранения и эффективности буферного кеша ОС.
В большинстве случаев здесь есть два уровня кеширования (механизм БД имеет кеш, а ОС имеет свой буферный кеш), и вы настраиваете оба кеша вверх и вниз, пока не найдете сочетание, которое дает вам лучшую производительность.
Есть еще несколько подробных примечаний по типу №2 в Вики Сообщества (искать shared_buffers
& effective_cache_size
). Эти примечания относятся к Postgres, но концепции обычно применимы к другим механизмам БД, которые используют файловую систему для хранения своих данных.
Однако это всегда сводится к короткому ответу, который я дал в начале.