Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]ile moge dodać rekordów do mysql?
Forum PHP.pl > Forum > Przedszkole
slimboot
Czy baza danych MySQL ma jakieś ograniczenie, co do ilości rekordów w jednej bazie?

Czy przy dużej ilości rekordów sięgającej liczby 1000, 10000, 100000 a może nawet 1000000 wpisów, może nastąpić jakieś spowolnienie w działaniu, tzn w wyszukiwaniu konkretnych rekordów, które byłoby odczuwalne?
CuteOne
Wszystko zależy od tego co będzie się znajdowało w takiej tabeli, w jaki sposób będziesz szukał, czy zapytania będą zoptymalizowane oraz czy założono odpowiednie indeksy.
sowiq
Indeksy w MySQL wysypują się po jakimś czasie, ale na pewno nie jest to 1M rekordów smile.gif Z tego co pamiętam to silnik przestaje ogarniać indeksy ważące więcej niż 40 GB.
slimboot
Muszę umieścić ip każdego użytkownika który odwiedzi moją stronę i z wpisem do tabeli w postaci tablicy array(), w której będą znajdowały się liczby do 1 do ok kilku tysięcy. Zapytania mają być porostu na podstawie ip użytkownika.
sowiq
Upychanie zserializowanej tablicy do bazy danych najczęściej nie jest dobrym rozwiązaniem. Po to ktoś wymyślił relacyjne bazy danych, żebyśmy mogli korzystać z ich dobrodziejstw snitch.gif
slimboot
Tworze stronę edukacyjną, gdzie ma być ok kilka tysięcy obrazków, z czego skrypt ma wyświetlać zawsze 3 obrazki losowo i każde odświeżenie strony ma wyświetlić inne losowo wybrane obrazki.

Problem pojawił się, gdy stwierdziłem, że dobrze będzie, gdy unikatowy użytkownik, będzie mógł zaznaczyć których obrazków nie chce już nigdy więcej oglądać i te obrazki mają się już nie pojawiać. Dlatego poszperałem w necie nad poszukiwaniem najlepszej metody i stwierdziłem, że wpis z IP użytkownika oraz unikatowa tablica Array w bazie danych, z numerami "niechcianych obrazków" była by dobrym rozwiązaniem, a przynajmniej jedynym jakie mi przychodzi do głowy.

Tak więc czy takie coś mogłoby źle funkcjonować? A może jakiś pomysł na lepszą metodę?
sowiq
Ja bym to zrobił tak jak poniżej. "odrzucony_obrazek" to tabelka z 3 kolumnami: id, obrazek_id, ip. Każdy rekord to jeden odrzucony przez danego użytkownika obrazek. Dzięki temu wszystkie operacje będą łatwiejsze - dodanie obrazka (1 prosty insert), pobranie listy dostępnych obrazków (1 zwykły select) czy usunięcie jakiegoś obrazka z listy ignorowanych (1 delete).

Moim zdaniem takie podejście jest lepsze, prostsze w implementacji i łatwiejsze w dalszej rozbudowie (np. każdy obrazek jest ignorowany tylko przez tydzień).

  1. SELECT *
  2. FROM obrazek
  3. WHERE id NOT IN (
  4. SELECT obrazek_id FROM odrzucony_obrazek WHERE ip = '127.0.0.1'
  5. )


[edit]
Żeby trochę zoptymalizować, możesz IP zamienić na postać decymalną (ip2long) i założyć indeks na kolumnę "ip" w tabelce "odrzucony_obrazek".
slimboot
Czy dobrze zrozumiałem? Te skrypt który mi podałeś, czyta jednocześnie z dwóch różnych tabelek? Z tabeli "obrazek" i z tabeli "odrzucony_obrazek"?
sowiq
Nie skrypt, tylko zapytanie wink.gif

Ale tak, pobiera ono rekordy z tabelki "obrazek", których identyfikatory nie istnieją w tabelce "odrzucony_obrazek" (dla podanego IP).
Outside
Cytat(slimboot @ 17.12.2013, 15:06:46 ) *
Dlatego poszperałem w necie nad poszukiwaniem najlepszej metody i stwierdziłem, że wpis z IP użytkownika oraz unikatowa tablica Array w bazie danych, z numerami "niechcianych obrazków" była by dobrym rozwiązaniem, a przynajmniej jedynym jakie mi przychodzi do głowy

Tak więc czy takie coś mogłoby źle funkcjonować? A może jakiś pomysł na lepszą metodę?


Nic lepszego nie wymyśliłem, prócz rejestracji zalogowania i wtedy odrzucania obrazków, bo niektórzy mają ip zmienne więc niewypali w 100%.
slimboot
Ok Sowiq wielkie dzięki, bo nawet nie wiedziałem, że można dawać zapytanie do dwóch tabel jednocześnie, a sposób jest o wiele prostszy i wygodny specool.gif . Dalej już powinienem sobie poradzić samemu
sowiq
Cytat(slimboot @ 17.12.2013, 14:59:32 ) *
nawet nie wiedziałem, że można dawać zapytanie do dwóch tabel jednocześnie


Nie takie rzeczy żeśmy ze szwagrem robili cool.gif Powodzenia.
slimboot
Cytat(Outside @ 17.12.2013, 15:45:06 ) *
Nic lepszego nie wymyśliłem, prócz rejestracji zalogowania i wtedy odrzucania obrazków, bo niektórzy mają ip zmienne więc niewypali w 100%.

Jak miałem kiedyś internet z jakiejś tam sieci mobilnej, to zawsze mi zmieniało ip przy nowym połączeniu. Ciekawi mnie ilu procentowo użytkowników internetu ma zmienne ip. Te rejestracje zawsze mnie odpychają. Dlatego jestem zwolennikiem stron typu "Wejdź i masz". Na początku myślałem o wykorzystaniu jakoś ciastek, wtedy nie było by problemu zmiennego ip, ale chyba z ciastkami się nie da zrobić przy tak dużej ilości informacji, które miałyby być tam zawarte. Chyba żebym nadawał każdemu użytkownikowi w ciastku unikatowy numer identyfikacyjny, a potem odwoływał się na podstawie tegoż numeru do tablic
sowiq
Cytat(slimboot @ 17.12.2013, 15:07:37 ) *
Chyba żebym nadawał każdemu użytkownikowi w ciastku unikatowy numer identyfikacyjny, a potem odwoływał się na podstawie tegoż numeru do tablic

Sam sobie odpowiedziałeś jakie będzie najlepsze rozwiązanie wink.gif

Możesz też rzucić okiem na to: http://samy.pl/evercookie/
slimboot
I tak tez zrobię, a zapytanie, które mi podpowiedziałeś, skrypt już poprawiony i działa, aż miło patrzeć jak się zmieniają losowo obrazki, tylko nie te których nie chcęsmile.gif Miodzio:)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.