1

Temat: postgresql a wielowatkowe przetwarzenie tabel

jak w temacie. mam maszyne zdolna obsluzyc zapytania do bazy danych wielowatkowo. mam tez skrypt ktory rozdziela mi proces na watki. finalnie kazdy z tych watkow odpala funkcje sql insertujaca dane do jednej tabeli. problem polega na tym ze choc maszyna jest w stanie przetworzyc ogromne ilosci danych i podzielenie procesu na watki dziala prawidlowo to nie jestem w stanie przetwarzac (insertowac danych do) jednej tabeli przez za pomoca kilku rownoleglych watkow.

w syslogu serwera otrzymuje:

2011-08-16 08:31:26 CEST ERROR:  deadlock detected
2011-08-16 08:31:26 CEST DETAIL:  Process 26994 waits for ShareLock on transaction 14611791; blocked by process 26993.
    Process 26993 waits for ShareLock on transaction 14611794; blocked by process 26994.

czego skutkiem jest wykonanie sie tylko jednego procesu i "wymarcie drugiego" przez chwilowy brak dostepu do tej samej tabeli co pierwszy.

moje pytanie wiec brzmi: czy jest ktos w stanie podpowiedzic mi jak przetwarzac w postgresie jedna tabele wielowatkowo?

2

Odp: postgresql a wielowatkowe przetwarzenie tabel

Tabela ma jakieś klucze główne, indeksy unikalne? Jesli tak wyłącz je, wykonaj insert wielowątkowo i na końcu odtwórz klucze/indeksy. Oczywiście musisz zadbać o to aby dane w kolumnach unikalnych nie dublowały się.

3

Odp: postgresql a wielowatkowe przetwarzenie tabel

dzieki za odp. problem zdazylem rozwiazac wyciagajac funkcje rozpoczynajaca jedna wielka transakcje z sql do php, dzieki czemu zamiast kilku gigantycznych transakcji ktore sie blokuja wywoluje kilkanascie mniejszych ktore juz nie maja problemu z obsluga lockow.

temat chyba do zamkniecia