🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.php
Article #231520

Re: zawijanie logów

#231520
From: Rafal Podsiadly
Date: Sat, 21 Jan 2017 07:30
30 lines
3087 bytes
Trochę teorii.
1. Zbierając logi w jednej tabeli dochodzisz do pewnego ograniczenia.
(Jedna tabela jest jednym plikiem w systemie bazodanowym).
Z czasem pojawia się problem miejsca i szybkość z jaką otwiera system bazodanywy pliki. Pytanie do ilu rekordów maksymalnie jesteś w stanie sobie pozwolić. 
100 rekordów to znacznie za mało by mieć dobrą analizę błędów logów. Możesz taką ilość osiągnąć w kilka sekund.

PS: Dopiero fragmentacja tabeli powoduje fizyczne usunięcie z niej miejsca.

Wyjściem z rozwiązania jest budowanie Tabel które przechowują archiwum w okresach miesięcznych. arch_xxxx_xx 
usuwanie danych ograniczało by się do usunięciu tabeli.

Rozpiszmy to na zbiory danych
1. jedna tabela -> dane_insert(id, data, dane) 
- odpalamy crone który cyklicznie uruchamiamy 1 dziennie. Sprawdza ilość rekordów 
usuń wszystko z warunkiem id < (count(archiwum) - 100) - (max_id)

Trochę kombinowania... PS: dellete wykonuje następujące operacje.

Odszukuje rekord o danym id następnie sprawdza czy rekord jest używany, zablokowany i dokonuje próbę zmiany statusu rekordu na usunięty aby można było w przyszłości przy fragmentacji zwolnić miejsce.

Efekt dość spora ilość operacji wykonywana przez silnik bazy danych.

2. Rozwiązanie (tabela archiwum odpowiadająca archiwum) 
Odczyt danych przez widok, zapisywanie danych przez procedurę.
Usuwanie danych przez trunce -> delette table.

Na przykład zamiast przechowywać dane rekordy w ilości 100. Przechowujemy x miesięcy.

Efekt usuwanie szybsze. Mniejsze tabele zapewniają lepszą 
elastyczność systemu. PS: jeśli danych masz mało to można rozdzielić to na lata.
Technical Details
Message-ID: <8e09f7fd-d703-41cd-ad76-e3f9088dcb6a@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!i7no272194qta.1!news-out.google.com!78ni17795itm.0!nntp.google.com!r185no1091494ita.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <o5qse2$jes$1@node2.news.atman.pl> <o5raq9$42h$1@usenet.news.interia.pl> <o5td6b$vp0$2@node1.news.atman.pl>

Show Full Headers
Complete Article Headers
X-Received: by 10.176.91.134 with SMTP id y6mr4516621uae.10.1484983806358;        Fri, 20 Jan 2017 23:30:06 -0800 (PST)
X-Received: by 10.157.27.162 with SMTP id z31mr1858124otd.7.1484983806206; Fri, 20 Jan 2017 23:30:06 -0800 (PST)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!i7no272194qta.1!news-out.google.com!78ni17795itm.0!nntp.google.com!r185no1091494ita.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.php
Date: Fri, 20 Jan 2017 23:30:05 -0800 (PST)
In-Reply-To: <o5td6b$vp0$2@node1.news.atman.pl>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=109.95.25.84; posting-account=reqlzgoAAACKWK1i9kGr8VyQtzu_4AF6
NNTP-Posting-Host: 109.95.25.84
References: <o5qse2$jes$1@node2.news.atman.pl> <o5raq9$42h$1@usenet.news.interia.pl> <o5td6b$vp0$2@node1.news.atman.pl>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <8e09f7fd-d703-41cd-ad76-e3f9088dcb6a@googlegroups.com>
Subject: Re: zawijanie logów
From: Rafal Podsiadly <spinacz24@gmail.com>
Injection-Date: Sat, 21 Jan 2017 07:30:06 +0000
X-Received-Bytes: 3249
X-Received-Body-CRC: 494554450
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit