Как я могу ускорить операции обновления/замены в PostgreSQL?

Добавьте тему с фоном, который вы используете, к тегу приложения в файле манифеста, чтобы предотвратить появление черного экрана.

theme.xml





AndroidManifest.xml

....

....

Узнайте, почему здесь черный экран On app launch, Android displays a simple preview window (based on your activity theme) as an immediate response to the user action. Then the preview window crossfades with your actual UI, once that has fully loaded. To ensure a smooth visual transition, your activity theme should match your full UI as closely as possible. The below image shows how the experience can be jarring if not handled properly.

19
задан Henrik Gustafsson 25 November 2016 в 14:56
поделиться

6 ответов

Обычный способ, которым я делаю это на pg: загружаю необработанные данные, соответствующие целевой таблице, во временную таблицу (без ограничений), используя копирование, слияние (забавная часть), прибыль.

I написал функцию merge_by_key специально для этих ситуаций:

http://mbk.projects.postgresql.org/

Документы не очень дружелюбны, но я бы посоветовал дать ей хорошо посмотрите.

4
ответ дан 30 November 2019 в 05:15
поделиться

Несколько месяцев назад у меня была похожая ситуация, и в итоге я получил наибольший прирост скорости за счет настроенного размера блока / транзакции. Вы также можете проверить журнал на предмет предупреждения о контрольной точке во время теста и выполнить соответствующую настройку.

2
ответ дан 30 November 2019 в 05:15
поделиться

Похоже, вы заметили преимущества использования WAL (Write Ahead Logging) с ИБП для кэширования ваших обновлений между записями на диск.

wal_buffers This setting decides the number of buffers WAL(Write ahead Log) can have. If your database has many write transactions, setting this value bit higher than default could result better usage of disk space. Experiment and decide. A good start would be around 32-64 corresponding to 256-512K memory.

http://www.varlena.com/GeneralBits/Tidbits/perf.html

2
ответ дан 30 November 2019 в 05:15
поделиться

В вашем insert_or_replace . попробуйте следующее:

WHERE EXISTS(SELECT 1 FROM item WHERE key=NEW.key LIMIT 1)

вместо

WHERE EXISTS(SELECT 1 FROM item WHERE key=NEW.key)

Как отмечалось в комментариях, это, вероятно, ничего не даст. Все, что я должен добавить, это то, что вы всегда можете ускорить выполнение INSERT / UPDATE, удалив индексы. Скорее всего, вы не захотите этого делать, если не обнаружите, что ваша таблица переиндексирована, но это следует хотя бы проверить.

1
ответ дан 30 November 2019 в 05:15
поделиться

В Oracle блокировка таблицы определенно поможет. Вы можете попробовать это и с PostgreSQL.

1
ответ дан 30 November 2019 в 05:15
поделиться

Для обновлений вы можете уменьшить коэффициент заполнения для таблиц и индексов, и это может помочь

http://www.postgresql.org/docs/current/static/sql-createtable .html

http://www.postgresql.org/docs/current/static/sql-createindex.html

1
ответ дан 30 November 2019 в 05:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: