Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2012, 10:57   #1
royun
Пользователь
 
Регистрация: 20.05.2011
Сообщений: 67
По умолчанию Потребление памяти

Добрый день.

У меня есть программа, которая передает данные из StringGrida в таблицу SQL Server 2000. Используется ADOConnection, ADODataSet. Для доступа к таблице. Передача данных идет следующим образом:

Код:
ADODataSet1['Date'] := StrToDateTime(StringGrid2.Cells[1, iRow]);
      ADODataSet1['AbonentA'] := StringGrid2.Cells[2, iRow];
      ADODataSet1['AbonentB'] := StringGrid2.Cells[3, iRow];
      ADODataSet1['Vremia'] := StringGrid2.Cells[4, iRow];
      ADODataSet1['Dlit'] := StringGrid2.Cells[5, iRow];
      ADODataSet1['Dlit_fakt'] := StringGrid2.Cells[6, iRow];
      ADODataSet1['Vh_trunk'] := StringGrid2.Cells[7, iRow];
      ADODataSet1['Ish_Trunk'] := StringGrid2.Cells[8, iRow];
      ADODataSet1['Prichina'] := StringGrid2.Cells[9, iRow];
      ADODataSet1['Zona'] := StringGrid2.Cells[10, iRow];
В свойствах ADODataSet CommandType стоит cmdStoredProc и в CommandText стоит имя хранимой процедуры sp1;1. А в хранимой процедуре команда:

Код:
CREATE PROCEDURE sp1 AS
select * from billing
GO
Сейчас в таблице порядка 8 млн. записей. Когда программу запускаешь, то программа подключается к таблице и считывает все 8 млн. записей и потом открывается. Проходит примерно 16 минут. Потребляет оперативной памяти около 1.5 Гб, SQL Server 2000 ограничил 500 Мб. После открытия программы потребление памяти начинает падать.

Проблема потребления памяти только на стадии открытия программы.

Как быть, посоветуйте пожалуйста.
royun вне форума Ответить с цитированием
Старый 17.01.2012, 11:33   #2
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

Цитата:
то программа подключается к таблице и считывает все 8 млн. записей
А зачем?
Вам нужны все записи в один момент времени?
Вот тут вам надо оптимизировать.
А основная идея оптимизации нафига мне 8 млн записей. И сколько записей мне нужно?
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума Ответить с цитированием
Старый 17.01.2012, 19:49   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Цитата:
передает данные из StringGrida в таблицу SQL Server 2000. Используется ADOConnection, ADODataSet. Для доступа к таблице.
И зачем ей (процедуое) SELECT? если мы только записываем!
Цитата:
А основная идея оптимизации нафига мне 8 млн записей. И сколько записей мне нужно?
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 18.01.2012, 06:12   #4
royun
Пользователь
 
Регистрация: 20.05.2011
Сообщений: 67
По умолчанию

Настроил ADOConnection, в ADODataSet в свойствах Connection выбираю ADOConnection. Если я не заполню свойство ADODataSet CommandText, то когда свойство Active ставлю TRUE выходит ошибка "Missing command text property". Поэтому в свойстве CommandType ставлю cmdStoredProc и в CommandText пишу имя хранимой процедуры sp1;1, т.к. хранимые процедуры выполняются быстрее.

Вот и поэтому происходят тормоза в программе. Как это дело обойти можно?
royun вне форума Ответить с цитированием
Старый 18.01.2012, 11:02   #5
royun
Пользователь
 
Регистрация: 20.05.2011
Сообщений: 67
По умолчанию

Все на само деле оказалось куда проще:

Код:
select * from billing
where npp='1'
И теперь не тащу на клиента 8 млн. записей. И все записи корректно переносятся в таблицу. Проверил.

Не ругайте, только начинаю.

Тема закрыта.
royun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Важность характеристики потребление памяти Xe-Xe Помощь студентам 9 12.06.2011 12:53
Программа для тестирования памяти, тестирование ячеек памяти Hunter557 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 30.01.2011 19:20
Кольцевая очередь на массиве в статической памяти с элементами в динамической памяти ]tach[ Общие вопросы C/C++ 1 19.01.2011 13:16
Бешеное потребление виртуальной памяти при работе в Excel 2003 dikdm Microsoft Office Excel 2 28.04.2009 13:10
Освобождение памяти AlexandrSid Общие вопросы Delphi 3 02.02.2009 13:45