Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

वास्तविक समय में कैसे जांचें कि क्या MySQL तालिका में नई पंक्ति जोड़ी गई है

यदि आपकी तालिका माईसाम है, तो मैं आपके प्रारंभिक विचार पर कायम रहूंगा। 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. हम Mysqli में परिणाम क्यों बंद करते हैं

  2. MySQL में व्यू कैसे अपडेट करें

  3. Mysql अनुपलब्ध दिनांक सीमाएँ ढूँढें

  4. MySQL - प्रत्येक डुप्लिकेट मान के लिए एक काउंटर प्राप्त करें

  5. MySQL बहु-आयामी? गतिशील धुरी