powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / на что хоть нарвался?
19 сообщений из 119, страница 5 из 5
на что хоть нарвался?
    #38140045
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er,

ну да
...
Рейтинг: 0 / 0
на что хоть нарвался?
    #38140528
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,
прочитал весь топик. Ну и задачи у Вас Сахават.
Сколько ж база у Вас весит?
Я уж не говорю про администрирование.
Крайне рекомендую посмотреть на bcp. Скорость он даёт очень приличную.
Если есть деньги смотрите в сторону новых SSD+секционирование+выжать максимум от tempdb.
...
Рейтинг: 0 / 0
на что хоть нарвался?
    #38140722
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават, а сколько времени занимают пересчеты при изменениях?
...
Рейтинг: 0 / 0
на что хоть нарвался?
    #38140729
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Proga,

я не могу заставить завод купить дорогостоящее оборудование наоборот - пытаюсь задействовать все иемеющиеся свободные мощности, но пока об этом рано)
...
Рейтинг: 0 / 0
на что хоть нарвался?
    #38140733
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaСахават, а сколько времени занимают пересчеты при изменениях?
Изменение изменению рознь :)
кое - что (та ж поломка станка в станочной группе) можно считать локально (если через какие то политики (сверхурочные, выходные и т.д.) можно компенсировать (если не получится то перерасчет длится до реперных плановых точек и по политикам принимается решение), при эскалации сообщения об изменении до реперных точек и дальше по фронту к перерасчетам могут подключится все больше и больше ресурсов
но обычно перерасчет расчетная задача, то есть тут больше анализ имеющиегся графа
основная проблема с хранением большого объема данных - при моделировании (формировании) портфеля на период (год - три - пять) по разным политикам (критериям)
...
Рейтинг: 0 / 0
на что хоть нарвался?
    #38140737
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опять ж все это зависит от завода, от циклов производственных, от серийности и т.д.
но в тех заводах какие я видел все смешано и электроника и мехобработка и сборкка и литье и вся фигня
и большая кооперация (которую надо синхронизировать детально)
...
Рейтинг: 0 / 0
на что хоть нарвался?
    #38140744
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот пришел САП ми сказал - на каждый модуль нужен4 ядра с такими то характеристиками и стоко то чего то
а у меня не получается дать заводам рекомендации, все зависит от ТП, от самого завода (есть ли проекты НИОКР, обытное производство и т.д.)
но люди требуют оценить
я изначально обещал что задейтвую все мощности в наличии и особо не буду требовать реструктрузации ИТ мощностей кроме может быть сетей
но пока не смог так организвать прогу (не дошла очередь до этой части)
...
Рейтинг: 0 / 0
на что хоть нарвался?
    #38140920
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Меня раздирало любопытство и я решил попробовать утилиту bcp для быстрой загрузки данных в ms sql server 2008 r2.

Условия тестирования те же что и для оракла в предыдущем посте. Те же винты, тот же файл Fixed CSV 1.6 Gb.

Перечислю только специфичные штуки:

Recovery Mode = Simple
Триггеров нет
Конкуренции нет
Индексов нет

По структуре таже табличка что и в oracle.

Параметры команды bcp (batch size 100 000)

Код: sql
1.
bcp db2.dbo.t1 in data.csv -f t1.xml -e err.txt -U sa -P "pass" -b 100000



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <RECORD>
  <FIELD ID="1" xsi:type="CharFixed" LENGTH="10"/>
  <FIELD ID="2" xsi:type="CharFixed" LENGTH="1"/>
  <FIELD ID="3" xsi:type="CharFixed" LENGTH="10"/>
  <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n"/>
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="id" xsi:type="SQLINT"/>
  <COLUMN SOURCE="3" NAME="name" xsi:type="SQLINT"/>
 </ROW>
</BCPFORMAT>



Ждал я ждал, пошел кофе заварил, сидел опять ждал. Дождался.

StartTime: 23:27:05,77
FinishTime: 23:34:19,29

Итого bcp/sqlserver справились за 7 мин.

Oracle делал это ~ 45 сек, а копирование того же файла 41 сек на моем компе.
...
Рейтинг: 0 / 0
на что хоть нарвался?
    #38140924
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всего минут (данные со скрина вконце количество строк в секунду):
60170814 / 138988 = 432,92 / 60 = 7,2 минуты

bulk insert != direct path insert
...
Рейтинг: 0 / 0
на что хоть нарвался?
    #38141112
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lord British,
отсюда Lord Britishbcp db2.dbo.t1 in data.csv -f t1.xml -e err.txt -U sa -P "pass" -b 100000 уберите
Lord British-f t1.xml -e err.txt
вообще не упало(мы ведь хотим скорости) и добавьте -h "TABLOCK", также можно попробовать -h "TABLOCKX", может накинет ещё чуть скорости
...
Рейтинг: 0 / 0
на что хоть нарвался?
    #38141187
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Proga,

уберите

-f t1.xml -e err.txt


Не влияет вообще, кроме того, первый считывается в самом начале - это параметры откуда, что брать. А в err.txt ошибки должны сыпаться, но ошибок нет, так что.

добавьте -h "TABLOCK"


вот это уже ближе к истине, дело пошло лучше

также увеличил в пять раз размер batch -b 500000

создал datafile с заранее выделенным местом и создал табличку с привязкой к этой файловой группе

[src]bcp db2.dbo.t1 in data.csv -h "TABLOCK" -f t1.xml -e err.txt -U sa -P "pass" -b 500000 [/quote]

500000 rows sent to SQL Server. Total sent: 57000000
500000 rows sent to SQL Server. Total sent: 57500000
500000 rows sent to SQL Server. Total sent: 58000000
500000 rows sent to SQL Server. Total sent: 58500000
500000 rows sent to SQL Server. Total sent: 59000000
500000 rows sent to SQL Server. Total sent: 59500000
500000 rows sent to SQL Server. Total sent: 60000000

60170814 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total : 69638 Average : (864051.44 rows per sec.)


Итого: ~ 69.9 сек

---

Oracle sqlldr за аналогичное время (другой тест) мог залить не fixed csv, т. е. с переменной длиной колонок и с разделителем колонок и столбцов. Мне не очень хотелось, чтобы большое время парса файла повлияло на общее время, так как с direct path API, этого бы не было и решил использовать fixed csv, я указал SQLLDR позиции данных в строке и длину строки в fixed csv, в этом случае он, использует адресную арифметику, а не ищет где там колонки или где там затерялся CRLF (дока рекомендует), в итоге ~ 45 сек.

Собственно этот же файл fixed csv я тестировал и с ms sql server, но в доке ms sql, я нашел для файлов параметров только

<FIELD ID="1" xsi:type="CharFixed" LENGTH="10"/>

<FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" />

есть ли возможность сказать bcp, чтобы он по оптимальнее с этим всем обходился в случае fixed csv?

ps Vipross, вариант поюзать bcp api и поглядеть насколько быстро будет писать по мере генерации без накладных расходов с csv. Если кто будет делать - поделитесь результатами в сравнении с операцией копирования на ту же дисковую систему.


bcp_batch
bcp_bind
bcp_colfmt
bcp_collen
bcp_colptr
bcp_columns
bcp_control
bcp_done
bcp_exec
bcp_getcolfmt
bcp_gettypename
bcp_init
...
Рейтинг: 0 / 0
на что хоть нарвался?
    #38141238
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lord British,

ну есть SQLBulkCopy АДО пользуюсь, но медленно, попробую потом bcp api как токо будет время
...
Рейтинг: 0 / 0
на что хоть нарвался?
    #38141244
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lord BritishProga,

уберите

-f t1.xml -e err.txt


Не влияет вообще, кроме того, первый считывается в самом начале - это параметры откуда, что брать. А в err.txt ошибки должны сыпаться, но ошибок нет, так что.

добавьте -h "TABLOCK"


вот это уже ближе к истине, дело пошло лучше

также увеличил в пять раз размер batch -b 500000

создал datafile с заранее выделенным местом и создал табличку с привязкой к этой файловой группе

[src]bcp db2.dbo.t1 in data.csv -h "TABLOCK" -f t1.xml -e err.txt -U sa -P "pass" -b 500000

500000 rows sent to SQL Server. Total sent: 57000000
500000 rows sent to SQL Server. Total sent: 57500000
500000 rows sent to SQL Server. Total sent: 58000000
500000 rows sent to SQL Server. Total sent: 58500000
500000 rows sent to SQL Server. Total sent: 59000000
500000 rows sent to SQL Server. Total sent: 59500000
500000 rows sent to SQL Server. Total sent: 60000000

60170814 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total : 69638 Average : (864051.44 rows per sec.)


Итого: ~ 69.9 сек

---

Oracle sqlldr за аналогичное время (другой тест) мог залить не fixed csv, т. е. с переменной длиной колонок и с разделителем колонок и столбцов. Мне не очень хотелось, чтобы большое время парса файла повлияло на общее время, так как с direct path API, этого бы не было и решил использовать fixed csv, я указал SQLLDR позиции данных в строке и длину строки в fixed csv, в этом случае он, использует адресную арифметику, а не ищет где там колонки или где там затерялся CRLF (дока рекомендует), в итоге ~ 45 сек.

Собственно этот же файл fixed csv я тестировал и с ms sql server, но в доке ms sql, я нашел для файлов параметров только

<FIELD ID="1" xsi:type="CharFixed" LENGTH="10"/>

<FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" />

есть ли возможность сказать bcp, чтобы он по оптимальнее с этим всем обходился в случае fixed csv?

ps Vipross, вариант поюзать bcp api и поглядеть насколько быстро будет писать по мере генерации без накладных расходов с csv. Если кто будет делать - поделитесь результатами в сравнении с операцией копирования на ту же дисковую систему.


bcp_batch
bcp_bind
bcp_colfmt
bcp_collen
bcp_colptr
bcp_columns
bcp_control
bcp_done
bcp_exec
bcp_getcolfmt
bcp_gettypename
bcp_init
[/quot]
можно попробовать поиграться с параметрами -t и -r, в BOL это статья Specifying Field and Row Terminators
...
Рейтинг: 0 / 0
на что хоть нарвался?
    #38142052
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потестил ради интереса bcp api, прироста по сравнению с bcp + csv не много.

Табличка таже, только генерируется и заливается программно те же 60 170 814 строк

гавнакод на cpp
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
   // Переменные источники, на них будут прибиндены колонки
	BCPBOUNDINT n1;
	n1.iIndicator = 4;
	n1.Value = 1;
	BCPBOUNDINT n2;
	n2.iIndicator = 4;
	n2.Value = 1;

   // биндим колонки по номеру
	retcode = bcp_bind(hdbc1, (LPCBYTE)&n1, sizeof(int), sizeof(int), NULL, 0, SQLINT4, 1);
	retcode = bcp_bind(hdbc1, (LPCBYTE)&n2, sizeof(int), sizeof(int), NULL, 0, SQLINT4, 2);

	// устанавливаем hint (bcp -h "TABLOCK")
	retcode = bcp_control(hdbc1, BCPHINTS, _T("TABLOCK"));
	
	// столько строк было в csv 60 170 814
	for (int i = 0; i < 60170814; i++)
	{
		n1.Value = i;
		n2.Value = i;

		retcode = bcp_sendrow(hdbc1);

		// batch size = 500 000
		if (i % 500000 == 0)
			retcode = bcp_batch(hdbc1);
	}

	retcode = bcp_done(hdbc1);




start time: 16:23:48,81
finish time: 16:24:51,06

~ 63 сек.
...
Рейтинг: 0 / 0
на что хоть нарвался?
    #38393076
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosа на днях попался с TryGetValue
кругом рекомендации, типа это говно быстрее, чем Contains и присовение
вранье полное
GC убивает все рекомендации на корню


эт я типа решил прогу пересмотреть и оптимизировать код с помощью нововведений
нах
Эти нововведения - высокоуровневая надстройка над высокоуровневой надстройкой. От этого скорости вычислений не увеличиваются. Линк (и вообще весь Сишарп с Дотнетом) был придуман не для увеличения скорости вычислений, а для увеличения скорости разработки.

Чтобы GC хорошо работал, ему нужен запас по свободной ОЗУ, в несколько раз превышающий потребление проги. Тогда не сильно тормозить будет. Что там у вас с ОЗУ на ноуте и потреблением?
...
Рейтинг: 0 / 0
на что хоть нарвался?
    #38393140
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320,

ну полгода прошло уже
счас на "ноуте" 96 ядер, сотни г памяти и т.д.
...
Рейтинг: 0 / 0
на что хоть нарвался?
    #38393369
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosuser7320,

ну полгода прошло уже
счас на "ноуте" 96 ядер, сотни г памяти и т.д.
Вы снова тесты проводили, на новом (как я понимаю) железе, с лихвой памяти? И что, GC так же печален, или лучше стало? Я ссылку на статью приводил, где сказано, что в своём лучшем виде GC достигает 70% производительности натива.
...
Рейтинг: 0 / 0
на что хоть нарвался?
    #38393372
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, а чем вы все эти секунды в тестах замеряете? Что за программа? Для Сишарпа и для С++.
...
Рейтинг: 0 / 0
на что хоть нарвался?
    #38393425
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320ViPRosuser7320,

ну полгода прошло уже
счас на "ноуте" 96 ядер, сотни г памяти и т.д.
Вы снова тесты проводили, на новом (как я понимаю) железе, с лихвой памяти? И что, GC так же печален, или лучше стало? Я ссылку на статью приводил, где сказано, что в своём лучшем виде GC достигает 70% производительности натива.

ну с TryGetValue замарачиваться больше не стал
за памятью теперь ВИПРОС следит сама (по части загрузки данных)
с записью больших данных в БД - самый лучший вариант для МС СКЛ оказался порционная запись с использованием пользовательских типов (insert Table (...) select (...) from &DataTable) где DataTable == System.Data.DataTable
ну вроде все
...
Рейтинг: 0 / 0
19 сообщений из 119, страница 5 из 5
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / на что хоть нарвался?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]