![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 11.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Pytanie dotyczy takiego rozwiązania, czy przy dużych bazach, które zawięrają np 200-300 tys użytkowników i każdy z nich posiada do tego np kilkadziesiąt rekordów (pliki, wpisy lub podobne rzeczy, małoważne..) nie jest dobrym rozwiązaniem dla ważnych rzeczy zrobić pól w tabeli usera na te dane? Np. `file_count` itd. żeby przy listowaniu danych nie pobierać za każdym razem tej ilości, tylko odczytywać ją z pola? Zastanawia mnie to czy bardziej optymalne jest pobieranie tych ilości czy składowanie dodatkowych pól. Bo mimo rekordów z danymi kto i co pobrał chciałbym dodać jednak każdemu userowi pole `downloads_count` żeby przyśpieszyć działanie całego skryptu. Z góry dzięki za pomoc. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 18 Pomógł: 3 Dołączył: 19.01.2011 Ostrzeżenie: (0%) ![]() ![]() |
Ja osobiście, na podstawie danych jakie podałeś, dodał bym takie pola. Tutaj musisz rozpatrzyć jak dużo będzie odwołań do tych pól oraz samych aktualizacji. Każde takie pole powoduje konieczność wykonywania dodatkowych operacji podczas aktualizacji tabel. Jeżeli aktualizacji będzie znacząco więcej niż odczytów pól przechowujących odpowiednie ilości, wykorzystanie tych pól przestanie mieć sens, narzut podczas aktualizacji przewyższy zysk podczas odczytu. Musisz też pamiętać o aktualizacji pól w każdym miejscu, w którym aktualizujesz tabele źródłowe (prawdopodobnie wyzwalacze są tu dobrym wyborem), w przeciwnym wypadku będziesz miał niespójne dane.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 11.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Odczyt wydaje mi się dużo częściej używany, choćby lista userów gdzie do każdego chcę widzieć ilość plików na liście, w tym przypadku omijam count i zliczanie dla niektórych userów sporej liczby plików, wyświetlanie ich np po 50 i do każdego zczytywanie ilości plików czasami potrafi nawet spowolnić dosyć mocno bazę. Odczytując jedynie wartość pola nie odczuję tego praktycznie w ogóle tak mi się wydaje. Generowanie statystyk itp także dzięki tym fieldom będzie dużo bardziej proste i nie będzie wymagało aż tylu zapytań. Aktualizacja wiadomo, przy np wgraniu każdego kolejnego pliku. Pobrania odczytywane będą zapewne często więc także wydaje mi się np bardziej optymalne zrobienie SUM pola download np wszystkich plików usera niż COUNT dla wszystkich rekordów usera z pobraniami. Jakie Wasze zdanie na ten temat?
![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.06.2025 - 14:46 |