
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
18.02.2015, 16:38
|
|||
|---|---|---|---|
|
|||
Настройка для bulk update/insert |
|||
|
#18+
Есть рид-онли база, в которую время от времени заливаются апдейты (типа таблица 50 миллионов строк, вставить 1 миллион, поменять 10 миллионов, UPDATE items i SET name = ii.name FROM items_import ii WHERE i.id = ii.id, такой запрос). Апдейт дико тормозит. Как можно ускорить процесс, с учетом того, что надежность не нужна вообще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.02.2015, 18:40
|
|||
|---|---|---|---|
|
|||
Настройка для bulk update/insert |
|||
|
#18+
1. Вместо INSERT использовать COPY. 2. UPDATE мало того, что _будут_ тормозить, так еще в старых версиях (начало 2000) приводили к необходимости VACUM. В новых версиях не знаю. Если "таблица 50 лямов, залить 1 лям и поменять 10" и время критично. Лично я бы подумал над тем, что бы взять C,Java etc, написать приложение. Все посчитать в приложении (оперативной памяти, каком нибудь хорошем и хитром контейнере, в общем, детали) и 50 лямов быстро, командой COPY залить в PostgreSQL. IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.02.2015, 18:51
|
|||
|---|---|---|---|
|
|||
Настройка для bulk update/insert |
|||
|
#18+
Leonid KudryavtsevЛично я бы подумал над тем, что бы взять C,Java etc, написать приложение. Все посчитать в приложении (оперативной памяти, каком нибудь хорошем и хитром контейнере, в общем, детали) и 50 лямов быстро, командой COPY залить в PostgreSQL. IMHO можно на пустой базе даже в том же инстансе провести "расчет" выгрузкой SELECT в COPY -- это точно дешевле клиентского овна, но копи всем куском на табличке с триггерами тоже не подарок. т.ч. проще всего -- написать в соседней базёнке того же интсанса нарезалку на батчи, и запустит dblink батчики на обработку. Примерно - по 1000 -- 10000 операций. (длинная транзакция висит в стороне - не лочит вакуумы в БД назначения и прочее) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.02.2015, 00:46
|
|||
|---|---|---|---|
|
|||
Настройка для bulk update/insert |
|||
|
#18+
ebonfortressЕсть рид-онли база, в которую время от времени заливаются апдейты (типа таблица 50 миллионов строк, вставить 1 миллион, поменять 10 миллионов, UPDATE items i SET name = ii.name FROM items_import ii WHERE i.id = ii.id, такой запрос). Апдейт дико тормозит. Как можно ускорить процесс, с учетом того, что надежность не нужна вообще? create table temp as select coalesce(ii.name, i.name) from items i left join items_import ii on i.id = ii.id потом дропнуть items и переименовать items_import в items ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=53&tablet=1&tid=1998149]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
174ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 463ms |

| 0 / 0 |
