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

अनुमानित पंक्तियों की गणना phpmyadmin परिणामों में बहुत भिन्न क्यों है?

MyISAM तालिकाओं के विपरीत, InnoDB तालिकाएँ इस बात पर नज़र नहीं रखतीं कि तालिका में कितनी पंक्तियाँ हैं।

इस वजह से, एक InnoDB तालिका में पंक्तियों की सटीक संख्या जानने का एकमात्र तरीका तालिका में प्रत्येक पंक्ति का निरीक्षण करना और एक गिनती जमा करना है। इसलिए, बड़ी InnoDB तालिकाओं पर, SELECT COUNT(*) FROM innodb_table निष्पादित करें क्वेरी बहुत धीमी हो सकती है क्योंकि यह पंक्तियों की संख्या प्राप्त करने के लिए एक पूर्ण तालिका स्कैन करती है।

phpMyAdmin एक क्वेरी का उपयोग करता है जैसे SHOW TABLE STATUS इंजन (InnoDB) से तालिका में पंक्तियों की संख्या की अनुमानित संख्या प्राप्त करने के लिए। चूंकि यह केवल एक अनुमान है, हर बार जब आप इसे कहते हैं तो यह बदलता रहता है, कभी-कभी विविधताएं काफी बड़ी हो सकती हैं, और कभी-कभी वे करीब होती हैं।

यहां COUNT(*) के बारे में एक सूचनात्मक ब्लॉग पोस्ट है InnoDB टेबल पेरकोना द्वारा।

तालिका स्थिति दिखाएं राज्य:

<ब्लॉकक्वॉट>

पंक्तियों की संख्या। कुछ स्टोरेज इंजन, जैसे कि MyISAM, सटीक गणना संग्रहीत करते हैं। अन्य भंडारण इंजनों के लिए, जैसे कि InnoDB, यह मान एक सन्निकटन है, और वास्तविक मान से 40 से 50% तक भिन्न हो सकता है। ऐसे मामलों में, सटीक गणना प्राप्त करने के लिए SELECT COUNT(*) का उपयोग करें।

InnoDB प्रतिबंध पर पेज कुछ और विवरण में जाता है:

तालिका द्वारा आरक्षित भौतिक आकार को छोड़कर, SHOW TABLE STATUS InnoDB तालिकाओं पर सटीक आँकड़े नहीं देता है। पंक्ति गणना केवल एक अनुमानित अनुमान है जिसका उपयोग SQL अनुकूलन में किया जाता है।

<ब्लॉकक्वॉट>

InnoDB एक तालिका में पंक्तियों की आंतरिक गणना नहीं रखता है क्योंकि समवर्ती लेनदेन एक ही समय में विभिन्न पंक्तियों की संख्या को "देख" सकता है। SELECT COUNT(*) FROM t . को संसाधित करने के लिए स्टेटमेंट, टेबल का InnoDB स्कैन इंडेक्स, जिसमें इंडेक्स पूरी तरह से बफर पूल में होने पर कुछ समय लगता है। यदि आपकी तालिका अक्सर नहीं बदलती है, तो MySQL क्वेरी कैश का उपयोग करना एक अच्छा समाधान है। तेजी से गिनती प्राप्त करने के लिए, आपको एक काउंटर टेबल का उपयोग करना होगा जिसे आप स्वयं बनाते हैं और अपने एप्लिकेशन को इसे इन्सर्ट के अनुसार अपडेट करने दें और इसे हटा दें। यदि अनुमानित पंक्ति संख्या पर्याप्त है, SHOW TABLE STATUS उपयोग किया जा सकता है। अनुभाग 14.3.14.1 देखें, “InnoDB प्रदर्शन ट्यूनिंग युक्तियाँ”



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. त्रुटि 1067 (42000):'created_at' के लिए अमान्य डिफ़ॉल्ट मान

  2. डेनो और ओक के साथ MySQL का उपयोग कैसे करें

  3. मैं PHP का उपयोग करके mysql डेटाबेस में .sql फ़ाइल कैसे आयात करूं?

  4. एक स्टैंड-अलोन पूर्ण-पाठ खोज सर्वर चुनना:Sphinx या SOLR?

  5. मैं विंडोज़ के लिए एक्सएएमपीपी के साथ MySQL कमांड लाइन तक कैसे पहुंच सकता हूं?