|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
Доброе время суток ! Имею поставленную задачу - максимально быстро (ночь) перенести данные между двумя серверами. Сервер1 - Windows2000AS,2x2Intel Xeon, 3 Gb-ОЗУ, RAID-5, Informix IDS 10.00.TC7, ~объем данных 100 Гб Сервер2 - CentOS5.1, 2x4 IntelXeon, 8 Gb, RAID-10, Informix IDS 11.50.FC1 Времени на исследования дали неделю, которая заканчивается завтра :-(( HPL с полпинка завести мозгов не хватило (если кто поможет - размеры моей благодарности будут безграничны :-)) ) Посему взоры были прикованы к dbimport/dbexport. Перечитав ветки форума в которых рассматривались аналогичные задачи, в особенности ветку с замерами производительности на РАВ и блочных устройствах, решил пока есть возможность, провести ряд своих экспериментов. База объемом 15 Г заливалась из предварительно импортированных файлов. Менялись только параметры onconfig и environment. Вот итоги: 1. PSORT_NPROCS - not defined, PDQPRIORITY - not defined, onconfig - production: 1 час 02 мин. 2. PSORT_NPROCS - not defined, PDQPRIORITY =100, onconfig - Upload, lru 94,5/95: 0 час 56 мин. 3. PSORT_NPROCS =7, PDQPRIORITY =1, onconfig - Upload, lru 50/60: 0 час 54 мин. После этого были попытки увеличить physfile с 2,2 Gb до 6 и увеличить buffers с 2 Gb до 4. Никакого прироста эти попытки (проведенные по очереди) - не дали, в последнем случае даже наоборот :-(((. Прошу помочь - какие еще настройки могут существенно повлиять на скорость загрузки. onconfig прилагаю ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 12:00 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
Когда делаете заливку базы (импорт) то делайте это без журналирования - скорость должна возрасти существенно. Заливку базы лучше делать с отдельного от чанков физического диска. PDQPRIORITY и PSORT_NPROCS нужны для быстрого построения индексов. HPL для переноса между разными типами серверов (*nix и windows) вроде бы не подходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 12:15 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
Попробуйте также увеличить кол-во CLEANERS (например 64 или даже 128) - возможно ваши официанты не справляются с заказами :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 12:23 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
Надо смотреть а реально создаются ли индексы в параллели? Как загружена система во время заливки sar, sar -d, vmstat Чего ждут сессии заливающие onstat -p, onstat -g wai Лог информикса Лог импорта, на что уходит основное время? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 12:37 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
Насколько я знаю, на время импорта базы создаются в NoLogging. И журнал для таких баз не ведется. Или я не прав ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 12:38 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
Лог информикса во время заливки чист :-) В той конфигурации которая приложена выше (onconfig), единственное сообщение было WARNING: Buffer pool size is too small for read ahead operation ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 12:46 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
SkSergeyAНасколько я знаю, на время импорта базы создаются в NoLogging. И журнал для таких баз не ведется. Или я не прав ? Если вы используете опцию -l dbimport'а, то база данных создаётся с журналированием, если не используете, тогда без журналирования. Операции DDL журналируются во всех базах, независимо от их режима журналирования транзакций. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 12:50 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
А основное время уходит на вставку данных, есть несколько таблиц по 10 млн. записей и соответственно на построение индексов по этим табличкам. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 12:52 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
SkSergeyAА основное время уходит на вставку данных, есть несколько таблиц по 10 млн. записей и соответственно на построение индексов по этим табличкам.в принципе должно вставляться 200-500 тыс в минуту, т.е. 10млн это 50-20 минут. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 12:58 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
АлексанЕсли вы используете опцию -l dbimport'а, то база данных создаётся с журналированием, если не используете, тогда без журналирования. Операции DDL журналируются во всех базах, независимо от их режима журналирования транзакций. Импорт идет без опции -l dbimport -c -d {dbspaces} -i {path} {base} ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 13:03 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
SkSergeyAИмею поставленную задачу - максимально быстро (ночь) перенести данные между двумя серверами. Сервер1 - Windows2000AS,2x2Intel Xeon, 3 Gb-ОЗУ, RAID-5, Informix IDS 10.00.TC7, ~объем данных 100 Гб Сервер2 - CentOS5.1, 2x4 IntelXeon, 8 Gb, RAID-10, Informix IDS 11.50.FC1 Похоже, что вы не читали FAQ на эту тему. Прочитайте внимательно - найдете немало полезных советов именно для вашего случая. 02. Перенос больших баз данных с сервера 7.3 на 9.40 http://www.sql.ru/faq/faq_topic.aspx?fid=588 01. Как перенести большую БД на другую платформу сервера (например с Windows на AIX)? http://www.sql.ru/faq/faq_topic.aspx?fid=587 Как выгрузить базу утилитой dbexport и загрузить с новым именем утилитой dbimport? http://www.sql.ru/faq/faq_topic.aspx?fid=710 05. От чего зависит скорость выгрузки БД (dbExport) ? http://www.sql.ru/faq/faq_topic.aspx?fid=589 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 13:10 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
SkSergeyAДоброе время суток ! Имею поставленную задачу - максимально быстро (ночь) перенести данные между двумя серверами. Сервер1 - Windows2000AS,2x2Intel Xeon, 3 Gb-ОЗУ, RAID-5, Informix IDS 10.00.TC7, ~объем данных 100 Гб Сервер2 - CentOS5.1, 2x4 IntelXeon, 8 Gb, RAID-10, Informix IDS 11.50.FC1 Времени на исследования дали неделю, которая заканчивается завтра :-(( HPL с полпинка завести мозгов не хватило (если кто поможет - размеры моей благодарности будут безграничны :-)) ) Посему взоры были прикованы к dbimport/dbexport. Иеено эти утилиты предназначены для переноса баз данных между платформами. SkSergeyAПеречитав ветки форума в которых рассматривались аналогичные задачи, в особенности ветку с замерами производительности на РАВ и блочных устройствах, решил пока есть возможность, провести ряд своих экспериментов. База объемом 15 Г заливалась из предварительно импортированных файлов. Менялись только параметры onconfig и environment. Вот итоги: 1. PSORT_NPROCS - not defined, PDQPRIORITY - not defined, onconfig - production: 1 час 02 мин. 2. PSORT_NPROCS - not defined, PDQPRIORITY =100, onconfig - Upload, lru 94,5/95: 0 час 56 мин. 3. PSORT_NPROCS =7, PDQPRIORITY =1, onconfig - Upload, lru 50/60: 0 час 54 мин. После этого были попытки увеличить physfile с 2,2 Gb до 6 и увеличить buffers с 2 Gb до 4. Никакого прироста эти попытки (проведенные по очереди) - не дали, в последнем случае даже наоборот :-(((. Прошу помочь - какие еще настройки могут существенно повлиять на скорость загрузки. onconfig прилагаюЯ бы чуть изменил представленную конфигурацию: буферов бы настроил 1,5 млн, lru_min_dirty устаровил бы в 70, lru_max_dirty - в 80; DS_MAX_QUERIES поставил бы в 1, DS_MAX_SCANS - в 1048576, RA_PAGES оставил бы 64, RA_THRESHOLD - в 60. Ещё я слышал, что direct i/o на Линуксе работает очень хорошо, и потому попробовал бы поставить DIRECT_IO в 1. Переменную окружения PDQPRIORITY я бы поставил в 100 (это ускорит построение индексов и обновления статистики), но после импорта нужно поставить его в 0 и обновить статистику для хранимых процедур, иначе они будут работать потом с PDQPRIORITY=100 !), PSORT_NPROCS бы не устанавливал. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 13:11 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
SkSergeyAА основное время уходит на вставку данных, есть несколько таблиц по 10 млн. записей и соответственно на построение индексов по этим табличкам. Построение индексов и обновление статистики вы можете ускорить за счёт PDQ, вставку данных - за счёт хорошо настроенноого ввода/вывода. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 13:13 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
Журавлев Денисв принципе должно вставляться 200-500 тыс в минуту, т.е. 10млн это 50-20 минут. Пересчитал сейчас приблизительное количество строк для вставки - 75 млн. Исходя из вышесказанного - скорость максимально возможная :-(((( ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 13:14 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
Может подойдёт военные хитрость: большие таблицы разделить по строкам на "нужныстопудово завтра" и "можно долить INSERT - SELECT'ом следующими ночами" ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 13:17 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
vasilis Похоже, что вы не читали FAQ на эту тему. Прочитайте внимательно - найдете немало полезных советов именно для вашего случая. 02. Перенос больших баз данных с сервера 7.3 на 9.40 http://www.sql.ru/faq/faq_topic.aspx?fid=588 01. Как перенести большую БД на другую платформу сервера (например с Windows на AIX)? http://www.sql.ru/faq/faq_topic.aspx?fid=587 Как выгрузить базу утилитой dbexport и загрузить с новым именем утилитой dbimport? http://www.sql.ru/faq/faq_topic.aspx?fid=710 05. От чего зависит скорость выгрузки БД (dbExport) ? http://www.sql.ru/faq/faq_topic.aspx?fid=589 :-)) 02. - этот вариант не пробовал, переносятся 4 дбспейса, в каждом от 200 до 600 таблиц 01. - в 11 версии Информикса dbimport невозможно запустить на Линукс сервере для импорта из 10 05. - попробую без вывода на экран :-)) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 13:27 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
АнатоЛойМожет подойдёт военные хитрость: большие таблицы разделить по строкам на "нужныстопудово завтра" и "можно долить INSERT - SELECT'ом следующими ночами" К сожалению даже разработчик этого приложения не уверен, какие данные данные можно оставить на потом :-((( ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 13:30 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
SkSergeyAПрошу помочь - какие еще настройки могут существенно повлиять на скорость загрузки. onconfig прилагаю И ещё я бы настроил соединение через разделяемую память (я нашёл только NETTYPE soctcp,2,,CPU, что означает сетевое соединение). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 13:31 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
Алексан И ещё я бы настроил соединение через разделяемую память (я нашёл только NETTYPE soctcp,2,,CPU, что означает сетевое соединение). А можно подробней! Я в этом направлении даже не смотрел ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 13:39 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
SkSergeyAБаза объемом 15 Г заливалась из предварительно импортированных файлов. Менялись только параметры onconfig и environment. 2. PSORT_NPROCS - not defined, PDQPRIORITY =100, onconfig - Upload, lru 94,5/95: 0 час 56 мин. 3. PSORT_NPROCS =7, PDQPRIORITY =1, onconfig - Upload, lru 50/60: 0 час 54 мин. Это взаимно неподходящие требования. установите PSORT_NPROCS =4, PDQPRIORITY =100 а также сделайте, по возможности, временные пространства на отдельных дисках - существенно поможет при индексировании. SkSergeyAПрошу помочь - какие еще настройки могут существенно повлиять на скорость загрузки. onconfig прилагаю Почему то забыли увеличить DS_NONPDQ_QUERY_MEM 128 # Non PDQ query memory (Kbytes) Но для вас значительно эффективней (исходя из задачи максимально быстро выгрузить и загрузить БД на разных платформах) все же сделать свои скрипты загрузки (надеюсь, что рекомендованные ФАК-и все же будут прочитаны): - обратить внимание на параметры локализации исходного и целевого серверов - выливать данные dbexport-ом сразу на целевой сервер (чтобы потом не копировать с сервера на сервер и не перекодировать из вин в юникс формат) - разделить SQL на отдельные части - проверить названия ДБ-пространств и размеры экстентов, а также возможные ссылки на другие таблицы и БД - отключить первичные индексы на больших таблицах - заливать данные в несколько потоков параллельно (или хотя бы большие таблицы) - отдельно заливать процедуры, триггера - включить PDQ (предоставив максимум ресуросв) - отдельно включить констрейнты и индексы - собрать статистику нужного уровня - выключить PDQ и собрать статистику по процедурам ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 13:47 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
SkSergeyA02. - этот вариант не пробовал, переносятся 4 дбспейса, в каждом от 200 до 600 таблиц При чем тут дбспейсы и количество таблиц ? О чем вы ? SkSergeyA 01. - в 11 версии Информикса dbimport невозможно запустить на Линукс сервере для импорта из 10 Может имелось ввиду dbexport ? А в чем ошибка или проблема ? С трудом верю, что такой возможности нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 13:55 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
АлексанRA_PAGES оставил бы 64, RA_THRESHOLD - в 60 Почему так мало? Думаю что можно параметры RA на время импорта (для быстрого построения индексов на больших таблицах) ставить еще выше, поскольку данные лежат рядом, эффективность Read Ahead должна быть очень высокой. Предлагаю увеличить параметры RA согласно документации: Use the following formulas to calculate values for RA_PAGES and RA_THRESHOLD: RA_PAGES = ((BUFFERS * bp_fract) / (2 * large_queries)) + 2 RA_THRESHOLD = ((BUFFERS * bp_fract) / (2 * large_queries)) - 2 bp_fract is the portion of data buffers to use for large scans that require read-ahead. If you want to allow large scans to take up to 75 percent of buffers, bp_fract would be 0.75. large_queries is the number of concurrent queries that require read-ahead that you intend to support. Т.е. например RA_PAGES = 10000 и RA_THRESHOLD = 9998 это далеко не предел для построения индексов и статистики по большим таблицам. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 13:56 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
vasilis установите PSORT_NPROCS =4, PDQPRIORITY =100 Попробую. vasilisа также сделайте, по возможности, временные пространства на отдельных дисках - существенно поможет при индексировании. Это невозможно :-(( vasilis Почему то забыли увеличить DS_NONPDQ_QUERY_MEM 128 # Non PDQ query memory (Kbytes) Но для вас значительно эффективней (исходя из задачи максимально быстро выгрузить и загрузить БД на разных платформах) все же сделать свои скрипты загрузки (надеюсь, что рекомендованные ФАК-и все же будут прочитаны): К сожалению я еще не достаточно силен для этого, но могу отредактировать скрипты экспорта. vasilis - обратить внимание на параметры локализации исходного и целевого серверов - выливать данные dbexport-ом сразу на целевой сервер (чтобы потом не копировать с сервера на сервер и не перекодировать из вин в юникс формат) - разделить SQL на отдельные части - проверить названия ДБ-пространств и размеры экстентов, а также возможные ссылки на другие таблицы и БД - отключить первичные индексы на больших таблицах - заливать данные в несколько потоков параллельно (или хотя бы большие таблицы) т.е. можно запустить несколько dbimport или это можно делать из нескольких sqleditor ? vasilis - отдельно заливать процедуры, триггера - включить PDQ (предоставив максимум ресуросв) - отдельно включить констрейнты и индексы - собрать статистику нужного уровня - выключить PDQ и собрать статистику по процедурам Ну вот есть чем сегодня ночью заняться :-))) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 14:00 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
vasilis SkSergeyA02. - этот вариант не пробовал, переносятся 4 дбспейса, в каждом от 200 до 600 таблиц При чем тут дбспейсы и количество таблиц ? О чем вы ? SkSergeyA 01. - в 11 версии Информикса dbimport невозможно запустить на Линукс сервере для импорта из 10 Может имелось ввиду dbexport ? А в чем ошибка или проблема ? С трудом верю, что такой возможности нет. Конечно dbexport, описался :-)) -206 - The specified table (informix.sysseclabelcomponents) is not in the database. вот такая ошибка при попытке запуска. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 14:03 |
|
Скорость загрузки данных
|
|||
---|---|---|---|
#18+
Журавлев Денис SkSergeyAА основное время уходит на вставку данных, есть несколько таблиц по 10 млн. записей и соответственно на построение индексов по этим табличкам.в принципе должно вставляться 200-500 тыс в минуту, т.е. 10млн это 50-20 минут. Если имеется ввиду только чистая вставка строк в таблицу без индексов, то вполне нормальна и скорость в 2 млн. строк в минуту, по крайней мере я это видел пару лет назад на сервере OS : Win2003+SP1 Informix: 10.0.FC4 CPU : 2 x Xeon 3,6 GHz Memory : 5GB RAM Disk : RAID 10 (4x70GB SCSI 15000) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2008, 14:05 |
|
|
start [/forum/topic.php?fid=44&msg=35396280&tid=1608024]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
61ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 180ms |
0 / 0 |