Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да проверите в реално време дали е добавен нов ред към MySQL таблицата

Ако вашата маса е MyISAM, бих се придържал към първоначалната ви идея. Получаването на броя на редовете от MyISAM таблица е незабавно. Необходимо е само четене на една единствена стойност, тъй като MyISAM поддържа броя на редовете през цялото време.

С InnoDB този подход все още може да бъде приемлив. Приемайки car_table.id е първичен ключ, SELECT COUNT(id) FROM car_table изисква само сканиране на индекс, което е много бързо. Можете да подобрите тази идея, като добавите друга индексирана булева колона към вашата таблица:

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

Стойността по подразбиране гарантира, че новите автомобили ще бъдат вмъкнати с този флаг, зададен на 0, без да се променя изразът за вмъкване. След това:

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;

По този начин вие сканирате само много малък брой записи в индекса при всяко запитване.

По-напреднал подход се състои в добавяне на новосъздадени идентификатори на автомобили в странична таблица чрез тригер. Тази странична маса се сканира от време на време, без да се заключва основната маса и без да се променя нейната структура. Просто TRUNCATE тази странична маса след всяко гласуване.

И накрая, има опция за задействане на UDF, както е предложено от Panagiotis, но това изглежда е пресилено в повечето ситуации.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Импортирайте голям MySQL .sql файл в Windows със сила

  2. MySQL:Как да разрешите отдалечена връзка с mysql

  3. Как да създадете архитектура на точка във времето в MySQL

  4. Защо INSERT IGNORE увеличава първичния ключ auto_increment?

  5. RDS проксито влияе ли на текущото обединяване от страна на приложението?