2010-09-21 9 views
6

Oprócz usuwania niektórych zapytań dotyczących MySQL migracja przebiegała sprawnie. Problem polega na tym, że w trakcie opracowywania DB jest o wiele więcej zapytań niż wcześniej.Przenoszenie z MySQL do PostgreSQL na Railsach 3

Started GET "/profiles/data" for 127.0.0.1 at Tue Sep 21 10:26:18 +0200 2010 
Processing by ProfilesController#data as JSON 
User Load (24.3ms) SELECT "users".* FROM "users" ORDER BY updated_at DESC LIMIT 1 
CACHE (0.0ms) SELECT "users".* FROM "users" ORDER BY updated_at DESC LIMIT 1 
SQL (10.5ms) SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull 
FROM pg_attribute a LEFT JOIN pg_attrdef d 
ON a.attrelid = d.adrelid AND a.attnum = d.adnum 
WHERE a.attrelid = '"users"'::regclass 
AND a.attnum > 0 AND NOT a.attisdropped 
ORDER BY a.attnum 

Każde pojedyncze zapytanie skutkuje 3-8 dodatkowymi zapytaniami, jak wyżej. Co i dlaczego się dzieje? Jednym z problemów jest teraz to, że developement.log jest nadęty i nieczytelny. Tracę mnóstwo czasu przewijanie pomiędzy nimi tych zapytań poszukuje odpowiedniej rzeczy ...

UPDATE: Tue Sep 21

ten nie jest powiązany z typem zapytania. Wszystkie zapytania są generowania tego rodzaju stuph:

ree-1.8.7-2010.02 > User.first 
    SQL (0.3ms) SHOW client_min_messages 
    SQL (2.0ms) SET client_min_messages TO 'panic' 
    SQL (6.3ms) SET standard_conforming_strings = on 
    SQL (18.3ms) SET client_min_messages TO 'notice' 
    SQL (15.6ms) SET time zone 'UTC' 
    SQL (17.2ms) SHOW TIME ZONE 
    SQL (23.8ms) SELECT tablename FROM pg_tables WHERE schemaname = ANY (current_schemas(false)) 
    User Load (162.4ms) SELECT "users".* FROM "users" LIMIT 1 
    SQL (7.5ms) SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, 
    a.attnotnull FROM pg_attribute a LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid 
    AND a.attnum = d.adnum WHERE a.attrelid = '"users"'::regclass AND a.attnum > 0 AND 
    NOT a.attisdropped ORDER BY a.attnum 

[...] 1 wiersz w zestawie Ree-1.8.7-2010.02>

+0

Opublikuj zapytanie generujące instrukcję. Prawdopodobnie używasz kodu zorientowanego na MySQL. –

+1

Nie przypadek, wyjaśnienie dodane do pytania. – mdrozdziel

Odpowiedz

1

Drugie zapytanie jest używany przez aplikację, aby uzyskać informacje o typie danych i czy kolumna jest zerowa czy nie. Jeśli korzystasz z pgAdmin3, zobaczysz również wiele takich zapytań, aby uzyskać metadane wyników. Większość aplikacji nie potrzebuje takich zapytań, głównie przydatne podczas programowania i narzędzi takich jak pgAdmin.

+0

Ok, ale czy istnieje sposób, aby wyłączyć to podczas rozwoju. Nie mogę już śledzić mojego logu. Jest bardzo denerwujące ... – mdrozdziel

+0

Edytuj plik postgresql.conf i ustaw log_min_duration_statement na 1000. 1000 = 1000 milisekund, 1 sekunda. Można również ustawić log_min_error_statement na ERROR. Musisz przeładować postgresql.conf jako superużytkownik: SELECT pg_reload_conf(); Możesz również zrestartować serwer bazy danych. –

Powiązane problemy