powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / bcp (размер батча и размер результата)
19 сообщений из 19, страница 1 из 1
bcp (размер батча и размер результата)
    #34381400
Freebird
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Adaptive Server Enterprise/12.5.3/EBF 12875 ESD#4/P/NT (IX86)/OS 4.0/ase1253/1/32-bit/OPT/Thu Sep 08 11:27:35 2005

Ситуация следующая:
использую bcp утилиту отSybase Ю:\SYBASE\OCS-12_5\bin\bcp.exe
перекачиваю данные из файла в таблицу.
Файл размером 3GB и строк там 30млн

Проблема:
Если указывать размер батча (через -b) то размер результирующей таблицы варьируется.

Например
взять -b1 (в батче одна строка) то размер максимальный и больше ожидаемого 10-20 раз
строк перекачалось только 6млн а размер таблицы уже 45GB
взять -b1000 (в батче 1000 строк) то размер больше ожидаемого N раз
если не указывать размер батча то размер таблицы ожидаемый

Мне указывать надо обязательно. (причем -b1)

Если кому интересно проверьте у себя. Изменяйте размер батча и смотрите размер результата.
Помогите выявить причину?
...
Рейтинг: 0 / 0
bcp (размер батча и размер результата)
    #34381676
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕсли указывать размер батча (через -b) то размер результирующей таблицы варьируется.

Ожидаемое поведение. Т.к. если использовать fast bcp и указывать размер батча -b, то только то кол-во строк, которое указано как размер батча, будет записано на страницу.


автор
Мне указывать надо обязательно. (причем -b1)
Странное требование, так при -b1 вы полностью тереяте преймущества вставки батчами, следовательно значительно ухудщается производительность
...
Рейтинг: 0 / 0
bcp (размер батча и размер результата)
    #34381870
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
moris пишет:
> Ожидаемое поведение. Т.к. если использовать fast bcp и указывать размер
> батча -b, то только то кол-во строк, которое указано как размер батча,
> будет записано на страницу.

Как -то я в этом не уверен. -b задает колическтво записей в одной
транзакции (не смотря на то что в FAST-режиме данные не логируются,
транзакции выделения страниц все равно есть). Но вот что при этом
ASE будет размещать каждую запись на одной сранице - я как-то
не слышал об этом и не верю. Хотя бы потому что -b не зависит от размера
строки, а если бы все строки клались бы на одну страницу, то было бы
какое-то верхнее ограничение на число, указываемое в этом параметре.
А его нет. moris, вы вообще откуда это взяли ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
bcp (размер батча и размер результата)
    #34381875
Freebird
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мысль что содержимое батча это, как минимум, одна страница понятна.
Получается моя 3GB таблица превращается в 30 000 000 строк * 8KB ~ 240 GB

Если есть документальное подтверждение, дайте ссылку пожалуйста.
(батч это, как минимум, одна страница )


2. Зачем батч сделал = 1 строке?
В файле источнике есть нечитабельные строки и при копировании (таже bcp)
возникает ошибка (не могу сейчас дать оригинальный текст): "не могу сконвертировать символ в чарактер сет сервера". Когда ставлю размер батча =1, то ломанные строки отпадывают, а нормальные пишутся в базу.
...
Рейтинг: 0 / 0
bcp (размер батча и размер результата)
    #34382008
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
moris, вы вообще откуда это взяли ?

FreebirdЕсли есть документальное подтверждение, дайте ссылку пожалуйста.

MasterZiv и Freebird ваш скеписис понятен. Если чесно, то я сам несколько обескуражен когда с таким столкнулся в первый раз, и даже уже думал описывать это как баг, но потом нашел, что все это было так и задумано


прочитано здесь


Sybasebcp creates 1 data page per batch, and setting b batch_size to 10 creates data pages with 10 rows on each page. If you set -b batch_size to 1, the setting creates data pages with 1 row on each page. This setting causes the data to load slowly and takes up storage space.
...
Рейтинг: 0 / 0
bcp (размер батча и размер результата)
    #34382018
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как я и писал ранее, такое поведение свойственное только fast bcp

