| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Потребление памяти |
| Автор: royun 17.1.2012, 09:58 | ||||
| Добрый день. У меня есть программа, которая передает данные из StringGrida в таблицу SQL Server 2000. Используется ADOConnection, ADODataSet. Для доступа к таблице. Передача данных идет следующим образом:
В свойствах ADODataSet CommandType стоит cmdStoredProc и в CommandText стоит имя хранимой процедуры sp1;1. А в хранимой процедуре команда:
Сейчас в таблице порядка 8 млн. записей. Когда программу запускаешь, то программа подключается к таблице и считывает все 8 млн. записей и потом открывается. Проходит примерно 16 минут. Потребляет оперативной памяти около 1.5 Гб, SQL Server 2000 ограничил 500 Мб. После открытия программы потребление памяти начинает падать. Проблема потребления памяти только на стадии открытия программы. Как быть, посоветуйте пожалуйста. |
| Автор: superVad 17.1.2012, 13:49 |
| royun, сомневаюсь, что кому то может понадобится 8 млн. записей на экране. Устанавливай какие то фильтры по дате. |
| Автор: royun 18.1.2012, 05:18 |
| Настроил ADOConnection, в ADODataSet в свойствах Connection выбираю ADOConnection. Если я не заполню свойство ADODataSet CommandText, то когда свойство Active ставлю TRUE выходит ошибка "Missing command text property". Поэтому в свойстве CommandType ставлю cmdStoredProc и в CommandText пишу имя хранимой процедуры sp1;1, т.к. хранимые процедуры выполняются быстрее. Вот и поэтому происходят тормоза в программе. Как это дело обойти можно? |
| Автор: Vas 18.1.2012, 08:08 |
| А собственно зачем при открытии программы компоненту ADODataSet ставить свойство Active=True? Хочешь чтобы помогли, ответь на вопрос: Зачем тебе все 8млн записей на клиенте???? |
| Автор: chip_and_dayl 18.1.2012, 10:19 |
| Добавление идет через инсерт ADODataSet!?! Инсерт лучше делать через запрос INSERT INTO ... тогда чтобы вставить запись не нужно открывать вообще таблицу с 8 миллионами или одной записью Добавлено @ 10:22 То что вы написали в хранимке с надеждой о чуде.... можете убрать вашу хранимку, она явно не для таких целей предназначена (ИМХо) Добавлено @ 10:24 По поводу открытия программы, читайте советы Vas и superVad только индекс по дате добавьте |
| Автор: royun 18.1.2012, 11:19 | ||
Все на само деле оказалось куда проще:
И теперь не тащу на клиента 8 млн. записей. И все записи корректно переносятся в таблицу. Проверил. Не ругайте, только начинаю. Тема закрыта. |
| Автор: Vas 18.1.2012, 14:34 | ||
Дык если бы тебя не пытали, зачем тебе 8 млн записей, до сих пор бы тянул |