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

Jak sprawdzić w czasie rzeczywistym, czy nowy wiersz został dodany do tabeli MySQL?

Jeśli Twoim stołem jest MyISAM, trzymałbym się Twojego początkowego pomysłu. Uzyskanie liczby wierszy z tabeli MyISAM jest natychmiastowe. Odczytuje tylko jedną wartość, ponieważ MyISAM przez cały czas utrzymuje licznik wierszy.

W przypadku InnoDB takie podejście może być nadal akceptowalne. Zakładając, że car_table.id to klucz podstawowy, SELECT COUNT(id) FROM car_table wymaga jedynie skanowania indeksu, które jest bardzo szybkie. Możesz ulepszyć ten pomysł, dodając do tabeli kolejną zindeksowaną kolumnę logiczną:

ALTER car_table ADD COLUMN checked BOOLEAN NOT NULL DEFAULT 0, ADD INDEX (checked);

Wartość domyślna zapewnia, że ​​nowe samochody będą wstawiane z tą flagą ustawioną na 0 bez modyfikowania instrukcji wstawiania. Następnie:

BEGIN TRANSACTION; -- make sure nobody interferes
SELECT COUNT(checked) FROM car_table WHERE checked = FALSE FOR UPDATE; -- this gets you the number of new, unchecked cars
UPDATE car_table SET checked = TRUE WHERE checked = FALSE; -- mark these cars as checked
COMMIT;

W ten sposób skanujesz tylko bardzo małą liczbę wpisów indeksu podczas każdego odpytywania.

Bardziej zaawansowane podejście polega na dodaniu nowo utworzonych identyfikatorów samochodów do bocznej tabeli za pomocą wyzwalacza. Ten stolik boczny jest co jakiś czas skanowany, bez blokowania głównego stolika i bez zmiany jego struktury. Po prostu TRUNCATE ten stolik po każdym odpytywaniu.

Wreszcie istnieje możliwość uruchomienia UDF, jak sugeruje Panagiotis, ale w większości sytuacji wydaje się to przesadą.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskaj ramkę danych R ze scalonymi wartościami z wielu tabel MySQL

  2. MySQL InnoDB:różnica między `DO AKTUALIZACJI` a `BLOKADĄ W TRYBIE UDOSTĘPNIANIA`

  3. Usuń encję w EF4 bez ładowania całej encji

  4. Wielokolumnowy klucz podstawowy MySQL

  5. MySQL aktualizuje kolumnę daty dopuszczającej wartość null do wartości NULL