Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Usuwanie rekordów MySQL - rozrastanie się bazy

155 views
Skip to first unread message

Krzysztof 'kw1618' z Warszawy

unread,
Aug 14, 2008, 2:00:18 AM8/14/08
to
Jest sobie baza MySQL, gdzie kilka rekordów spokojnie można usunąć, ale
zanim usuniemy, to zastanawiamy się... czy z punktu widzenia rozrastania
się bazy i zajmowanego miejsca lepiej jest:

1. rekordy zbędne usunąć, a nowe dane pchać do nowych rekordów tworzonych ?

2. zbędne rekordy po prostu zmodyfikować wstawiając nowe dane, unikając w
ten sposób tworzenia nowych ...

a w związku z powyższym:
Czy usunięty rekord z bazy zmniejsza jej rozmiar na serwerze ?


--
Zalaczam pozdrowienia i zyczenia powodzenia
Krzysztof 'kw1618' Warszawa - Ursynow
Koleje Mazowieckie galeria http://foto.3mam.net

icek2

unread,
Aug 14, 2008, 3:41:48 AM8/14/08
to
Krzysztof 'kw1618' z Warszawy pisze:

> Jest sobie baza MySQL, gdzie kilka rekordów spokojnie można usunąć, ale
> zanim usuniemy, to zastanawiamy się... czy z punktu widzenia rozrastania
> się bazy i zajmowanego miejsca lepiej jest:
>
> 1. rekordy zbędne usunąć, a nowe dane pchać do nowych rekordów tworzonych ?
>
> 2. zbędne rekordy po prostu zmodyfikować wstawiając nowe dane, unikając w
> ten sposób tworzenia nowych ...
>
> a w związku z powyższym:
> Czy usunięty rekord z bazy zmniejsza jej rozmiar na serwerze ?
>
>
AFAIK to po usunieciu bedziesz i tak miał nadmiar w bazie
ale jest funkcja
http://dev.mysql.com/doc/refman/5.0/en/optimize-table.html

i zrobi porzadeczek :)

--
pozdros
icek

Tomek Renik

unread,
Aug 14, 2008, 8:41:08 AM8/14/08
to
Dnia 14-08-2008 o 09:41:48 icek2 <ic...@poczta.onet.pl> napisał(a):


>> a w związku z powyższym:
>> Czy usunięty rekord z bazy zmniejsza jej rozmiar na serwerze ?
> AFAIK to po usunieciu bedziesz i tak miał nadmiar w bazie
> ale jest funkcja
> http://dev.mysql.com/doc/refman/5.0/en/optimize-table.html
>
> i zrobi porzadeczek :)


o! ciekawe, bo mi magik mówił, ze usuwam rekord... usuwa to wszystko co
trzeba wersze z tabel i zwalnia się miejsce

--
Tomasz Renik jestem

note11

unread,
Aug 14, 2008, 10:07:40 AM8/14/08
to

> o! ciekawe, bo mi magik mówił, ze usuwam rekord... usuwa to wszystko co
> trzeba wersze z tabel i zwalnia się miejsce


For InnoDB tables, OPTIMIZE TABLE is mapped to ALTER TABLE, which
rebuilds the table to update index statistics and free unused space in
the clustered index.

nob...@middle.of.nowhere

unread,
Aug 14, 2008, 10:30:13 AM8/14/08
to
zwalniać się zwalnia, ale nie zawsze może być od razu wykorzystane
dla nowego rekordu (więc tak jakby się jednak nie zwalniało)

np. jeśli usunięty rekord zajmował 100 bajtów, a nowy rekord ma 150,
to nowy rekord się nie zmieści w miejscu po starym i przy dodaniu
takiego rekordu efekt będzie taki, jakby miejsce się nie zwalniało

Maciej Dobrzanski

unread,
Aug 17, 2008, 4:43:32 PM8/17/08
to
> 1. rekordy zbędne usunąć, a nowe dane pchać do nowych rekordów tworzonych
> ?
>
> 2. zbędne rekordy po prostu zmodyfikować wstawiając nowe dane, unikając w
> ten sposób tworzenia nowych ...
>

To wszystko zależy od typu tabeli i ewentualnych parametrów bazy. W
przypadku MyISAM jeśli parametry nie stanowią inaczej, miejsce po usuniętym
wierszu zostanie efektywnie wykorzystane. Przy InnoDB jest zupełnie inaczej,
ponieważ jednostką odczytu/zapisu jest strona (domyślnie 16KB) a nie rekord.
Po usnięciu wiersza na stronie pozostanie więc wolne miejsce, którego
wykorzystanie jednak jest uwarunkowane fizyczną organizacją danych w InnoDB.
A dane organizowane są przy pomocy klucza głównego, więc wstawienie nowego
rekordu w miejsce skasowanego (lub chociaż na tę samą stronę) to sytuacja
raczej trudna a na pewno wymagająca specyficznego sposobu generowania
wartości PK.

Maciek

0 new messages