Программа iNETsHOP - обработка, сравнение, анализ прайс листов поставщиков, создание каталога товаров интернет магазина Форум - Программа iNETsHOP - Работа с программой - Увеличение скорости обработки прайсов


http://inetshop.in.ua/index.php?p=showtopic&toid=270&fid=&area=1
26.10.2015 12:32

dominion


Пользователь iNETsHOP

Количество сообщений   8
Зарегистрирован:   11-01-2011, 12:14:20
Увеличение скорости обработки прайсов
Столкнулись с такой проблемой. За последнее время база очень сильно выросла и теперь большие прайсы 30-50 тыс позиций приходиться обновлять по 4-5 часов, что делает весь процесс обновления цен весьма затяжным. Например, у нас выходит получить обновленный свой прайс только к 18, начав обработку в 10.

Есть какие-то возможности этот процесс ускорить? железо или софт?

26.10.2015 15:06

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Работа сервера СУБД
Скорость обработки информации в той или иной мере зависит от нескольких факторов, таких как скорость работы дисковой подсистемы, дефрагментация файлов базы данных, дефрагментация индексов, загрузка процессора, размер оперативной памяти сервера и выделенный объем памяти для СУБД и т.п.

26.10.2015 15:35

dominion


Пользователь iNETsHOP

Тема начата

Количество сообщений   8
Зарегистрирован:   11-01-2011, 12:14:20
Intel Celeron g540 2.5GHz
8gb ram
500GB винчестер
стоит вин 7
Есть смысл что-то менять? Что-то конкретно даст увеличение скорости?

26.10.2015 15:44

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Производительность системы
Данный процессор далеко не самый быстрый (судя по стестам Intel Celeron g540) как и все "Селероны", но проблема скорее всего комплексная. Попробуйте для начала обойтись "малой кровью" - проведите дефрагментацию индексов базы данных (а лучше перестройте их), затем дефрагментацию дисков, проверьте выделение оперативной памяти для СУБД. Так же если у вас ОС x64, а СУБД x32 - то возможно стоит задуматься о переходе на СУБД x64 чтобы использовать больший объем оперативной памяти.


30.10.2015 12:47

vikarenko


Пользователь iNETsHOP

Количество сообщений   25
Зарегистрирован:   17-12-2014, 08:45:27
Производительность системы
Цитата
Написал: support
проведите дефрагментацию индексов базы данных (а лучше перестройте их)


Подскажите как это сделать. Это нужно делать до дефрагментации дисков или после?


30.10.2015 13:59

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Дефрагментация индексов базы данных
Нужно в базе данных выполнить один из следующих SQL-скриптов:

Дефрагментация индекса
Код
DECLARE @MyTable varchar(120);
DECLARE @MyIndex varchar(120);
DECLARE MyCursor CURSOR FOR
SELECT o.name, i.name
FROM sysobjects o INNER JOIN sysindexes i ON o.id = i.id
WHERE (o.xtype = 'U') AND (INDEXPROPERTY(i.id, i.name, 'isStatistics') = 0) AND (i.dpages > 0)
and not i.name is null
ORDER BY o.name, i.indid;

OPEN MyCursor;
FETCH NEXT FROM MyCursor INTO @MyTable, @MyIndex;
WHILE @@FETCH_STATUS=0
BEGIN
PRINT 'Дефрагментация индекса '+@MyIndex+' из таблицы '+@MyTable
DBCC INDEXDEFRAG (0,@MyTable,@MyIndex)
FETCH NEXT FROM MyCursor INTO @MyTable, @MyIndex;
END;
CLOSE MyCursor;
DEALLOCATE MyCursor;


Перестройка индекса
Код
DECLARE @MyTable varchar(120);
DECLARE @MyIndex varchar(120);
DECLARE MyCursor CURSOR FOR
SELECT o.name, i.name
FROM sysobjects o INNER JOIN sysindexes i ON o.id = i.id
WHERE (o.xtype = 'U') AND (INDEXPROPERTY(i.id, i.name, 'isStatistics') = 0) AND (i.dpages > 0)
and not i.name is null
ORDER BY o.name, i.indid;

OPEN MyCursor;
FETCH NEXT FROM MyCursor INTO @MyTable, @MyIndex;
WHILE @@FETCH_STATUS=0
BEGIN
PRINT 'Перестройка индекса '+@MyIndex+' из таблицы '+@MyTable
DBCC DBREINDEX(@MyTable, @MyIndex, 0)
FETCH NEXT FROM MyCursor INTO @MyTable, @MyIndex;
END;
CLOSE MyCursor;
DEALLOCATE MyCursor;


Следует отметить, что дефрагментация индекса не влияет на текущую активность пользователей в момент ее проведения. Перестройка индекса накладывает блокировку на любые модификации данных в таблице.

Дефрагментацию диска нужно проводить после дефрагментации/перестройки индексов баз данных.


11.11.2015 11:37

MaXX


Пользователь iNETsHOP


Количество сообщений   64
Зарегистрирован:   11-11-2008, 04:35:57
Увеличение скорости обработки прайсов
Цитата
Написал: dominion
Есть какие-то возможности этот процесс ускорить? железо или софт?


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

А вообще если эти прайсы нормальные, т.е. нормальной структуры и эта структура не меняется поставщиком "от балды", то можно настроить прямую заливку сразу в базу минуя интерфейс программы. Это дает прирост скорости в разы, а иногда и в десятки раз.

Ускорение прямой заливки связано с тем, что не производится куча всевозможных проверок значений ячеек, строк прайса итп итд. При необходимости в скл-запросе можно сделать пару преобразований для всего прайса по аналогии с "Скрипт обработки суммарный" который делает программа после чтения данных из прайс-листа.


11.11.2015 14:31

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Прямая загрузка прайсов в базу данных
Цитата
Написал: MaXX
А вообще если эти прайсы нормальные, т.е. нормальной структуры и эта структура не меняется поставщиком "от балды", то можно настроить прямую заливку сразу в базу минуя интерфейс программы. Это дает прирост скорости в разы, а иногда и в десятки раз.


Да, такая методика ускоряет загрузку прайсов, но она требует первичного анализа ситуации (к сожалению автор темы не выходит на связь) и индивидуальной настройки, т.к. OPENQUERY/OPENROWSET/OPENDATASOURCE требуют настройки или подключения удаленного сервера (Excel) и они зависят от установленных провайдеров OLEDB (Microsoft.Jet.OLEDB.4.0, Microsoft.ACE.OLEDB.12.0).

30.11.2015 11:52

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Ускорение загрузки прайс-листов
В новой версии клиента iNETsHOP 6.4.3.273/0054:

1. Оптимизация алгоритма импорта прайсов. Переработан алгоритм поддержки многопоточности и импорта прайс-листов в целом. Прирост особенно будет заметен на количестве процессоров (ядер) от 4-х и выше.
2. Исправлена не корректная работа автозамены текста (увеличена скорость поиска/замены) при импорте прайсов.

Все желающие клиенты могут принять участие в тестировании новой версии. Так же принимаются пожелания на расширение/усовершенствование функциональности программы.