Oszukać bazę danych ;-)

Zarządzając jakimś serwisem internetowym (np. katalog stron, forum) może się okazać, że serwis jest dość popularny i przekroczyliśmy limit połączeń z bazą danych. Wiadomo: administratorzy serwerów dbają o to, aby jakość usług była na najwyższym poziomie, dlatego są zmuszeni wprowadzić pewne limity (w przypadku serwerów współdzielonych z jednej maszyny korzysta kilkanaście-kilkadziesiąt użytkowników i nie może dojść do takiej sytuacji, że jeden użytkownik wykorzystuje zasoby maszyny w 100%). Jednym z takich limitów jest ilość zapytań wysłanych do bazy danych. Niestety, ale czasami owy limit może zostać przekroczony. Są różne sposoby rozwiązania tego problemu:

Najprostsze rozwiązanie to wykupienie dedykowanej maszyny pod nasz serwis. Jest to dobre rozwiązanie, gdyż nie trzeba się z nikim dzielić mocą obliczeniową, jednak jest to dość drogie rozwiązanie (koszt rzędu kilkuset złotych miesięcznie może odstraszyć właścicieli rozrastających się serwisów, które dopiero zaczęły generować zyski).

Innym rozwiązaniem może być optymalizacja skryptów, tj. sprawdzenie, czy pewne rzeczy można wykonać zadając mniejszą ilość zapytań do bazy danych.

Kolejne rozwiązanie to buforowanie danych. Jeśli są na stronie jakieś elementy, które są pobierane z bazy danych a dość rzadko się zmieniają, to można te dane zapisywać do tymczasowego pliku i przy generowaniu strony zamiast odczytywać je z bazy danych należy odczytywac z pliku. Oczywiście należy tutaj zadbać o to, aby owy tymczasowy plik był co jakiś czas aktualizowany a także trzeba pomyśleć o tym, aby owy plik był aktualizowany, gdy zmienią się kluczowe dane w bazie danych.

I najciekawsze rozwiazanie: na niektórych serwerach limit zapytań do bazy danych dotyczy użytkownika. Użytkownik to nic innego jak para: login i hasło, która może łączyć się z bazą danych. I na niektórych serwerach z danej bazy danych może korzystać kilku użytkowników. Tak więc jeśli limit np. 100000 zapytań do bazy danych w ciągu godziny zostaje przekroczony to można stworzyć drugiego użytkownika i przerobić skrypt tak, aby raz łączył się z bazą danych z jednym użytkownikiem a raz z drugim. Jest to jednak dość nieetyczne zastosowanie (wykorzystanie “luki” w celu ominięcia limitu). Z drugiej strony sam to czasami stosuję. Otóż czasami wykonuję pewne prace administracyjne (np. usuwam stare posty z forum, szukam martwych załączników). Prace administracyjne wykonuję dość rzadko (raz na tydzień) jednak wymagają one sporej ilości zapytań do bazy danych i czasami gdy zbyt intensywnie grzebałem, inni nie mogli korzystac z forum, gdyż przekraczałem limit zapytań. Problem rozwiązałem przerabiając skrypt tak, aby łączył się z bazą danych korzystając z innego użytkownika, gdy się loguję do panelu administracyjnego.

Podobne wpisy:

  • Mini CD
  • Drukowanie druków pocztowych - paradoks
  • Programisto nie lekceważ dokumentacji!
  • Co robisz gdy Twój towar w sklepie jest chwilowo niedostępny?
  • To przeklęte Fantastico
  • Leave a Reply