2012-10-17 16 views
11

Jestem nurkowanie coraz głębiej funkcje MySQL, a następny Staram się to partycje tabelipartycjami i UPDATE

Jest w zasadzie tylko jedno pytanie o nich, gdzie nie mogłem znaleźć jasnej odpowiedzi jeszcze:

Jeśli zaktualizujesz wiersz, czy wiersz zostanie automatycznie przeniesiony na inną partycję, jeśli warunki partycji innej partycji zostaną spełnione? (jeśli na przykład partycje są podzielone według regionów, a region zmienia się z regionu A na region B)

A jeśli to nie nastąpi automatycznie, co muszę zrobić, aby przenieść wiersz z partycja A do partycji B? (i czy wystąpi w ten sposób wydajność?)

Co chcę zrobić, to przenieść "usunięte" (flagę) informacje do osobnej partycji stołu, ponieważ rzadko będą one wywoływane. Czy to zwykle byłby dobry pomysł, czy lepiej byłoby po prostu zostawić wszystko w tym samym (prawdopodobnie kiedyś wielkim - wiele milionów wierszy) stole?

Odpowiedz

17

Należy przenieść je po aktualizacji. Jeśli nie, to nie będzie działać dobrze. MySQL musiałby w zasadzie skanować wszystkie partycje przy każdym zapytaniu, ponieważ nie mógł wiedzieć, gdzie przechowywane są zapisy.

Zrobiłem też niektóre testy (na MySQL 5.6 jako że pierwsza wersja, gdzie jest to możliwe, aby określić, jakie partions kwerendy)

CREATE TABLE test (
    id int 
) 
PARTITION BY RANGE (id) (
    PARTITION p1 VALUES LESS THAN (1000), 
    PARTITION p2 VALUES LESS THAN MAXVALUE); 

INSERT INTO test VALUES (1); -- now on partition p1 

SELECT * FROM test PARTITION(p1); 
+------+ 
| id | 
+------+ 
| 1 | 
+------+ 
1 row in set (0.00 sec) 

SELECT * FROM test PARTITION(p2); 
Empty set (0.00 sec) 

UPDATE test SET id = 1001; -- now on partition p2 

SELECT * FROM test PARTITION (p1); 
Empty set (0.00 sec) 

SELECT * FROM test PARTITION (p2); 
+------+ 
| id | 
+------+ 
| 1001 | 
+------+ 
1 row in set (0.00 sec) 

To jasne, że natychmiast po aktualizacji wiedzieć, że rząd jest teraz partycja p2.

+1

Miałem nadzieję, że to zadziała, dzięki! Po prostu nie byłam pewna, ponieważ nie mogłam zobaczyć tego w dokumentach. – Katai