Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
если… логи пропадут в случае поломки… это не критично для данныхЧто-то мне подсказывает, что это неверно. Наверное, вот эта статья.
work_mem в 1/20 RAM;
The normal guidance for work_mem is to consider how much free RAM is around after shared_buffers is allocated (the same OS caching size figure needed to compute effective_cache_size), divide by max_connections, and then take a fraction of that figure; a half of that would be an aggressive work_mem value. In that case, only
if every client had two sorts active all at the same time would the server be likely
to run out of memory, which is an unlikely scenario.
CREATE TABLE measure_data_master(
measure_time TIMESTAMP NOT NULL DEFAULT NOW(),
message TEXT
);
CREATE OR REPLACE FUNCTION measure_insert_trigger() RETURNS TRIGGER AS $$
DECLARE
tbl_name TEXT;
d_start DATE;
d_stop DATE;
BEGIN
SELECT INTO tbl_name TO_CHAR(DATE_TRUNC('week', NEW.measure_time), '"measure_data_y"YYYY"m"MM"d"DD');
IF NOT EXISTS(SELECT * FROM pg_tables where tablename = tbl_name) THEN
SELECT INTO d_start TO_CHAR(DATE_TRUNC('week', NEW.measure_time), 'YYYY-MM-DD');
SELECT INTO d_stop TO_CHAR(DATE_TRUNC('week', NEW.measure_time + INTERVAL '6 DAYS'), 'YYYY-MM-DD');
EXECUTE 'CREATE TABLE '||tbl_name||'(CHECK (measure_time >= '''||d_start||''' AND measure_time < '''||d_stop||''')) INHERITS(measure_data_master);';
EXECUTE 'CREATE INDEX '||tbl_name||'_key ON '||tbl_name||'(measure_time);';
END IF;
EXECUTE 'INSERT INTO '||tbl_name||' VALUES ('''||NEW.measure_time||''','''||NEW.message||''');';
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER insert_measure_trigger BEFORE INSERT ON measure_data_master FOR EACH ROW EXECUTE PROCEDURE measure_insert_trigger();
FreeBSD + PostgreSQL: тюнинг сервера БД