Я тестирую некоторые компоненты баз данных, такие как SDAC
и другие, и обнаружил кое-что интересное:
Когда я выполняю запрос с TADOQuery
, и у этого запроса есть много полей больших двоичных объектов, и я получаювсе строки (fetchall
) память моего приложения приближается к 1,8 ГБ, и все работает нормально.
При использовании других компонентов тот же запрос, выполняемый в той же базе данных, создает исключение Out of Memory
, поскольку оно превышает 1,8 ГБ памяти.
Я знаю, что не должен возвращать все эти строки, яследует использовать нумерацию страниц и блаблабла.Но мне любопытно, как ADO может управлять всеми строками и другими компонентами.
Я думаю, что ADO сжимает большие двоичные объекты в памяти, но это только предположение.
Кто-нибудь знает, почему использование памяти в ADO так хорошо?