Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Używanie libpqxx do przechowywania danych zbiorczo LUB jak używać instrukcji COPY w libpqxx

pushLog funkcja zatwierdza każdą wstawkę osobno, a zatwierdzanie jest powolne.

Jak wyjaśniono w dokumentacji Wypełnianie bazy danych :

Również:

Jednak w twoim przypadku byłby to raczej problem niż korzyść, ponieważ każda WSTAWIENIE może się nie powieść w przypadku naruszenia klucza podstawowego, anulując w ten sposób poprzednie WSTAWKI od ostatniego zatwierdzenia. Zauważ, że byłby to również problem z KOPIUJ , jeśli tego użyjesz.

Ponieważ naprawdę konieczne jest grupowanie zapytań w transakcjach w celu zapewnienia wydajności, musisz radzić sobie z naruszeniami klucza podstawowego w sposób, który nie przerywa transakcji.

Zwykle stosuje się dwie metody:

  1. Unikaj błędu:INSERT INTO... WHERE NOT EXISTS (SELECT 1 FROM table WHERE primary_key=...)

  2. Złap błąd, wstawiając go do funkcji plpgsql, która ma blok WYJĄTEK ignorujący itr. Konkretne WKŁADKI powodujące duplikat zostaną anulowane, ale transakcja nie zostanie przerwana.

Jeśli masz współbieżne wstawki, metody te należy udoskonalić za pomocą strategii blokowania.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uporządkuj według wewnątrz grupy według w Doktrynie 2

  2. Przekaż listę<ciąg> do parametru SQL

  3. Hibernacja strategii nazewnictwa zmieniającej nazwy tabel

  4. PDOException SQLSTATE[HY000] [2002] Brak takiego pliku lub katalogu

  5. Jak wstawić domyślne dane do tabeli za pomocą pliku import.sql w Hibernate, aplikacji MySQL?