SybaseSetting the batch size to 1 causes Adaptive Server to allocate one data page to one row copied in. This option only applies to fast bcp, and is only useful in locating corrupt rows of data. Use -b1 with care — doing so causes a new page to be allocated for each row, and is a poor use of space.
...
Рейтинг: 0 / 0
bcp (размер батча и размер результата)
    #34382302
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Freebird пишет:

> 2. Зачем батч сделал = 1 строке?
> В файле источнике есть нечитабельные строки и при копировании (таже bcp)
> возникает ошибка (не могу сейчас дать оригинальный текст): "не могу
> сконвертировать символ в чарактер сет сервера". Когда ставлю размер
> батча =1, то ломанные строки отпадывают, а нормальные пишутся в базу.

Это делается по-другому, там можно указать файл для ошибок,
и тогда туда вывалятся все невставленные записи.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
bcp (размер батча и размер результата)
    #34382305
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
moris пишет:

> Sybase
> Setting the batch size to 1 causes Adaptive Server to allocate one data
> page to one row copied in. This option only applies to fast bcp, and is
> only useful in locating corrupt rows of data. Use -b1 with care — doing
> so causes a new page to be allocated for each row, and is a poor use of
> space

Ну ни фига ж себе ! Никогда бы не подумал такое.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
bcp (размер батча и размер результата)
    #34382323
Freebird
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да уж. Спасибо.

На счет файла ошибок. Сам почитаю, но был бы признателен за пример.

Пока понимание такое что, если указывать -b то отвалится только батч с ломанными строками
а если не указать то отвалится все. Для экономии места лучше вообше не указывать или указывать много строк в батче.
...
Рейтинг: 0 / 0
bcp (размер батча и размер результата)
    #34382461
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Freebird пишет:
> Автор: "Freebird"
> Да уж. Спасибо.
>
> На счет файла ошибок. Сам почитаю, но был бы признателен за пример.

Ну там особо не чего показывать, хитрости особой нет.

-e errfile
is the full path name of an error file where bcp stores any rows that it was
unable to transfer from the file to the database. Error messages from bcp appear
on your terminal. bcp creates an error file only when you specify this parameter.

И на сколько я помню туда будут вываливаться именно все строки
из обломившихся батчей (см. ниже), включая хорошие, а не только та, которая
сломала батч.

> Пока понимание такое что, если указывать -b то отвалится только батч с
> ломанными строками
> а если не указать то отвалится все.

Да.

Лучше посчитать примерно количество строк на страницу (если строки фиксированной
длины, конечно, или примерно фиксированной длины) и указать его.

Еще кстати для больших таблиц классно заливать их в раздельные партиции,
параллельно. Создаешь таблицу партицированной, по числу engine-ов, которые
хочешь занять для вставки данных, например, все которые есть.
Разделяешь исходный файл на N примерно равных частей.
Потом заливаешь парралельно в N партиций BCP-ёй данные, и это все
реально происходит паралельно. Потом после заливки делаешь
ALTER TABLE partition 1 (или как там это ... ) - операция
выполняется почти мгновенно. Ну и все - таблица залита.
Можно конечно не убирать потом партиции, если они нужны реально в работе.
Скорость заливки увеличивается почти в N раз. Да, забыл сказать,
это все работает естественно только на многопроцессорных машинах,
на однопроцессорной выигрыша реального в скорости не будет.

Кстати на счет документации. Я так понял, что эти предупреждения
о -b 1 добавили достаточно недавно, раньше я этих предупреждений
точно не видел.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
bcp (размер батча и размер результата)
    #34382762
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
Кстати на счет документации. Я так понял, что эти предупреждения
о -b 1 добавили достаточно недавно, раньше я этих предупреждений
точно не видел.


В доке на ASE 12.5.0 встречается описание этой фичи, думаю что и раньше было тоже.


