Stała liczba rekordów w bazie postgresql

0

Witam

Chciałbym osiągnąć taki efekt, że w bazie utrzymuję stałą liczbę rekordów np. 10 000.Po kolei dodaje rekordy, aż osiągnę 10 000. Od tej chwili dodanie nowego rekordu powoduje usunięcie najstarszego. Czy są jakieś opcje w pg Admin III które to umożliwiają?? Czy może trzeba wykorzystać zmienną "serial"?

0

takie coś się nazywa trigger

0

Mam takie coś :

CREATE TABLE pomiary
(
  id serial NOT NULL,
  data timestamp without time zone,
  x integer,
  y integer,
  CONSTRAINT pomiary_pkey PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE pomiary
  OWNER TO postgres; 

Jak tu dodać tego trigera?

0

może najpierw w ogóle poczytaj co to jest ten "trigger"

0

Czytałem,że to jest zdarzenie przed lub po operacji na bazie danych w moim przypadku przed "Insert" Tylko nie wiem jak zapisać ten warunek?

0

Nikt nie podpowie jak to zrobić??

0

A ta stała liczba to z czego wynika?
Chcesz mieć po prostu cały czas porządek?
Jeśli tak to odradzam triggery, wystarczy proces czyszczący raz na jakiś czas, odpalany na zakończenie aplikacji lub przez harmonogram systemowy.
Po prostu odpowiedni SQL z DELETE.

Trigger zwolni Ci wszystkie operacje INSERT na tabeli a przecież nic się nie stanie jak w ciągu dnia będzie 10013 rekordów a na koniec dnia 10000?

0

Dlatego, że mam ograniczone zasoby na pamięć i chce mieć kontrole nad ilością danych w bazie danych.

0

to tak nie działa - nie wystarczy usunąć rekord, żeby zwolnić miejsce. Przy usuwaniu rekordu nie jest on fizycznie usuwany a jedynie oznaczony jako usunięty. Napisz co to za SZDB

0

Baza danych to postgresql i jest uruchamina na ARM9 na którym pracuje Linux, a do dyspozycji mam 1Gb pamięci. Więc chciałbym mieć kontrole nad rozmiarem bazy.

0

Kolega 3 posty wyżej napisał że usunięcie rekordów nie zwolni pamięci

0

Czyli mam zrobić delete a potem vacum aby oczyścić pamięć??
A jak to jest jeśli usuwam tabele z bazy to pomimo jej usunięcia ona "zalega" w pamięci dopóki nie zrobie VACUM??

0
kornik280 napisał(a):

Czyli mam zrobić delete a potem vacum aby oczyścić pamięć??
A jak to jest jeśli usuwam tabele z bazy to pomimo jej usunięcia ona "zalega" w pamięci dopóki nie zrobie VACUM??

Dokładnie tak.

0

Tak samo jest z tabelami?? Cz usunięcie tabeli jest jednoznaczne z jej usunięcie z pamięci??

0

nie koniecznie - powtórzę Ci - w bazie danych łatwiej i szybciej oznacza się rekordy (lub tabele w przypadku baz danych przechowujących strukturę i dane w jednym pliku) jako nie istniejące, niż ich fizyczne usunięcie (wystarczy znacznik to określający, więc obszar przez nie zajęty dalej jest zajęty hihi), wyczyszczenie powoduje zwykle wyczyszczenie hihi tabel i obszaru zajętego przez bazę danych - łatwiej nie potrafię wytłumaczyć :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.