Как узнать, сколько основной памяти использует приложение - PullRequest
0 голосов
/ 28 октября 2008

Мне нужно выбрать систему управления базами данных (СУБД), которая использует наименьший объем основной памяти, поскольку мы серьезно ограничены. Поскольку СУБД будет использовать все больше и больше памяти для хранения индекса в основной памяти, как точно определить, какая СУБД занимает наименьший объем памяти?

Прямо сейчас у меня просто открыта программа монитора памяти, пока я выполняю серию запросов, которые мы назовем X. Затем я запускаю один и тот же набор запросов X в другой СУБД и вижу, сколько памяти используется за время ее существования сравнить с другими следами памяти.

Это не глупый способ сделать это? Есть ли лучший способ?

Спасибо, JBU

Ответы [ 3 ]

2 голосов
/ 28 октября 2008

Просто используйте SQLite. В одном процессе. С С ++ желательно.

1 голос
/ 28 октября 2008

То, что вы можете сделать в приложении, это управлять тем, как вы извлекаете данные. Если вы извлекаете все строки из данного запроса, он может попытаться создать Collection в вашем приложении, которое может очень быстро потреблять память, если вы не будете осторожны. Это, вероятно, наиболее вероятная причина истощения памяти.

Чтобы решить эту проблему, откройте курсор на запрос и извлеките строки одну за другой, отбрасывая объекты строк по мере итерации по набору результатов. Таким образом, вы сохраняете только одну строку за раз, и вы можете легко предсказать «высокую отметку».

В зависимости от драйвера JDBC (т. Е. Марки базы данных, к которой вы подключаетесь), может быть сложно убедить драйвер JDBC , а не выполнить выборку. Например, некоторые драйверы получают весь набор результатов, чтобы вы могли прокручивать его как вперед, так и назад. Несмотря на то, что JDBC является стандартным интерфейсом, его настройка для выполнения построчно вместо fetchall может включать в себя собственные опции.

На стороне сервера базы данных вы должны иметь возможность управлять объемом памяти, который он выделяет для кэша индекса и т. Д., Но конкретные вещи, которые вы можете настроить, различны для каждой марки базы данных. Там нет ярлыка для обучения себя о том, как настроить каждый сервер.

0 голосов
/ 28 октября 2008

В конечном счете, такая оптимизация, вероятно, отвечает не на тот вопрос.

Скорее всего, ответы, которые вы получите во время такого рода тестирования, будут вводить в заблуждение, потому что СУБД будет реагировать по-другому в «живых» обстоятельствах, чем во время вашего тестирования. Кроме того, вы привязываетесь к определенной архитектуре. Трудно изменить СУБД в будущем, если вы написали код против нее. Вам будет гораздо лучше найти, какая СУБД удовлетворит ваши потребности и упростит процесс разработки, а затем убедитесь, что вы оптимизируете свои запросы и индексы SQL в соответствии с потребностями вашего приложения.

...