SybaseBecause bcp creates 1 data page per batch, and setting b batch_size to 10 creates data pages with 10 rows on each page, this setting causes the data to load slowly and takes up storage space.
...
Рейтинг: 0 / 0
bcp (размер батча и размер результата)
    #34382770
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторДля экономии места лучше вообше не указывать или указывать много строк в батче.

Если вы все таки во что бы это ни стало заливать через малый размер батча, -b1 , то просто не используйте fast bcp. Создайте например кластерный индекс на таблице, перед заливкой, и тогда вперед заливайте, с батчем =1. Страницы будут заполняться почти полностью.
...
Рейтинг: 0 / 0
bcp (размер батча и размер результата)
    #34382904
Freebird
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Идеи понял, спасибо.

Маленькая подтема.
В процессе заливки в каждом фрагменте базы остается 2,7% свободного места независимо от размера фрагмента. Если бы это было на одном фрагменте у меня бы вопроса не возникло, но их 15.
У фрагментов размером 32768 M оставлено места ~ 880M,
у фрагментов размером 768 M оставлено места ~ 21M,
Этот процесс шел последовательно, от одного фрагмента к др.

Вопрос:
Это ограничение устанавливается на базе, на сервере или это поведение bcp?
...
Рейтинг: 0 / 0
bcp (размер батча и размер результата)
    #34383029
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
moris пишет:
> В доке на ASE 12.5.0
> <http://manuals.sybase.com/onlinebooks/group-as/asg1250e/util/@Generic__BookTextView/5819;pt=5960>
> встречается описание этой фичи, думаю что и раньше было тоже.

Не, не раньше точно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
bcp (размер батча и размер результата)
    #34383035
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Freebird пишет:
> В процессе заливки в каждом фрагменте базы остается 2,7% свободного
> места независимо от размера фрагмента. Если бы это было на одном

> Вопрос:
> Это ограничение устанавливается на базе, на сервере или это поведение bcp?

Скорее всего базы. На каждом экстенте оставляется одна страница
неаллоцированной, про запас. На каждой странице - не больше fillfactor-а
заполненного места, и так далее. это в общем нормально.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
bcp (размер батча и размер результата)
    #34383593
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
moris пишет:
> В доке на ASE 12.5.0
> <http://manuals.sybase.com/onlinebooks/group-as/asg1250e/util/@Generic__BookTextView/5819;pt=5960>
> встречается описание этой фичи, думаю что и раньше было тоже.

Не, не раньше точно.
Posted via ActualForum NNTP Server 1.4


Не поленился и залез в доку по ASE12.0
Там описано тоже самое

SybaseA batch size of 1 evaluates each row individually, but loads more slowly
and creates a separate data page for each row during a fast bcp session.
...
Рейтинг: 0 / 0
bcp (размер батча и размер результата)
    #34384632
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
moris пишет:
> Не поленился и залез в доку по ASE12.0
> Там описано тоже самое

Ну ты мега-чувак !! А я значит мега-дыра-в-башке.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
bcp (размер батча и размер результата)
    #34384851
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
moris пишет:
> Не поленился и залез в доку по ASE12.0
> Там описано тоже самое

Ну ты мега-чувак !! А я значит мега-дыра-в-башке.
Posted via ActualForum NNTP Server 1.4


:-) Если чесно, хотя с продуктами Sybase работаю далеко не первый год, подобную траблу обнаружил несколько месяцев назад. т.к. просто раньше с точки зрения производительность ну никогда не использовал столь малые батчи. (так это просто глупо)
...
Рейтинг: 0 / 0
bcp (размер батча и размер результата)
    #34385323
Freebird
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я купился на то что каждый батч идет отдельной транзакцией.
В результате потяря по времени в 7 раз и дискового пространства в 80 раз.
-b надо применять правильно.

В итоге заливал все записи без указывания (-b).
Разбил все на блоки через (-F и -L), постепенно нашел блок с ошибками.
31 млн записей залил за 1.5 часа, удачно.

Спасибо за помощь.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / bcp (размер батча и размер результата)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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