|
|
|
Пакетное добавление/обновление данных
|
|||
|---|---|---|---|
|
#18+
LeXa NalBatIvan Durakну да, проще но сильно тормознее.вот что говорит EXPLAIN ANALYZE, через тригер проходит более тысячи строк в секунду: Trigger usage_2014_06_upsert: time=610256.635 calls=887272 "все познается в сравнении" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2014, 12:23:51 |
|
||
|
Пакетное добавление/обновление данных
|
|||
|---|---|---|---|
|
#18+
Раз участник Troglodit пропал, то немного оффтопика Вот такая конструкция Код: sql 1. 2. 3. 4. 5. 6. 7. Разделил на 2 UPDATE, чтобы не дёргать базу на запись лишний раз. А есть ли в этом смысл? Может имеет смысл оставить только 1 UPDATE? В котором обновляются сразу 2 поля, а PostgreSQL сам обновит поля, которые изменились? Я просто не знаю, как ведёт себя СУБД при запросе на обновление данных, если данные и так там те, которые нам нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2014, 15:43:46 |
|
||
|
Пакетное добавление/обновление данных
|
|||
|---|---|---|---|
|
#18+
Ivan Durak"все познается в сравнении"времянка в два с лишним раза быстрее тригера Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. -- 1 COPY 500000 Time: 46944,017 ms -- 2 COPY 1000000 Time: 4624,439 ms UPDATE 500000 Time: 9140,216 ms INSERT 0 500000 Time: 5983,546 ms ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2014, 17:27:12 |
|
||
|
Пакетное добавление/обновление данных
|
|||
|---|---|---|---|
|
#18+
cr@nkРаз участник Troglodit пропал, то немного оффтопика Вот такая конструкция Код: sql 1. 2. 3. 4. 5. 6. 7. Разделил на 2 UPDATE, чтобы не дёргать базу на запись лишний раз. А есть ли в этом смысл? Может имеет смысл оставить только 1 UPDATE? В котором обновляются сразу 2 поля, а PostgreSQL сам обновит поля, которые изменились? Я просто не знаю, как ведёт себя СУБД при запросе на обновление данных, если данные и так там те, которые нам нужны. в PostgreSQL всегда целиком обновляется вся строка (даже если обновлять так что ничего не меняется типа update table set id=id;) update в первом приближении всегда делается как delete полной старой строки и Insert новой (опять же полной) строки. так что вышеприведенный метод только лишнюю работу и замедление даст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2014, 18:16:59 |
|
||
|
Пакетное добавление/обновление данных
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, Спасибо за разъяснение. Получается, что конструкция упрощается до такой: Код: plsql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2014, 20:19:03 |
|
||
|
Пакетное добавление/обновление данных
|
|||
|---|---|---|---|
|
#18+
Вы потеряли часть логики в вашем последнем запросе. Мое предложение было следующим Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Возможно где то синтаксис не корректен, но логика думаю будет понятна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 02:40:53 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38678640&tid=1998617]: |
0ms |
get settings: |
5ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
190ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 455ms |

| 0 / 0 |
