Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zakres dat z danych
wlamywacz
post 28.06.2010, 19:39:20
Post #1





Grupa: Zarejestrowani
Postów: 535
Pomógł: 27
Dołączył: 3.05.2005

Ostrzeżenie: (20%)
X----


Witam

Struktura tabeli:
  1. CREATE TABLE IF NOT EXISTS `status` (
  2. `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `pageid` bigint(20) UNSIGNED NOT NULL,
  4. `date` datetime NOT NULL,
  5. `server` tinyint(1) UNSIGNED NOT NULL,
  6. `php` tinyint(1) UNSIGNED NOT NULL,
  7. UNIQUE KEY `id` (`id`),
  8. KEY `pageid` (`pageid`,`date`)

Przykładowe dane:
  1. INSERT INTO `status` (`id`, `pageid`, `date`, `server`, `php`) VALUES(1, 1, '2010-06-24 22:43:52', 1, 1);
  2. INSERT INTO `status` (`id`, `pageid`, `date`, `server`, `php`) VALUES(2, 1, '2010-06-24 22:44:52', 1, 0);
  3. INSERT INTO `status` (`id`, `pageid`, `date`, `server`, `php`) VALUES(4, 1, '2010-06-24 22:45:53', 1, 0);
  4. INSERT INTO `status` (`id`, `pageid`, `date`, `server`, `php`) VALUES(5, 1, '2010-06-24 22:46:53', 1, 0);
  5. INSERT INTO `status` (`id`, `pageid`, `date`, `server`, `php`) VALUES(6, 1, '2010-06-24 22:47:53', 1, 1);
  6. INSERT INTO `status` (`id`, `pageid`, `date`, `server`, `php`) VALUES(7, 1, '2010-06-24 22:48:53', 1, 1);
  7. INSERT INTO `status` (`id`, `pageid`, `date`, `server`, `php`) VALUES(8, 1, '2010-06-24 22:49:53', 1, 1);
  8. INSERT INTO `status` (`id`, `pageid`, `date`, `server`, `php`) VALUES(9, 1, '2010-06-24 22:50:53', 1, 0);

Czy istnieje optymalny sposób aby na poziomie bazy danych wyciągnąć informacje o okresach w których wystąpił błąd php. Czyli coś w rodzaju:
Od 2010-06-24 22:44:52 do 2010-06-24 22:46:53, od 22:50:53 do 22:50:53 wystąpił błąd.

Pozdrawiam.
Go to the top of the page
+Quote Post
mkozak
post 29.06.2010, 10:36:01
Post #2





Grupa: Zarejestrowani
Postów: 78
Pomógł: 4
Dołączył: 21.03.2005

Ostrzeżenie: (0%)
-----


Ola boga, co za 'crazy idea'.

Po to są pliki logów. Błędy loguje server do pliku, pliki logów po jednym na dzień, a potem 'grep'-ujesz pliki w poszukiwaniu tego co ci potrzeba.
Taki sposób jest najszybszy/wydajniejszy. (może mało elastyczny, ale do tego właśnie stworzony)

w żaden sposób twój pomysł nie jest wydajny.

Ale jeżeli już to:
1. Make your database as small as possible to better fit in memory - czyli staraj się o jak największe "upakowanie" danych, żeby zoptymalizować proces przeszukiwania tabeli.
Czy na polu pageid potrzebujesz, aż biginta, czy wystarczy ci zakres od 0-128? Zmniejsz o ile się da.
2. Ustaw 'ROW_FORMAT' tabeli na FIXED - zobaczysz sobie w phpmyadminie na zakładce operacje. Odchudzi to strukturę pliku danych.
3. Jeżeli będziesz przeszukiwał to korzystaj z całego klucza (SELECT * FROM logi WHERE pageid= x AND data between '2010-01-01' and '2005-01-31')
4. Włącz pakowanie kluczy. Też w opcjach tabeli. Zmniejszy to klucze i jeżeli się nie mylę to przy dużych ilościach powinno ładniej pasować w pamięć serva. Przyspieszy wyszukiwanie.

Osobiście ja bym zamienił datetime na intiger i ładował tam unix time stampy (ilość sec od 1970).
Wtedy łatwiej jest robić działania na tym polu (dodawanie i odejmowanie dowolnej ilości sec) SELECT * FROM logi WHERE pageid= x AND data between 1277804192 and 1277804192+3600;


--------------------
==============================================
Bo ja jestem Wróbelek Htmlek
==============================================
Go to the top of the page
+Quote Post
wlamywacz
post 1.07.2010, 16:25:28
Post #3





Grupa: Zarejestrowani
Postów: 535
Pomógł: 27
Dołączył: 3.05.2005

Ostrzeżenie: (20%)
X----


Nie ma takiej możliwości niestety gdyż dziennie mogło by przybywać nawet z 1k plików. Ilość rekordów w tabeli będzie bardzo duża (100k dodawanych codziennie). Rozwiązałem to w inny sposób.

Ten post edytował wlamywacz 1.07.2010, 16:28:09
Go to the top of the page
+Quote Post
mkozak
post 5.07.2010, 10:53:02
Post #4





Grupa: Zarejestrowani
Postów: 78
Pomógł: 4
Dołączył: 21.03.2005

Ostrzeżenie: (0%)
-----


Nie jeden plik na jeden błąd tylko jeden plik na dzień.
Więc jeden plik dziennie ze wszystkimi błędami.


--------------------
==============================================
Bo ja jestem Wróbelek Htmlek
==============================================
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 08:51