![]() |
|
|
#1
|
|||
|
|||
![]() Доброе время суток!
Есть MS база, надо в нее, в режиме реального времени заливать данные из файлов .тхт. Структура: Barcode |IndexTo|MailDirect RA145681496RU |0 |804 Файлы появляются еже минутно и в день заливается 300-500 тысяч записей. Через сутки(бывает и меньше) SQL сервер сходит с ума и зависает. Приходится перезагружать службы и приложение. Как решить проблему???? Для работы с базой использую АДО компоненты. |
#2
|
||||
|
||||
![]() а если попробывать грузить файлы не на прямую в базу а через буфер (вспомогательную таблицу), а из нее грузить в основную например 1 раз в час. Или может грузить не каждый файл по отдельности а например сразу по 100 штук.
Последний раз редактировалось Admin, Сегодня в 10:32. |
#3
|
||||
|
||||
![]() Цитата:
blsh, ну покаж как эти файлы обрабатываются. |
#4
|
|||
|
|||
![]() Может будет лучше, если файлы будут в формате xml. В MSSQL очень удобная и быстрая работа с ними. У нас в день на сервера принимаются десятки тысяч записей в разные таблицы. Загрузка идет каждые 20 минут. Все отлично работает, ничего не падает. {поплевал и постучал по дереву}
|
#5
|
||||
|
||||
![]() Возможно вы на каждую порцию транзакции применяете, вот у вас журнал и растет по дурному. Конечно без транзакций стремно, но для эксперимента можно попробовать, можно еще сам журнал задать фиксированный возможно поможет. Можно делать еще временный ежесуточный файл изменений, и вливать в основную БД из него раз в сутки.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#6
|
|||
|
|||
![]() Код:
ADOConnection1.BeginTrans; ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Text:='INSERT INTO Barcodes_File(Barcode, Index_To, Country, Files_Name, DateTimes) SELECT '+QuotedStr(sID)+','+QuotedStr(sIndexTo)+','+QuotedStr(sMailDer)+','+QuotedStr(FileName)+','+QuotedStr(DateTimeToStr(Now))+' WHERE NOT EXISTS (SELECT 1 FROM Barcodes_File WHERE Barcode = '+QuotedStr(sID)+' and Files_Name = '+QuotedStr(FileName)+')'; ADOQuery1.ExecSQL; ADOConnection1.CommitTrans; |
#7
|
||||
|
||||
![]() Я бы вам рекомендовал переписать весь этот блок как хранимку, т.к. я невижу в этом коде ничего, что-бы требовало его генерацию на клиенте.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 29.07.2010 в 13:06. |