Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.20;
Скачать: CL | DM;

Вниз

Тормоза при выборке из базы MSSql Server   Найти похожие ветки 

 
Raduga   (2003-10-31 09:11) [0]

Здравствуйте, мастера.
Есть база SQL Server. Весит около 200 метров. Подключаюсь к ней через ADO (провайдер OLE DB Provider for SQL SErver). Пытаюсь через ADOQuery сделать выборку: select * from Table1 (в тайбле1 хранится основной объем данный и она является подчиненной). И прога не отвечает при выполнении этого запроса в теч 5 мин и более (более 5 мин я и не ждал). Где может быть ошибка? ADOQuery и ADOConnection на стороне сервера.


 
paul_k ©   (2003-10-31 09:27) [1]

а точно у тебя "select * from table1" исполняется?
а не "select * from table1,table2"
проверь что прога передает серверу, воспользовавшись прогой Profiler от сервера. (или от клиента)
скорее всего select у тебя кривой


 
bushmen ©   (2003-10-31 09:45) [2]

А сколько записей у тебя в основной этой таблице? Порядка
12 000 000 ? :)


 
Sergey13 ©   (2003-10-31 09:45) [3]

Попробую предположить, что когда база вырастет до 400М и 10 минут не хватит. 8-)
>Где может быть ошибка?
В голове. Это как разруха. см. пр. Преображенского.

Но это мое предположение.


 
bushmen ©   (2003-10-31 09:53) [4]

> Raduga (31.10.03 09:11)

А если тип курсора поставить clUseServer ?


 
ZrenBy ©   (2003-10-31 10:31) [5]

http://www.sql.ru/forum/actualthread.aspx?bid=20&tid=53351


 
bushmen ©   (2003-10-31 10:52) [6]

>ZrenBy ©
Это ты к чему?


 
ZrenBy ©   (2003-10-31 10:57) [7]

>>bushmen © (31.10.03 10:52) [6]

К тормозам


 
bushmen ©   (2003-10-31 11:03) [8]

>ZrenBy ©
Так в том топике ты же не сказал, что все получилось. :)


 
Raduga   (2003-10-31 11:09) [9]

В том то и дело что курсоры на стороне сервера.


 
Sergey13 ©   (2003-10-31 11:18) [10]

2Raduga
>в тайбле1 хранится основной объем данный и она является подчиненной
Так ты наверное ее фильтруешь сразу после открытия? Вот она и выкачивается вся, что бы отфильтроваться.

Но это мое предположение.


 
Delirium ©   (2003-10-31 11:19) [11]

Раз курсор серверный, следовательно сервер - загружен. Остался открытым вопрос - для какой такой задачи потребовалась выборка в миллион записей ?


 
Raduga   (2003-10-31 11:32) [12]

>Delirium © (31.10.03 11:19) [11]
Задача такая:
Раз в секунду нужно писать в базу показания датчика (числовое значение + время, когда записываем), датчиков 48...Работа круглосуточно. Вот и считайте. А потом эти показания надо выводить в виде графика и т.п. Хотя бы показания одного датчика, за сутки, так там тоже не мало записей будет.


 
Sergey13 ©   (2003-10-31 11:41) [13]

2Raduga (31.10.03 11:32) [12]
>Хотя бы показания одного датчика, за сутки, так там тоже не мало записей будет.
Ну дык меньше же в 48 раз как минимум. 8-)
А график надо строить по всем записям (за Х лет) или только текущее значение? Может его строить ДО записи в БД? Типа пририсовал точечку по текущему значению, потом записал.

Но это мое предположение.


 
Delirium ©   (2003-10-31 11:43) [14]

Ну так писать в базу это совсем не одно и то-же что читать из базы, писать можно очень много и очень быстро


 
Raduga   (2003-10-31 11:55) [15]

Вот именно, по всем записям имеющимся в базе для данного датчика
(график привел для примера, можно и табличное представление). За три месяца - срок хранения показаний. Все равно записей немало будет.


 
Sergey13 ©   (2003-10-31 11:58) [16]

А нафига в таблице представлять столько - это ИМХО еще более разруха. 8-(


 
Raduga   (2003-10-31 11:59) [17]

Не мои требования...:(


 
Sergey13 ©   (2003-10-31 12:02) [18]

Не моя реализация 8-(


 
Delirium ©   (2003-10-31 12:03) [19]

Короче, раз стоит задача отображать в реал-тайме 1000000 записей, значит надо хранить сие локально и обновлять по событиям, см. UBPFD


 
handra ©   (2003-10-31 13:27) [20]

блокировки? или тюнинг индексов (в т.ч. кластерных)?


 
Anatoly Podgoretsky ©   (2003-10-31 13:46) [21]

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


 
Johnmen ©   (2003-10-31 14:20) [22]

А как ты пишешь в базу ? В смысле, в таблицу ?
И еще. Тормоза в процессе записи или в процессе получения данных для отображения показаний в виде графика ?


 
Raduga   (2003-10-31 14:23) [23]

>Anatoly Podgoretsky © (31.10.03 13:46) [21]
Так чтож делать-то (только советуйте пожалуйста по делу)


 
Raduga   (2003-10-31 14:25) [24]

Не в процессе ЗАПИСИ, а в процссе выборки


 
Delirium ©   (2003-10-31 14:36) [25]

Я тебе уже сказал что делать - хранить данные локально, т.е. на клиенте, и качать с сервера только новую инфу, ничего другого тут не придумаешь. А уж как ты реализуешь этоу подкачку - можно по рассуждать, вариантов - море. От локального MSSQL c репликацией, до сохранённого RecordSet-а. Как вариант можно рассмотреть локальную БД типа DBF и т.п.


 
Johnmen ©   (2003-10-31 14:39) [26]

>Raduga (31.10.03 14:25) [24]
>Не в процессе ЗАПИСИ, а в процссе выборки

В процессе выборки для целей отображения ? Только для них ?



Страницы: 1 вся ветка

Текущий архив: 2003.11.20;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.146 c
1-65817
Ломброзо
2003-11-10 11:02
2003.11.20
VB ActiveX


9-65685
The Kinslayer
2003-05-13 03:17
2003.11.20
О GLScene


1-66004
RuslanKad
2003-11-09 19:59
2003.11.20
Проблемы с ToolBar в Win95


14-66104
VictorT
2003-10-28 22:05
2003.11.20
Ищется рассказ.


1-65945
Alex-21
2003-11-10 19:41
2003.11.20
Картинка в TRichEdit98