Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.07.2010, 09:48
blsh blsh вне форума
Прохожий
 
Регистрация: 16.07.2010
Сообщения: 19
Репутация: 10
По умолчанию Ado и MS SQL

Доброе время суток!
Есть MS база, надо в нее, в режиме реального времени заливать данные из файлов .тхт.
Структура:
Barcode |IndexTo|MailDirect
RA145681496RU |0 |804
Файлы появляются еже минутно и в день заливается 300-500 тысяч записей. Через сутки(бывает и меньше) SQL сервер сходит с ума и зависает. Приходится перезагружать службы и приложение. Как решить проблему????
Для работы с базой использую АДО компоненты.
Ответить с цитированием
  #2  
Старый 29.07.2010, 09:56
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

а если попробывать грузить файлы не на прямую в базу а через буфер (вспомогательную таблицу), а из нее грузить в основную например 1 раз в час. Или может грузить не каждый файл по отдельности а например сразу по 100 штук.
__________________
Последний раз редактировалось Admin, Сегодня в 10:32.
Ответить с цитированием
  #3  
Старый 29.07.2010, 10:35
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию

Цитата:
Сообщение от friz
а если попробывать грузить файлы не на прямую в базу а через буфер (вспомогательную таблицу), а из нее грузить в основную например 1 раз в час. Или может грузить не каждый файл по отдельности а например сразу по 100 штук.
Вроде ж автор написал, что надо в "реальном времени".
blsh, ну покаж как эти файлы обрабатываются.
Ответить с цитированием
  #4  
Старый 29.07.2010, 10:40
Kapitoshka438 Kapitoshka438 вне форума
Начинающий
 
Регистрация: 09.11.2009
Сообщения: 145
Репутация: 238
По умолчанию

Может будет лучше, если файлы будут в формате xml. В MSSQL очень удобная и быстрая работа с ними. У нас в день на сервера принимаются десятки тысяч записей в разные таблицы. Загрузка идет каждые 20 минут. Все отлично работает, ничего не падает. {поплевал и постучал по дереву}
Ответить с цитированием
  #5  
Старый 29.07.2010, 11:19
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Возможно вы на каждую порцию транзакции применяете, вот у вас журнал и растет по дурному. Конечно без транзакций стремно, но для эксперимента можно попробовать, можно еще сам журнал задать фиксированный возможно поможет. Можно делать еще временный ежесуточный файл изменений, и вливать в основную БД из него раз в сутки.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 29.07.2010, 11:49
blsh blsh вне форума
Прохожий
 
Регистрация: 16.07.2010
Сообщения: 19
Репутация: 10
По умолчанию

Код:
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:01
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Я бы вам рекомендовал переписать весь этот блок как хранимку, т.к. я невижу в этом коде ничего, что-бы требовало его генерацию на клиенте.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 29.07.2010 в 13:06.
Ответить с цитированием
  #8  
Старый 29.07.2010, 13:38
blsh blsh вне форума
Прохожий
 
Регистрация: 16.07.2010
Сообщения: 19
Репутация: 10
По умолчанию

Я бы вам рекомендовал переписать весь этот блок как хранимку, т.к. я невижу в этом коде ничего, что-бы требовало его генерацию на клиенте.
-----можно поеснить????
Ответить с цитированием
  #9  
Старый 29.07.2010, 15:02
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию

Цитата:
Сообщение от Страдалецъ
Я бы вам рекомендовал переписать весь этот блок как хранимку, т.к. я невижу в этом коде ничего, что-бы требовало его генерацию на клиенте.
А Prepared в этом случае не спасет ситуацию?
Ответить с цитированием
  #10  
Старый 29.07.2010, 16:34
blsh blsh вне форума
Прохожий
 
Регистрация: 16.07.2010
Сообщения: 19
Репутация: 10
По умолчанию

Пробую! Но думаю врятли, т.к. были бы ошибки запроса!?
а у мя просто SQL перестает отвечать
Ответить с цитированием
  #11  
Старый 29.07.2010, 19:23
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Слушайте, я тут ваш SQL-код еще раз посмотрел, а он у вас точно работает без ошибок? Я там что-то не нашел From для первого селекта.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #12  
Старый 30.07.2010, 13:30
Kapitoshka438 Kapitoshka438 вне форума
Начинающий
 
Регистрация: 09.11.2009
Сообщения: 145
Репутация: 238
По умолчанию

По-моему, там нет слова FROM, потому что выборка для вставки идет не из таблицы. Это просто строка значений. => Каждая строка вставляется в отдельном запросе. Для каждой стрки отдельная транзакция. Поэтому так долго.

Последний раз редактировалось Kapitoshka438, 30.07.2010 в 13:36.
Ответить с цитированием
  #13  
Старый 02.08.2010, 13:34
blsh blsh вне форума
Прохожий
 
Регистрация: 16.07.2010
Сообщения: 19
Репутация: 10
По умолчанию

Kapitoshka438 - все верно!только вопрос не во времени а, Почему сервер падает!?
Ответить с цитированием
  #14  
Старый 02.08.2010, 14:47
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Ну я же уже сделал предположение. Попробуйте для начала просто закоментить
Код:
 
ADOConnection1.BeginTrans; и ADOConnection1.CommitTrans;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #15  
Старый 02.08.2010, 15:09
blsh blsh вне форума
Прохожий
 
Регистрация: 16.07.2010
Сообщения: 19
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Ну я же уже сделал предположение. Попробуйте для начала просто закоментить
Код:
 
ADOConnection1.BeginTrans; и ADOConnection1.CommitTrans;

изначально было без этого,-появилось в процессе борьбы с проблемой
т.е.безполезно
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:38.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter