Мне нравится, что PostgreSQL устойчив к сбоям, поскольку я не хочу тратить время на исправление базы данных. Тем не менее, я уверен, что некоторые вещи я могу отключить/изменить, чтобы вставки/обновления работали быстрее, даже если я потерял пару записей до отключения питания/сбоя. Меня не волнует пара записей - просто база данных в целом.
Я пытаюсь оптимизировать PostgreSQL для больших объемов записей. В настоящее время требуется 22 минуты, чтобы вставить 1 миллион строк, которые кажутся немного медленными.
Как ускорить запись PostgreSQL?
Некоторые из параметров, которые я просмотрел (например, full_page_writes), также подвержены риску развращения данных, которые я не хочу. Я не против потерянных данных - я просто не хочу коррупции.
Обновление 1
Вот таблица, которую я использую - это, так как большинство таблиц будут содержать int и маленькие строки, эта таблица "sample" кажется лучшим примером того, что я должен ожидать.
CREATE TABLE "user"
(
id serial NOT NULL,
username character varying(40),
email character varying(70),
website character varying(100),
created integer,
CONSTRAINT user_pkey PRIMARY KEY (id)
)
WITH ( OIDS=FALSE );
CREATE INDEX id ON "user" USING btree (id);
У меня есть около 10 сценариев, каждый из которых выпускает 100 000 запросов одновременно с использованием подготовленных операторов. Это должно имитировать реальную нагрузку, которую мое приложение будет предоставлять базе данных. В моем приложении каждая страница имеет 1 + вставки.
Обновление 2
Я использую асинхронные коммиты, потому что у меня есть
synchronous_commit = off
в главном файле конфигурации.