Cookie Warning

Showing posts with label postgresql. Show all posts
Showing posts with label postgresql. Show all posts

Tuesday, 21 August 2012

Notatki z PostgreSQL

Ponizsze zapytania przydaja sie w codziennym administrowanie PostgreSQL, jednak kazde z nich jest za małe na osobny wpis. Dlatego tez umieszczone sa razem jako "notatki".

database=# SELECT relname, reltuples, relpages * 8 / 1024 AS "size in MB" FROM pg_class ORDER BY relpages DESC;
                   relname                  | reltuples | size in MB 
--------------------------------------------+-----------+------------
 message_post                               |     54409 |        440
 report_data                                |     29533 |         87
 player_stat                                |    434848 |         68
 message_status                             |     33073 |         64
 message_head                               |     26032 |         62
 bank_log                                   |    680535 |         55
 player_stat_pkey                           |    434848 |         53
 player_stat_stat_idx                       |    434848 |         53
 pg_toast_38039                             |     25378 |         52

Jak widac w powyzszym przykładzie mamy tu tez do czynienia z systemowa relacja o nazwie pg_toast_<id>TOAST to mechanizm składowania duzych danych w PostgreSQL. Sama nazwa nie mowi nam, dane ktorej relacji sa przechowywane w tym obiekcie. Na szczescie mozemy to bardzo łatwo sprawdzic
database=# select 38039::oid::regclass;
    regclass     
-----------------
 town_profile
(1 row)

Dzieki temu wiemy, ze obiekt pg_toast_38039 zawiera dane z relacji town_profile.

Tuesday, 31 July 2012

PostgreSQL 8.4 & lower()

Postgresql 8.4, a dokładniej jego funkcja lower() ma spore problemy z niektorymi jezykami. Przykładem moze byc hiszpanski, dla ktorego blad przedstawiaja ponizsze wywolania tej samej komendy, ale w 2 roznych wersja PostgreSQL (oraz roznych wersjach Debiana).

Postgres 8.4  (on Debian Lenny):
postgres=# select lower('JORGE PEÑA');
   lower    
------------
 jorge peÑa
(1 row)

Postgres 9.0 (on Debian Squeeze):
postgres=# select lower('JORGE PEÑA');
   lower    
------------
 jorge peña
(1 row)
Bład nie miał wpływu na samo działanie bazy danych -  problemy zaczynaja sie dopiero podczas aktualizacji do wersji >=9.0, gdzie bład jest juz poprawiony. Wtedy, w przypadku posiadania ograniczen typu uniqe index migracja danych zakonczy sie porazka i bedzie wymagala naszej recznej interwencji lub skryptu by usunac ten problem. 

Sam blad nie jest nowoscia, nie mniej niektorzy wciaz moga korzystac z dosyc przestarzałej juz wersji 8.4, gdy stabilne wydanie to w chwili obecnej 9.1.4.