![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 23.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Pytanie czysto teoretyczne.
Jeżeli przyjdzie użytkownikowi wykonać operacje wpisania do tabeli powiedzmy 100 - 200 tysięcy wpisów to jak najlepiej to zrobić? Myślałem o cronjob, który co pare s wpisywałby do tabeli po 10-20 tysięcy, i to w sumie nie byłoby źle, tyle, że może istnieją lepsze rozwiązania? |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Nie pytaj o teorie bo wyglada ona tak:
dodaj od razu wszystkie wpisy tylko o praktyke: czemu musisz w odstepach? jak czesto to bedzie wykonywane? itp |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 23.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Bo chodzi o to, żeby nie zabić serwera.
Jeżeli użytkownik będzie chciał dodać 200 tys rekordów, a inny użytkownik jakieś 50 tys, jeszcze inny... To wtedy serwer sie wykrzaczy... Dodanie 100 tys na serwerze który posiadam to operacja rzędu 6s, zdecydowanie za dużo. A jak często? Chodzi o przeniesienie danych z tabeli jednej do drugiej. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 240 Pomógł: 13 Dołączył: 1.06.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Raz piszesz, że chcesz przenieś dane z tabeli do tabeli a trochę wyżej coś o użytkownikach... czego właściwie potrzebujesz bo jakoś ciężko mi sobie wyobrazić sytuację, w której kilku użytkowników, w tej samej sekundzie chce dodać kilkadziesiąt/set tysięcy rekordów....
Skoro masz aż tak 'obciążony' serwer (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) i w ciągu sekund do bazy trafiają setki tysięcy rekordów to co da Ci cron? Powiedzmy, że rozbijesz porcję od jednego usera na minutę ale w ciągu tej minuty pojawi się kolejnych 20 użytkowników, którzy dorzucą swoje trzy gorsze - myślisz, że to ma sens? //edit ...a przenosić możesz np. tak:
...przerzucisz i strukturę i dane. Ten post edytował LonelyKnight 2.06.2007, 16:40:56 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 23.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dane będą przenoszone z jednej tabeli do drugiej poprzez wykonanie przez użytkownika pewnej operacji, więc rozwiązanie, które opisałeś trochę mija się z tym co potrzebuję, ale to przeze mnie - źle opisałem problem.
Co mi da cron? Rozbije to, jak zauważyłeś, na większą odległość w czasie - odciąży to serwer w pewnym stopniu, a użytkownik nie będzie musiał czekać na wynik całej operacji. |
|
|
![]()
Post
#6
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Nie ma sensu stosowac crona, no chyba ze to operacje cykliczne i pochodza z innej bazy wtedy warto sie zastanowic nad linkiem miedzy bazami jesli to dane pochodzace z innych zrodel a wrzucanie powiedzmy jest nie czesciej niz powiedzmy 1h i tabela posiada indexy na pola warto na czas wrzucania danych usunac wszystkie indeksy wrzucic taka paczke danych a nastepnie odbudowac index. Problem jeszcze sie pojawia z dostepem do tych danych po sciagnieciu indeksu.
Mozliwosci jest bardzo wiele. Jesli masz bardzo duzo rekordow i stosowane sa do tego skomplikowane zapytania i bardzo zalezy Ci na wydajnosci to zaintresuj sie tematem hurowni danych. Jest wiele pozycji na ten temat pisanych pod Oracle i M$ wiec cos do MySQLa by sie znalazlo. Jak zrobisz to musisz sam zdecydowac, jesli zalezy Ci na wydajnosci dane pomnoz przez powiedzmy 10 - 100 i sprawdzaj jesli czasy beda znosne to bedziesz pewny ze dla Twojej ilosci danych tez bedzie ok. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 23.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Możesz przybliżyć temat hurtowni danych?
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 240 Pomógł: 13 Dołączył: 1.06.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 13:30 |