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
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. –
@TejasTank czy masz jakiś sugerowany kurs? – m3asmi
@ m3asmi Jego prywatna umiejętność konfiguracji serwera connect snippetbucket.com w celu uzyskania pomocy. –