Автор | Сообщение |
|
| |
Пост 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 года. Не пойму куда копать ....есть какие мысли у кого ?
|
|
|
Ответов - 84
, стр:
1
2
3
4
5
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 1691
Зарегистрирован: 27.01.07
|
|
Отправлено: 29.11.23 08:38. Заголовок: А при каком условии ..
А при каком условии долго? Когда больше одного работает?
|
|
|
|
| |
Пост N: 7867
Зарегистрирован: 17.05.05
|
|
Отправлено: 29.11.23 11:48. Заголовок: PSP пишет: А при ка..
PSP пишет: цитата: | А при каком условии долго? Когда больше одного работает? |
| Да выяснил вчера , что при повторном копировании время занимает почему то в 2.5 - 3 раза больше чем при первоначальном копировании. А копирование происходит 1 раз в час , соответственно через часов 7-8 выйдем на результат в 15 минут. Почему не понял.
|
|
|
|
| постоянный участник
|
Пост N: 1692
Зарегистрирован: 27.01.07
|
|
Отправлено: 29.11.23 12:35. Заголовок: А если интервал увел..
А если интервал увеличить или уменьшить? Эффект какой будет?
|
|
|
|
| постоянный участник
|
Пост N: 4459
Зарегистрирован: 17.02.12
|
|
Отправлено: 29.11.23 13:11. Заголовок: Попробуй XCopy, у ме..
Попробуй XCopy, у меня каждые 2-а часа планировщик запускает получение zip+xcopy на др. PC. Что будет ? Когда у тебя тормозит, что будет на xCopy ?
|
|
|
|
| |
Пост N: 7868
Зарегистрирован: 17.05.05
|
|
Отправлено: 29.11.23 15:19. Заголовок: Убрал пока из цикла ..
Убрал пока из цикла hb_releaseCPU() Вышел на 16 сек Через 1 час проверю
|
|
|
|
| |
Пост N: 1963
Зарегистрирован: 20.02.11
|
|
Отправлено: 29.11.23 15:23. Заголовок: SergKis пишет: Попр..
SergKis пишет: цитата: | Попробуй XCopy, у меня каждые 2-а часа планировщик запускает получение zip+xcopy на др. PC. |
| вместо xCopy лучше использовать RoboCopy, утилита более продвинутая и оптимизирована на работу в сети
|
|
|
|
| постоянный участник
|
Пост N: 4460
Зарегистрирован: 17.02.12
|
|
Отправлено: 29.11.23 16:54. Заголовок: Haz пишет вместо xCo..
Haz пишет цитата: | вместо xCopy лучше использовать RoboCopy, утилита более продвинутая и оптимизирована на работу в сети |
| Возможно и лучше, но admin (это чужие PC) вряд ли будет ставить лишнюю утилиту, если работают штатные, тем более это работа сервер-сервер, на одном работает от планировщика gbak+7z, на другом полученные файлы 7z планировщик забирает xCopy по маске
|
|
|
|
| |
Пост N: 7869
Зарегистрирован: 17.05.05
|
|
Отправлено: 29.11.23 17:00. Заголовок: SergKis так она шта..
SergKis так она штатная
|
|
|
|
| |
Пост N: 7870
Зарегистрирован: 17.05.05
|
|
Отправлено: 29.11.23 17:47. Заголовок: короче при первом за..
короче при первом запуске копирования 16 сек спустя час , та же операция 43 сек спустя час , та же операция 54 сек Просто уже интересно , почему так...
|
|
|
|
| постоянный участник
|
Пост N: 4461
Зарегистрирован: 17.02.12
|
|
Отправлено: 29.11.23 18:36. Заголовок: Haz пишет лучше испо..
Haz пишет цитата: | лучше использовать RoboCopy |
| Dima пишет Спасибо, не знал, что есть такая штука. Dima пишет цитата: | 54 сек Просто уже интересно , почему так... |
| Как штатные копирования ведут себя в это время (или за это время) ?
|
|
|
|
| |
Пост 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 Потестил у себя на компе в цикле на большом файле , время практически одинаково а в первом варианте стабильно растет
|
|
|
|
|
| постоянный участник
|
Пост N: 1693
Зарегистрирован: 27.01.07
|
|
Отправлено: 29.11.23 19:50. Заголовок: Получается, что была..
Получается, что была утечка памяти. Память не освобождалась после вызова dll и в конце концов всё больше и больше использовался файл подкачки. Отсюда и тормоза. Имхо.
|
|
|
|
| Администратор
|
Пост 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
|
|
|
|
| постоянный участник
|
Пост N: 7627
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.11.23 09:27. Заголовок: Dima пишет: Cтал в ..
Dima пишет: цитата: | Cтал в последнее время замечать что скорость копирования базы |
| Чисто теоретический вопрос - а не проще скидывать изменённые данные в базах на другой комп/сервер ? Или с другого компа/сервера подключаться к базам через определённое время и копировать только изменённые записи
|
|
|
|
| |
Пост N: 7872
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.11.23 11:48. Заголовок: Pasha Пробну , спас..
Pasha Пробну , спасибо !
|
|
|
|
| |
Пост N: 7873
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.11.23 15:33. Заголовок: Pasha пишет: Можно ..
Pasha пишет: Пожалуй это самый быстрый способ копирования. После первого прохода база в 10 гиг скопировалась за 15 сек (с базой работает 17 чел на сейчас) Подожду еще пары проходов и через 2-3 часа выложу результат
|
|
|
|
| |
Пост 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 Копирование происходит в потоке.
|
|
|
|
| постоянный участник
|
Пост 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 |
|
|
|
|
|
| |
Пост 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
|
|
|
|
| постоянный участник
|
Пост N: 4463
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.11.23 19:12. Заголовок: Dima Получается бол..
Dima Получается большой разницы нет, набежит ~30 сек. даже пусть минута - это же поток и не мешает работе Если биться за скорость, то, правда, можно в больших базах брать только измененные записи, т.е., например, первого числа взял весь файл, а потом, из него, только записи новые и измененные, надо, конечно поле иметь TimeStamp модификации и так до след. первого числа
|
|
|
Ответов - 84
, стр:
1
2
3
4
5
All
[только новые]
|
|