Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
bcp (размер батча и размер результата)
|
|||
|---|---|---|---|
|
#18+
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) Если кому интересно проверьте у себя. Изменяйте размер батча и смотрите размер результата. Помогите выявить причину? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2007, 19:21 |
|
||
|
bcp (размер батча и размер результата)
|
|||
|---|---|---|---|
|
#18+
авторЕсли указывать размер батча (через -b) то размер результирующей таблицы варьируется. Ожидаемое поведение. Т.к. если использовать fast bcp и указывать размер батча -b, то только то кол-во строк, которое указано как размер батча, будет записано на страницу. автор Мне указывать надо обязательно. (причем -b1) Странное требование, так при -b1 вы полностью тереяте преймущества вставки батчами, следовательно значительно ухудщается производительность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2007, 23:57 |
|
||
|
bcp (размер батча и размер результата)
|
|||
|---|---|---|---|
|
#18+
moris пишет: > Ожидаемое поведение. Т.к. если использовать fast bcp и указывать размер > батча -b, то только то кол-во строк, которое указано как размер батча, > будет записано на страницу. Как -то я в этом не уверен. -b задает колическтво записей в одной транзакции (не смотря на то что в FAST-режиме данные не логируются, транзакции выделения страниц все равно есть). Но вот что при этом ASE будет размещать каждую запись на одной сранице - я как-то не слышал об этом и не верю. Хотя бы потому что -b не зависит от размера строки, а если бы все строки клались бы на одну страницу, то было бы какое-то верхнее ограничение на число, указываемое в этом параметре. А его нет. moris, вы вообще откуда это взяли ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2007, 12:23 |
|
||
|
bcp (размер батча и размер результата)
|
|||
|---|---|---|---|
|
#18+
Мысль что содержимое батча это, как минимум, одна страница понятна. Получается моя 3GB таблица превращается в 30 000 000 строк * 8KB ~ 240 GB Если есть документальное подтверждение, дайте ссылку пожалуйста. (батч это, как минимум, одна страница ) 2. Зачем батч сделал = 1 строке? В файле источнике есть нечитабельные строки и при копировании (таже bcp) возникает ошибка (не могу сейчас дать оригинальный текст): "не могу сконвертировать символ в чарактер сет сервера". Когда ставлю размер батча =1, то ломанные строки отпадывают, а нормальные пишутся в базу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2007, 12:29 |
|
||
|
bcp (размер батча и размер результата)
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2007, 14:56 |
|
||
|
bcp (размер батча и размер результата)
|
|||
|---|---|---|---|
|
#18+
Как я и писал ранее, такое поведение свойственное только 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2007, 15:06 |
|
||
|
bcp (размер батча и размер результата)
|
|||
|---|---|---|---|
|
#18+
Freebird пишет: > 2. Зачем батч сделал = 1 строке? > В файле источнике есть нечитабельные строки и при копировании (таже bcp) > возникает ошибка (не могу сейчас дать оригинальный текст): "не могу > сконвертировать символ в чарактер сет сервера". Когда ставлю размер > батча =1, то ломанные строки отпадывают, а нормальные пишутся в базу. Это делается по-другому, там можно указать файл для ошибок, и тогда туда вывалятся все невставленные записи. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2007, 22:42 |
|
||
|
bcp (размер батча и размер результата)
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2007, 22:46 |
|
||
|
bcp (размер батча и размер результата)
|
|||
|---|---|---|---|
|
#18+
Да уж. Спасибо. На счет файла ошибок. Сам почитаю, но был бы признателен за пример. Пока понимание такое что, если указывать -b то отвалится только батч с ломанными строками а если не указать то отвалится все. Для экономии места лучше вообше не указывать или указывать много строк в батче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2007, 23:15 |
|
||
|
bcp (размер батча и размер результата)
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2007, 09:00 |
|
||
|
bcp (размер батча и размер результата)
|
|||
|---|---|---|---|
|
#18+
автор Кстати на счет документации. Я так понял, что эти предупреждения о -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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2007, 15:45 |
|
||
|
bcp (размер батча и размер результата)
|
|||
|---|---|---|---|
|
#18+
авторДля экономии места лучше вообше не указывать или указывать много строк в батче. Если вы все таки во что бы это ни стало заливать через малый размер батча, -b1 , то просто не используйте fast bcp. Создайте например кластерный индекс на таблице, перед заливкой, и тогда вперед заливайте, с батчем =1. Страницы будут заполняться почти полностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2007, 15:52 |
|
||
|
bcp (размер батча и размер результата)
|
|||
|---|---|---|---|
|
#18+
Идеи понял, спасибо. Маленькая подтема. В процессе заливки в каждом фрагменте базы остается 2,7% свободного места независимо от размера фрагмента. Если бы это было на одном фрагменте у меня бы вопроса не возникло, но их 15. У фрагментов размером 32768 M оставлено места ~ 880M, у фрагментов размером 768 M оставлено места ~ 21M, Этот процесс шел последовательно, от одного фрагмента к др. Вопрос: Это ограничение устанавливается на базе, на сервере или это поведение bcp? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2007, 18:56 |
|
||
|
bcp (размер батча и размер результата)
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2007, 21:37 |
|
||
|
bcp (размер батча и размер результата)
|
|||
|---|---|---|---|
|
#18+
Freebird пишет: > В процессе заливки в каждом фрагменте базы остается 2,7% свободного > места независимо от размера фрагмента. Если бы это было на одном > Вопрос: > Это ограничение устанавливается на базе, на сервере или это поведение bcp? Скорее всего базы. На каждом экстенте оставляется одна страница неаллоцированной, про запас. На каждой странице - не больше fillfactor-а заполненного места, и так далее. это в общем нормально. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2007, 21:40 |
|
||
|
bcp (размер батча и размер результата)
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2007, 11:07 |
|
||
|
bcp (размер батча и размер результата)
|
|||
|---|---|---|---|
|
#18+
moris пишет: > Не поленился и залез в доку по ASE12.0 > Там описано тоже самое Ну ты мега-чувак !! А я значит мега-дыра-в-башке. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2007, 15:07 |
|
||
|
bcp (размер батча и размер результата)
|
|||
|---|---|---|---|
|
#18+
MasterZiv moris пишет: > Не поленился и залез в доку по ASE12.0 > Там описано тоже самое Ну ты мега-чувак !! А я значит мега-дыра-в-башке. Posted via ActualForum NNTP Server 1.4 :-) Если чесно, хотя с продуктами Sybase работаю далеко не первый год, подобную траблу обнаружил несколько месяцев назад. т.к. просто раньше с точки зрения производительность ну никогда не использовал столь малые батчи. (так это просто глупо) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2007, 16:15 |
|
||
|
bcp (размер батча и размер результата)
|
|||
|---|---|---|---|
|
#18+
Я купился на то что каждый батч идет отдельной транзакцией. В результате потяря по времени в 7 раз и дискового пространства в 80 раз. -b надо применять правильно. В итоге заливал все записи без указывания (-b). Разбил все на блоки через (-F и -L), постепенно нашел блок с ошибками. 31 млн записей залил за 1.5 часа, удачно. Спасибо за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2007, 18:46 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=34381875&tid=2012209]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 354ms |

| 0 / 0 |
