2015-07-02 12 views
5

Zaobserwowaliśmy jeden problem w Postgresql, ponieważ nie wykorzystuje on wielu rdzeni procesora dla pojedynczego zapytania. Na przykład mam 8 rdzeni w procesorze. Mamy 40 milionów wpisów w tabeli stock.move. Gdy stosujemy masywne zapytanie w pojedynczym połączeniu z bazą danych, aby wygenerować raportowanie na stronie wewnętrznej, widzimy, że tylko jeden rdzeń jest używany w 100%, gdzie wszystkie pozostałe 7 są bezpłatne. Z tego powodu czas wykonywania zapytań trwa dłużej, a nasz system odoo jest powolny. Podczas gdy problem jest wewnątrz rdzenia PostgreSQL. Jeśli w każdym razie możemy udostępnić zapytanie między dwoma lub więcej rdzeniami, niż możemy uzyskać zwiększenie wydajności w wykonaniu kwerendy postgresql.Powód, dla którego Odoo jest powolne, gdy w bazie danych są ogromne dane

Jestem pewien, że rozwiązując równoległe wykonywanie zapytań, możemy jeszcze bardziej przyspieszyć działanie Odoo. Ktoś ma jakieś sugestie dotyczące tego?

----------- * Edycja to pytanie, aby pokazać Ci odpowiedzieć z komisji Postgresql Rdzeń * ---------

Tutaj jestem delegowania odpowiedź, którą otrzymałem od jednego z najlepszych współpracowników bazy danych Postgresql. (Mam nadzieję, że ta informacja będzie przydatna)

Witam Hiren,

Oczekuje się zachowywać. PostgreSQL nie obsługuje równoległego procesora dla pojedynczej kwerendy . Ten temat jest mocno rozwinięty i prawdopodobnie ta funkcja będzie w planowanym wydaniu 9.6 ~ wrzesnia 2016. Ale tabela z 40-milionowymi wierszami nie jest zbyt duża, więc prawdopodobnie więcej procesorów nie powinno ci pomóc (jest kilka narzut z uruchamianiem i przetwarzaniem zapytania wieloprocesorowego ). Musisz użyć zwykłych sztuczek, takich jak zmaterializowany widok, preagregacje , ... główny pomysł tych trików - nie próbuj często powtarzać tego samego obliczenia. Sprawdź kondycję PostgreSQL - indeksy, przetwarzanie próżniowe, statystyki, ... Sprawdź hw - prędkość IO. Sprawdź konfigurację PostgreSQL - shared_buffers, work_mem. Niektóre zapytania mogą być wolne ze względu na złe oceny - sprawdź wyjaśnienie powolnych zapytań. Są tam niektóre narzędzia, które mogą przerwać niektóre zapytania do większej ilości zapytań i rozpocząć równoległe wykonywanie , ale go nie używałem. https://launchpad.net/stado http://www.pgpool.net/docs/latest/tutorial-en.html#parallel

Regards Pavel Stehule

Odpowiedz

2

Cóż, myślę, że masz tam swoją odpowiedź - PostgreSQL obecnie nie obsługuje jeszcze zapytanie równoległego. Ogólna rada dotycząca wydajności jest bardzo trafna, możesz także rozważyć partycjonowanie, które może pozwolić na obcinanie partycji zamiast usuwania części tabeli lub zwiększanie alokacji pamięci. Nie można udzielać dobrych rad na ten temat, nie wiedząc więcej o zapytaniu.

Mając doświadczenie w tego rodzaju problemach z nierównoległymi systemami Oracle, sugeruję rozważenie, jakiego sprzętu używasz.

Nowoczesny trend w stosunku do procesorów z bardzo wieloma rdzeniami jest bardzo pomocny w przypadku serwerów WWW lub innych systemów wieloprocesorowych z wieloma krótkotrwałymi transakcjami, ale istnieje system przetwarzania danych z kilkoma dużymi transakcjami. Potrzebujesz odpowiedniego sprzętu, aby to wspierać. Procesory z mniejszą liczbą bardziej wydajnych rdzeni są lepszym wyborem i trzeba zwrócić uwagę na przepustowość pamięci i pamięci masowej.

Z tego powodu inżynierskie systemy są popularne w dużych hurtowniach danych i danych.

+0

Postgresql jest szybki i lepszy, w świecie wiele aplikacji działa na bazach danych PostgreSQL i działa dobrze, ale dzięki Odo własnemu ORM i architekturze jest bardzo powolna. Nawet wielu powtarza połączenia typu chunk i unika ich. Dzięki wspólnemu wysiłkowi odoo właściciel robi to i jest teraz licencjonowany prywatnie dla przedsiębiorstw, a teraz społeczność nie jest wystarczająco przygotowana na problemy z wydajnością. Posiadałem osobiście odoo z własnymi poprawkami i optymalizacją bez zmian w bazie danych postgres, działając dobrze i lepiej + szybko. –

+0

@TejasTank czy masz jakiś sugerowany kurs? – m3asmi

+0

@ m3asmi Jego prywatna umiejętność konfiguracji serwera connect snippetbucket.com w celu uzyskania pomocy. –

Powiązane problemy