Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> podział zapisu rekordów na miesiące, Jak odczytywać i zapisywać dane
fiasko
post
Post #1





Grupa: Zarejestrowani
Postów: 243
Pomógł: 1
Dołączył: 1.06.2010

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


Do bazy w jednej tabeli planuje zapis dość sporo rekordów , a konkretnie 300 tyś dziennie.

Mam wobec tego pytanie jak zaplanować zapis i odczyt danych ?

Chcę podzielić zapisy na miesiące i co miesiąc tworzyć nową tabelę. Ale może są już jakieś dirvery gotowe do takich rzeczy ?
Nie chcę wymyślać koła na nowo.

Generalnie dane muszą być cały czas dostępne w systemie jak cofnę się w historii. Oczywiście chodzi o statystyki. Robił z was ktoś coś podobnego ? Chętnie wysłucham wasze opinie na to jak podejść do tematu .


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
fiasko
post
Post #2





Grupa: Zarejestrowani
Postów: 243
Pomógł: 1
Dołączył: 1.06.2010

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


No więc zrobiłem tak przy zapisie generuję sobie takie zapytanie :

Kod
mysql_query("
    CREATE TABLE IF NOT EXISTS x_stat_".$tabela_nazwa." (
id BIGINT( 255 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
site_id INT(11) NOT NULL ,
key_id INT(11) NOT NULL ,
wejsc INT(11) NOT NULL ,
link_type INT(11) NOT NULL ,
link_url VARCHAR(1024) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
proxy_query VARCHAR(15) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
date DATE NOT NULL ,
time TIME NOT NULL ,
INDEX ( `site_id` , `key_id` , `date` )
) ENGINE = MYISAM ");



Potem wypełniam tabelę . Danymi .

Na min robię 1000 - 2000 zapisów rekordów.

Ale już przeciętny użytkownik może na raz odczytać tylko wybrane przez siebie 3 miesiące. Co daje max około 264 960 000 rekordów.
Tak więc zapytanie pójdzie tak jakby było ich tylko tyle. Nawet po 5 latach będzie działać tak samo.



Każdy miesiąc nazywa się inaczej i składam to tak:

Kod
$rok = strftime('%Y',time());
$mies = strftime('%b',time());
$tabela_nazwa =$rok."_".$mies;
$tabela_nazwa = "x_stat_".$tabela_nazwa;


Wygenerowałem sobie jakiś jeden mld rekordów w pętli przy użyciu CRON. W pojedynczej tabeli za każdym razem przeszukiwało całą tabelę i trwało to dość długo. Oczywiście gdy ustawiłem indeks po dacie to było niemal identycznie jak z moim swichtem. Teraz sobie przekierowuję zapytania do innych tabel w PHP.

Problem był w tym, że system miał trzymać w pamięci ostanie 5 lat i potem przesuwać dane do archiwizacji. Dane w z archiwum będą trafiały na inny serwer i nie będą wykorzystywane w bieżącym działaniu w aplikacji.

Dlatego zrobiłem to po swojemu mimo, iż teoretycznie tak nie powinno się robić.

Ps. może ktoś sprawdzić czy dobrze tworzę tabelę ? Chodzi mi o to czy dobrze zoptymalizowana ?
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 3.10.2025 - 12:49