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

Jak skopiować dane z innej tabeli bez blokowania tabeli w MYSQL 6.2?

Zakładając, że tabele mają dokładnie te same kolumny, możesz zrobić coś takiego:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
INSERT INTO NEW_TABLE (SELECT * FROM OLD_TABLE);
COMMIT ;

Zamieściłem dodatkowe wyjaśnienia na podstawie Wistar komentarz. Poziomy odczytu, których można tutaj użyć to:

  • PRZECZYTAJ ZAANGAŻOWANO :Poziom izolacji nieco podobny do Oracle w odniesieniu do spójnych (nieblokujących) odczytów:Każdy spójny odczyt, nawet w ramach tej samej transakcji, ustawia i odczytuje własny świeży obraz stanu
  • PRZECZYTAJ BEZPOŚREDNIO :Instrukcje SELECT są wykonywane w sposób nieblokujący, ale może być użyta możliwa wcześniejsza wersja wiersza. Dlatego przy użyciu tego poziomu izolacji takie odczyty nie są spójne. Nazywa się to również brudnym odczytem. W przeciwnym razie ten poziom izolacji działa jak READ COMMITTED.
  • POWTARZALNE ODCZYT :To jest domyślny poziom izolacji dla InnoDB. W przypadku spójnych odczytów istnieje istotna różnica w stosunku do poziomu izolacji ODCZYT ZATWIERDZONY:wszystkie spójne odczyty w ramach tej samej transakcji odczytują migawkę ustanowioną przez pierwszy odczyt. Ta konwencja oznacza, że ​​jeśli wydasz kilka prostych (nieblokujących) instrukcji SELECT w ramach tej samej transakcji, te instrukcje SELECT są spójne również względem siebie.
  • SERIALIZOWALNY :Ten poziom jest podobny do REPEATABLE READ, ale InnoDB niejawnie konwertuje wszystkie zwykłe instrukcje SELECT na SELECT ... LOCK IN SHARE MODE, jeśli automatyczne zatwierdzanie jest wyłączone. Jeśli automatyczne zatwierdzanie jest włączone, SELECT jest własną transakcją. Dlatego wiadomo, że jest tylko do odczytu i może być serializowany, jeśli jest wykonywany jako spójny (bez blokowania) odczyt i nie musi być blokowany dla innych transakcji. (Aby wymusić zablokowanie zwykłego SELECT, jeśli inne transakcje zmodyfikowały wybrane wiersze, wyłącz automatyczne zatwierdzanie.)

Mam nadzieję, że to pomoże.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak zaimportować plik csv do mysql z aplikacji hibernacji + wiosna?

  2. mysql wybierz TYLKO zduplikowane rekordy z bazy danych

  3. Porównanie między wtyczką MySQL Clone a Xtrabackup

  4. Globalny limit czasu zapytania w MySQL 5.6

  5. Wyrażenie przypadku a oświadczenie o sprawie