|
|
|
Настройка для bulk update/insert
|
|||
|---|---|---|---|
|
#18+
Есть рид-онли база, в которую время от времени заливаются апдейты (типа таблица 50 миллионов строк, вставить 1 миллион, поменять 10 миллионов, UPDATE items i SET name = ii.name FROM items_import ii WHERE i.id = ii.id, такой запрос). Апдейт дико тормозит. Как можно ускорить процесс, с учетом того, что надежность не нужна вообще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 16:38 |
|
||
|
Настройка для 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:40 |
|
||
|
Настройка для bulk update/insert
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevЛично я бы подумал над тем, что бы взять C,Java etc, написать приложение. Все посчитать в приложении (оперативной памяти, каком нибудь хорошем и хитром контейнере, в общем, детали) и 50 лямов быстро, командой COPY залить в PostgreSQL. IMHO можно на пустой базе даже в том же инстансе провести "расчет" выгрузкой SELECT в COPY -- это точно дешевле клиентского овна, но копи всем куском на табличке с триггерами тоже не подарок. т.ч. проще всего -- написать в соседней базёнке того же интсанса нарезалку на батчи, и запустит dblink батчики на обработку. Примерно - по 1000 -- 10000 операций. (длинная транзакция висит в стороне - не лочит вакуумы в БД назначения и прочее) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 18:51 |
|
||
|
Настройка для 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2015, 00:46 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=114&tid=1998149]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 353ms |

| 0 / 0 |
