Должен ли я управлять страницами или просто опираться на виртуальную память? - PullRequest
5 голосов
/ 22 июля 2010

Я пишу вещь в стиле базы данных на C (т.е. она будет хранить и обрабатывать около 500 000 записей).Я собираюсь запустить его в среде с ограниченным объемом памяти (VPS), поэтому я не хочу, чтобы использование памяти зависало.Я не собираюсь обрабатывать огромные объемы данных - возможно, до 200 МБ, но я хочу, чтобы объем памяти оставался в районе 30 МБ (вытаскивая эти цифры из воздуха).

Мой инстинкт выполняет свою собственную обработку страниц (реальные базы данных делают это), но я получил совет о том, что я должен просто выделить все это и позволить ОС выполнять подкачку виртуальной машины за меня.Мои числа никогда не превысят этот порядок. Что является лучшим выбором в этом случае?

Если предположить второй вариант, в какой момент было бы разумно, чтобы программа выполняла свою собственную подкачку страниц?Очевидно, что RDBM, которые могут обрабатывать гигабайты, должны это делать, но на шкале, где стоит задавать вопрос, должна быть точка.

Спасибо!

Ответы [ 2 ]

9 голосов
/ 22 июля 2010

Используйте malloc, пока он не запустится. Тогда и только тогда , начните профилирование.Если вы столкнетесь с теми же проблемами производительности, что и проприетарные и обычные «реальные базы данных», вы, естественно, начнете выполнять оптимизацию кэша / страницы / выравнивания.После того, как у вас есть рабочая база данных, их можно легко распределить, и они ортогональны наличию рабочей базы данных.

3 голосов
/ 22 июля 2010

Системы управления базами данных, которые выполняют свою собственную пейджинговую передачу, также выигрывают от огромных исследовательских усилий, направленных на обеспечение того, чтобы их алгоритмы пейджинговой связи хорошо функционировали при различных условиях системы и нагрузки. Если у вас нет подобного набора ресурсов, я бы рекомендовал не использовать такой подход.

Система подкачки ОС, которой вы располагаете, уже выиграла от настройки многих людей.

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

Короче говоря, если вы команда из одного человека или небольшая команда, вам, вероятно, следует использовать существующие инструменты, а не пытаться свернуть свои собственные в этой конкретной области.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...