ďťż
 
[MySQL] =?UTF-8?B?ZMWCdWdpIHVwZGF0ZQ==?= ďťż
 
[MySQL] =?UTF-8?B?ZMWCdWdpIHVwZGF0ZQ==?=
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[MySQL] =?UTF-8?B?ZMWCdWdpIHVwZGF0ZQ==?=



grzessiek - 11-05-2007 12:32
[MySQL] =?UTF-8?B?ZMWCdWdpIHVwZGF0ZQ==?=
 
witam, mam taką sytuację:

co 15 minut muszę wykonać kasowanie i wstawienie ok. 20 tys. rekordów z
jednej tabeli. skrypt, który to robi, ze względu na różne ograniczenia
niezwiązane z bazą, wykonuje się ok. 1 minuty.

na tej tabeli działa serwis www. w praktyce, podczas aktualizacji dane
są niedostępne (bo wykasowane) lub częściowe - najczęściej jednak
niedostępne.

chciałbym tego uniknąć, więc mam pytanie - co można zrobić żeby
procedura odświeżania danych była bardziej przyjazna i niezauważalna dla
użytkowników serwisu?

obiło mi się o uszy coś takiego jak BLOCK TABLES - czy tu mam szukać?

będę wdzięczny za wszystkie sugestie.

pozdrawiam, g.
--
Hotele w Warszawa, Kraków, Wrocław, Szczecin, Poznań
http://www.travelguide.pl





Maciek Dobrzanski - 11-05-2007 12:32
=?UTF-8?Q?Re:_=5BMySQL=5D_d=C5=82ugi_update?=
  "grzessiek" <mysqld@poczta.onet.pl> wrote in message
news:f1eksk$kur$1@news.onet.pl...
>
> na tej tabeli działa serwis www. w praktyce, podczas aktualizacji dane są
> niedostępne (bo wykasowane) lub częściowe - najczęściej jednak
> niedostępne.

Użyć innego silnika danych, np. InnoDB, gdzie problem lockowania stanie się
znacznie mniej uciążliwy lub zniknie całkowicie.

Albo, zamiast kasować dane co 15 minut, stworzyć jakiś system wersjonowania
danych. Do tabeli dopisywać jedynie kolejne rekordy ze zmieniającą się
wersją (może to byc poprostu czas i data jeśli jest to wystarczające do
rozróżnienia aktualnych od nieaktualnych), w osobnej tabeli trzymać indeks
wersji i odczytywać tylko dane z ostatniej. Wówczas stare dane możesz
kasować znacznie rzadziej, np. raz na dzień w środku nocy. Dodatkowo, jeśli
proces wstawiania danych to spora paczka INSERTów, można się zastanowić nad
konfiguracją parametru concurrent inserts (dla MyISAM).

Albo, wykorzystać partycjonowanie danych typu LIST według jednego pola,
które będzie zawierać jedynie dwie wartości - 0 i 1. Dane dopisywać
naprzemiennie raz z wartością kolumny równą 0, a raz równą 1. Po zakończonym
procesie dodawania, druga partycję czyścić (najszybciej - DROP/CREATE).

Możliwości jest pewnie znacznie więcej w zależności od danych i możliwości
modyfikacji mechanizmu. To najbardziej ogólne.

Maciek




sg - 11-05-2007 12:32

  grzessiek wrote:
>
> witam, mam taką sytuację:
>
> co 15 minut muszę wykonać kasowanie i wstawienie ok. 20 tys. rekordów z
> jednej tabeli. skrypt, który to robi, ze względu na różne ograniczenia
> niezwiązane z bazą, wykonuje się ok. 1 minuty.
>
> na tej tabeli działa serwis www. w praktyce, podczas aktualizacji dane
> są niedostępne (bo wykasowane) lub częściowe - najczęściej jednak
> niedostępne.
>
> chciałbym tego uniknąć, więc mam pytanie - co można zrobić żeby
> procedura odświeżania danych była bardziej przyjazna i niezauważalna dla
> użytkowników serwisu?
>
> obiło mi się o uszy coś takiego jak BLOCK TABLES - czy tu mam szukać?
>
> będę wdzięczny za wszystkie sugestie.
>

użyj transakcji i tabel InnoDB, inaczej się nie da




sw - 11-05-2007 12:32

 
Użytkownik "sg" <alpha@skynet.org.pl_WITHOUT> napisał w wiadomości
news:f1en95$hap$1@inews.gazeta.pl...
> grzessiek wrote:
>>
>> witam, mam taką sytuację:
>>
>> co 15 minut muszę wykonać kasowanie i wstawienie ok. 20 tys. rekordów z
>> jednej tabeli. skrypt, który to robi, ze względu na różne ograniczenia
>> niezwiązane z bazą, wykonuje się ok. 1 minuty.
>>
>> na tej tabeli działa serwis www. w praktyce, podczas aktualizacji dane są
>> niedostępne (bo wykasowane) lub częściowe - najczęściej jednak
>> niedostępne.
>>
>> chciałbym tego uniknąć, więc mam pytanie - co można zrobić żeby procedura
>> odświeżania danych była bardziej przyjazna i niezauważalna dla
>> użytkowników serwisu?
>>
>> obiło mi się o uszy coś takiego jak BLOCK TABLES - czy tu mam szukać?

Nie korzystam z mysql, ale jezeli z obsluguje ona triggery to chyba
najlepsze rozwiazanie. Nie taki trigger odklada Ci w innej tablice info o
wszystkich rekordach w jakich zaszly zmiany, a potem co 15 minut robisz
tylko update rekordow, w ktorych zaszly zmiany i czyscisz ta pomocnicza
tabele.

Pozdrawiam
SW





Janusz - 11-05-2007 12:32

  > co 15 minut muszę wykonać kasowanie i wstawienie ok. 20 tys. rekordów z
> jednej tabeli. skrypt, który to robi, ze względu na różne ograniczenia
> niezwiązane z bazą, wykonuje się ok. 1 minuty.

stwórz dwie identyczne tabele,
a w oprogramowaniu za pomocą
jednej zmienne przełączaj je,
i masz około 15 minut na
modyfikację
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?= [mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?= [MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?= [mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?= [MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?= [MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?= Gdzie MySQL 4.1, a gdzie 5.0? [MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?= [MS SQL] "set names" (mySQL) w MS SQL [mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nocnerozmowy.xlx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com