Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Потребление памяти 
V
    Опции темы
royun
Дата 17.1.2012, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 22.8.2011

Репутация: нет
Всего: нет



Добрый день.

У меня есть программа, которая передает данные из 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 Мб. После открытия программы потребление памяти начинает падать. 

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

Как быть, посоветуйте пожалуйста.
PM MAIL   Вверх
Vas
Дата 17.1.2012, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Цитата(royun @  17.1.2012,  09:58 Найти цитируемый пост)
Когда программу запускаешь, то программа подключается к таблице и считывает все 8 млн. записей и потом открывается. 

Зачем все выбирать? Вроде же программа передает
Цитата(royun @  17.1.2012,  09:58 Найти цитируемый пост)
У меня есть программа, которая передает данные из StringGrida в таблицу SQL Server 2000.

Ну, а если прям сильно надо выбирать, то делай условие по которому выбираться записи будут.


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
superVad
Дата 17.1.2012, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 3
Всего: 15



royun, сомневаюсь, что кому то может понадобится 8 млн. записей на экране.
Устанавливай какие то фильтры по дате.
PM MAIL   Вверх
royun
Дата 18.1.2012, 05:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 22.8.2011

Репутация: нет
Всего: нет



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

Вот и поэтому происходят тормоза в программе. Как это дело обойти можно?
PM MAIL   Вверх
Vas
Дата 18.1.2012, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



А собственно зачем при открытии программы компоненту ADODataSet  ставить свойство Active=True?

Хочешь чтобы помогли, ответь на вопрос: Зачем тебе все 8млн записей на клиенте????



--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
chip_and_dayl
Дата 18.1.2012, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Добавление идет через инсерт ADODataSet!?!

Инсерт лучше делать через запрос INSERT INTO ... тогда чтобы вставить запись не нужно открывать вообще таблицу с 8 миллионами или одной записью

Добавлено @ 10:22
То что вы написали в хранимке с надеждой о чуде.... можете убрать вашу хранимку, она явно не для таких целей предназначена (ИМХо)

Добавлено @ 10:24
По поводу открытия программы, читайте советы 
Vas и
superVad
только индекс по дате добавьте

Это сообщение отредактировал(а) chip_and_dayl - 18.1.2012, 10:24


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
royun
Дата 18.1.2012, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 22.8.2011

Репутация: нет
Всего: нет



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


Код

select * from billing
where npp='1'



И теперь не тащу на клиента 8 млн. записей. И все записи корректно переносятся в таблицу. Проверил.

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

Тема закрыта.

Это сообщение отредактировал(а) royun - 18.1.2012, 11:20
PM MAIL   Вверх
Vas
Дата 18.1.2012, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Цитата(royun @  18.1.2012,  11:19 Найти цитируемый пост)
И теперь не тащу на клиента 8 млн. записей. И все записи корректно переносятся в таблицу. Проверил.


Дык если бы тебя не пытали, зачем тебе 8 млн записей, до сих пор бы тянул  smile 

Это сообщение отредактировал(а) Vas - 18.1.2012, 14:35


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1146 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.