On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
администратор




Пост N: 7866
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.11.23 19:18. Заголовок: Копирование открытых баз данных


Имею непонятку.
Cтал в последнее время замечать что скорость копирования базы
а она на данный момент весит 10 гиг , стало занимать до ~15 минут ,
хотя пару недель назад это время было всего ~32 секунды.
Провел эксперимент , в базах ни кого нет , время копирования
базы заняло ~32 секунды , зашел в прогу и перешел в раздел
где открывается много баз и снова запустил копирование ,
цирк ...время заняло ~ 33 секунды и ни какими минутами и не пахнет.
Копирую базы так
 
FOR EACH aFile IN aDir
hb_DynCall({ "CopyFileA", "kernel32.dll", HB_DYN_CALLCONV_STDCALL },pathbase+"dbf\"+afile[1],pathbase+"zip\"+afile[1],0)
hb_releaseCPU()
Next

Винт SSD и ему почти 2 года.
Не пойму куда копать ....есть какие мысли у кого ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 84 , стр: 1 2 3 4 5 All [только новые]


постоянный участник


Пост N: 1691
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 29.11.23 08:38. Заголовок: А при каком условии ..


А при каком условии долго? Когда больше одного работает?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7867
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.11.23 11:48. Заголовок: PSP пишет: А при ка..


PSP пишет:

 цитата:
А при каком условии долго? Когда больше одного работает?


Да выяснил вчера , что при повторном копировании время занимает почему то
в 2.5 - 3 раза больше чем при первоначальном копировании. А копирование
происходит 1 раз в час , соответственно через часов 7-8 выйдем на результат
в 15 минут. Почему не понял.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1692
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 29.11.23 12:35. Заголовок: А если интервал увел..


А если интервал увеличить или уменьшить? Эффект какой будет?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4459
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.11.23 13:11. Заголовок: Попробуй XCopy, у ме..


Попробуй XCopy, у меня каждые 2-а часа планировщик запускает получение zip+xcopy на др. PC.
Что будет ? Когда у тебя тормозит, что будет на xCopy ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7868
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.11.23 15:19. Заголовок: Убрал пока из цикла ..


Убрал пока из цикла hb_releaseCPU()
Вышел на 16 сек
Через 1 час проверю

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1963
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 29.11.23 15:23. Заголовок: SergKis пишет: Попр..


SergKis пишет:

 цитата:
Попробуй XCopy, у меня каждые 2-а часа планировщик запускает получение zip+xcopy на др. PC.


вместо xCopy лучше использовать RoboCopy, утилита более продвинутая и оптимизирована на работу в сети

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4460
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.11.23 16:54. Заголовок: Haz пишет вместо xCo..


Haz пишет
 цитата:
вместо xCopy лучше использовать RoboCopy, утилита более продвинутая и оптимизирована на работу в сети


Возможно и лучше, но admin (это чужие PC) вряд ли будет ставить лишнюю утилиту, если работают штатные, тем более это работа сервер-сервер, на одном работает от планировщика gbak+7z, на другом полученные файлы 7z планировщик забирает xCopy по маске

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7869
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.11.23 17:00. Заголовок: SergKis так она шта..


SergKis
так она штатная

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7870
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.11.23 17:47. Заголовок: короче при первом за..


короче при первом запуске копирования
16 сек
спустя час , та же операция
43 сек
спустя час , та же операция
54 сек

Просто уже интересно , почему так...



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4461
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.11.23 18:36. Заголовок: Haz пишет лучше испо..


Haz пишет
 цитата:
лучше использовать RoboCopy


Dima пишет
 цитата:
так она штатная


Спасибо, не знал, что есть такая штука.
Dima пишет
 цитата:
54 сек Просто уже интересно , почему так...


Как штатные копирования ведут себя в это время (или за это время) ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7871
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.11.23 18:41. Заголовок: Штатные работают чут..


Штатные работают чуть медленнее а вот причину замедления я кажись нашел.
Было
 
FOR EACH aFile IN aDir
hb_DynCall({ "CopyFileA", "kernel32.dll", HB_DYN_CALLCONV_STDCALL },pathbase+"dbf\"+afile[1],pathbase+"zip\"+afile[1],0)
Next

Стало
 
hLib := hb_libLoad( "Kernel32.dll" )
IF ! Empty( hLib )
FOR EACH aFile IN aDir
hb_DynCall({ "CopyFileA", hLib, HB_DYN_CALLCONV_STDCALL },pathbase+"dbf\"+afile[1],pathbase+"zip\"+afile[1],0)
Next
hb_libFree( hLib )
ENDIF


Потестил у себя на компе в цикле на большом файле , время практически одинаково а в первом варианте стабильно растет

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1693
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 29.11.23 19:50. Заголовок: Получается, что была..


Получается, что была утечка памяти. Память не освобождалась после вызова dll и в конце концов всё больше и больше использовался файл подкачки. Отсюда и тормоза. Имхо.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 4139
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.11.23 22:59. Заголовок: Dima пишет: Стало ..


Dima пишет:

 цитата:
Стало


hLib := hb_libLoad( "Kernel32.dll" )
IF ! Empty( hLib )
FOR EACH aFile IN aDir
hb_DynCall({ "CopyFileA", hLib, HB_DYN_CALLCONV_STDCALL },pathbase+"dbf\"+afile[1],pathbase+"zip\"+afile[1],0)
Next
hb_libFree( hLib )
ENDIF



Можно еще проще:

FOR EACH aFile IN aDir
win_CopyFile(pathbase+"dbf\"+afile[1],pathbase+"zip\"+afile[1], .f.)
NEXT

...

#pragma BEGINDUMP

#include "hbapi.h"
#include "windows.h"

HB_FUNC( WIN_COPYFILE )
{
hb_retnl( (LONG) CopyFile( (LPCSTR) hb_parc(1), (LPCSTR) hb_parc(2), HB_ISNIL(3) ? FALSE : (BOOL) hb_parl(3) ) );
}


#pragma ENDDUMP

вместо CopyFile будет вызвана либо неуникодная CopyFileA, либо уникодная CopyFileW

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7627
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.11.23 09:27. Заголовок: Dima пишет: Cтал в ..


Dima пишет:

 цитата:
Cтал в последнее время замечать что скорость копирования базы


Чисто теоретический вопрос - а не проще скидывать изменённые данные в базах на другой комп/сервер ?
Или с другого компа/сервера подключаться к базам через определённое время и копировать только изменённые записи

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7872
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.11.23 11:48. Заголовок: Pasha Пробну , спас..


Pasha
Пробну , спасибо !

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7873
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.11.23 15:33. Заголовок: Pasha пишет: Можно ..


Pasha пишет:

 цитата:
Можно еще проще


Пожалуй это самый быстрый способ копирования.
После первого прохода база в 10 гиг скопировалась за 15 сек (с базой работает 17 чел на сейчас)
Подожду еще пары проходов и через 2-3 часа выложу результат

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7874
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.11.23 18:43. Заголовок: Вот и статистика при..


Вот и статистика приехала
 
Начало копирования : 2023-11-30 14:28:44.002
UserCount : 17
Конец копирования : 2023-11-30 14:29:00.877
Время копирования : 16.87
---------------------
Начало копирования : 2023-11-30 15:31:51.887
UserCount : 12
Конец копирования : 2023-11-30 15:32:29.873
Время копирования : 37.99
---------------------
Начало копирования : 2023-11-30 16:34:58.577
UserCount : 11
Конец копирования : 2023-11-30 16:35:52.881
Время копирования : 54.30
---------------------
Начало копирования : 2023-11-30 17:38:06.308
UserCount : 7
Конец копирования : 2023-11-30 17:39:22.358
Время копирования : 76.05
---------------------


Почему растет время не понятно ....база данных за 1 час не сильно наполняется.

PS
Копирование происходит в потоке.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4462
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.11.23 18:55. Заголовок: Dima пишет Потестил ..


Dima пишет
 цитата:
Почему растет время не понятно ...


Тогда получается, что такой твой вариант лучше ?!
 цитата:

Потестил у себя на компе в цикле на большом файле , время практически одинаково ...

hLib := hb_libLoad( "Kernel32.dll" )
IF ! Empty( hLib )
FOR EACH aFile IN aDir
hb_DynCall({ "CopyFileA", hLib, HB_DYN_CALLCONV_STDCALL },pathbase+"dbf\"+afile[1],pathbase+"zip\"+afile[1],0)
Next
hb_libFree( hLib )
ENDIF



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7875
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.11.23 19:03. Заголовок: SergKis пишет: Тогд..


SergKis пишет:

 цитата:
Тогда получается, что такой твой вариант лучше ?!


Оказалось что нет , мало замеров на тот момент сделал.
Сравнил по скорости win_CopyFile и HB_VFCOPYFILE. В цикле от 1 до 3 копирую файлик на 2 гига
win_CopyFile время
36.62
53.17
48.71

HB_VFCOPYFILE
41.62
43.62
40.51

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4463
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.11.23 19:12. Заголовок: Dima Получается бол..


Dima
Получается большой разницы нет, набежит ~30 сек. даже пусть минута - это же поток и не мешает работе
Если биться за скорость, то, правда, можно в больших базах брать только измененные записи, т.е., например, первого числа взял весь файл, а потом, из него, только записи новые и измененные, надо, конечно поле иметь TimeStamp модификации и так до след. первого числа

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 84 , стр: 1 2 3 4 5 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 336
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет