konto usunięte

Temat: Optymalizacja bazy danych mySQL bądź przejście na inną...

Witam

Posiadam bazę danych która ma prawie 100.000.000 rekordów o wadze ok. 18 GB i chciałbym jakoś ją zoptymalizować.

W bazie trzymam dane aukcji allegro i codziennie pobieram nowe (ok 1.8 mln dziennie).

W bazie trzymam następujace dane:
- id aukcji
- id kraju
- informacja czy aukcja została usunięta (tinyint 1/0)
- informacja czy aukcja nie została znaleziona (tinyint 1/0)
- informacja czy aukcja musi zostać jeszcze sprawdzona
- cena
- ilość początkowa
- ilość końcowa
- ilość sprzedanych
- show ??
- data rozpoczęcia (UNIX)
- data zakończenia (UNIX)
- id sprzedawcy
- tytuł aukcji
- lokalizacja miniaturki
- opcje allegro (pogrubienie, wyróżnienie itp INT)
- id kategorii 1 poziomu
- id kategorii 2 poziomu
- id kategorii 3 poziomu
- id kategorii 4 poziomu
- id kategorii 5 poziomu
- id kategorii 6 poziomu

Dane zbieram na potrzeby serwisu podobnego do alledrogo.pl

Serwer Kimsufi 24G (kimsufi.pl)

Będę bardzo wdzięczny ze ew. nakierowanie mnie na coś ciekawego co ulepszy działania.
Ew. czy mySQL jest dobrym serwer na takie coś?

Pozdrawiam, Sebastian PoddubiukSebastian Poddubiuk edytował(a) ten post dnia 08.11.11 o godzinie 20:11
Janusz Skudrzyk

Janusz Skudrzyk Członek zarządu,
weblabs.pl

Temat: Optymalizacja bazy danych mySQL bądź przejście na inną...

Wszystko w jednej tabeli ?

konto usunięte

Temat: Optymalizacja bazy danych mySQL bądź przejście na inną...

Tak. Ale chyba jednak będę musiał oddzielić tytuł i miniaturkę ponieważ te dwie dane służą tylko do wyświetlania.

Na reszcie danych są wykonywane wszystkie potrzebne operacje.
Marcin Miga

Marcin Miga Programista. Po
prostu programista.

Temat: Optymalizacja bazy danych mySQL bądź przejście na inną...

Ew. czy mySQL jest dobrym serwer na takie coś?

Nie.
Jak już to postgreSQL.
Zresztą zależy ile masz wolnych środków... Jak wiesz allegro chodzi na ...

pozdrawiaMM

konto usunięte

Temat: Optymalizacja bazy danych mySQL bądź przejście na inną...

Pola:

- informacja czy aukcja została usunięta (tinyint 1/0)
- informacja czy aukcja nie została znaleziona (tinyint 1/0)
- informacja czy aukcja musi zostać jeszcze sprawdzona

Mogłyby być w jednym polu - wyliczeniowym (nie bitowym):

- aktualny status - INT
- aukcja do sprawdzenia = 1
- aukcja usunieta = 2
- aukcja nie znaleziona = 3
Piotr L. edytował(a) ten post dnia 08.11.11 o godzinie 21:20

konto usunięte

Temat: Optymalizacja bazy danych mySQL bądź przejście na inną...

Piotr L.:
Pola:

- informacja czy aukcja została usunięta (tinyint 1/0)
- informacja czy aukcja nie została znaleziona (tinyint 1/0)
- informacja czy aukcja musi zostać jeszcze sprawdzona

Mogłyby być w jednym polu - wyliczeniowym (nie bitowym):

- aktualny status - INT
- aukcja do sprawdzenia = 1
- aukcja usunieta = 2
- aukcja nie znaleziona = 3

Też prawda, tak jak w przypadku dodatkowych parametrów aukcji

konto usunięte

Temat: Optymalizacja bazy danych mySQL bądź przejście na inną...

Sebastian Poddubiuk:
Piotr L.:
Pola:

- informacja czy aukcja została usunięta (tinyint 1/0)
- informacja czy aukcja nie została znaleziona (tinyint 1/0)
- informacja czy aukcja musi zostać jeszcze sprawdzona

Mogłyby być w jednym polu - wyliczeniowym (nie bitowym):

- aktualny status - INT
- aukcja do sprawdzenia = 1
- aukcja usunieta = 2
- aukcja nie znaleziona = 3

Też prawda, tak jak w przypadku dodatkowych parametrów aukcji

int bez enum, słownik w tabeli obok
Krzysztof Białkowski

Krzysztof Białkowski Software Developer
(C# .NET)

Temat: Optymalizacja bazy danych mySQL bądź przejście na inną...

Przeanalizowałbym po czym najcześciej idą zapytania i spróbował podzielić tabele na partycje.

Na tabeli będziesz robił jakieś update lub delete ? Czy tylko same insert/select ?
Jaki będzie silnik ? InnoDB czy MyIsam ?Krzysztof Białkowski edytował(a) ten post dnia 09.11.11 o godzinie 09:27

konto usunięte

Temat: Optymalizacja bazy danych mySQL bądź przejście na inną...

DELETE w ogóle nie używany, rekordy wybierane po stanie.
UPDATE w przypadku gdy aukcja dobiegła końca.
Silnik MyISAM.
Tomasz Zadora

Tomasz Zadora programuję

Temat: Optymalizacja bazy danych mySQL bądź przejście na inną...

Youtube pracuje na MySQL więc nie widzę powodu, żeby nie był w stanie obsłużyć o wiele mniejszej bazy danych.

Wybierz ten silnik baz danych który znasz lepiej od strony technicznej związanej z optymalizacją - np. w PostgreSQL inaczej podejdziesz do indeksów niż w MySQL.

Możesz też zastanowić się nad rozwiązaniami typu NoSQL - miałyby tutaj sens.

Po za tym to co poprzednicy napisali: partycjonowanie, odpowiedni dobór typów danych.

Zastanów się czy jeżeli MySQL to MyISAM będzie tutaj dobry.

Piszesz, że codziennie 1,8 mln nowych rekordów, to oznacza dość dużo nowych danych, używając MyISAM podczas dodawania danych nie możesz z tabeli czytać - musiałbyś zastosować różne triki aby nie było tutaj problemu, albo dodawać dane np. w nocy/nad ranem, może jednak InnoDB i system transakcyjny byłby lepszy.

Następna dyskusja:

[MySQL] Wstawienia danych d...




Wyślij zaproszenie do