database - Cassandra 2.0.6: Higher number of results when adding AND to query -
हम एक माध्यमिक सूचकांक के एक AND conjuction के साथ एक प्रश्न के लिए "छुपा परिणाम" प्राप्त कर रहे हैं
उदाहरण:
प्राथमिक कुंजी:
- एक विशिष्ट प्रोजेक्ट आईडी के साथ तालिका की पंक्तियां (प्राथमिक कुंजी) प्रोजेक्ट आईडी
माध्यमिक सूचकांक:
- एप विर्सन
- व्यूस्टेट
और के साथ क्वेरी:
<प्री> SELECT * से a.test जहां प्रोजेक्ट आईडी = 'परीक्षण' और एप संस्करण = 1 और व्यूस्टेट = 'फीडलिस्ट ऍक्टिविटी'; परिणाम 1 पंक्ति
बिना:
SELECT * से a.test WHERE projectId = ' परीक्षण 'और एप विर्सन = 1; परिणाम 0 पंक्तियाँ।
हम यह मान रहे थे कि यह कैसांद्रा टॉम्ब्सॉन्स के साथ कुछ हो सकता है। इसलिए हमने नोडसेटूल की मरम्मत और कॉम्पैक्ट को निष्पादित किया और cassandra सेवा और सर्वर को पुनः आरंभ किया -> कुछ भी नहीं बदला।
चालू है:
- CASANDRA 2.0.6
- विंडोज सर्वर 2012 आर 2 मानक
- 64-बिट
- जावा के माध्यम से हटाने, datastax का उपयोग कर QueryBuilder ( cassandra-driver-core-2.0.1 )
तालिका गुण (तालिकाओं का वर्णन करें):
के साथ bloom_filter_fp_chance = 0.010000 और कैशिंग = 'कीज़_ऑनली' और टिप्पणी = '' और dclocal_read_repair_chance = 0.000000 और gc_grace_seconds = 0 और index_interval = 128 और read_repair_chance = 0.100000 और replicate_on_write = 'true' और populate_io_cache_on_flush = 'false' और default_time_to_live = 0 और speculative_retry = '99 .0PERCENTILE' और memtable_flush_period_in_ms = 0 और कॉम्पेक्शन = {'क्लास': 'साइज ट्रीड कॉम्पैक्शन सट्रेजी'} और संपीड़न = {'sstable_compression': 'LZ4 कॉम्प्रेसर'}; वैकल्पिक हल: हमने संपूर्ण सामग्री को एक समान तालिका में कॉपी किया, पुराने को छोटा कर दिया और डेटा को वापस कॉपी किया। अब हम दोनों प्रश्नों के लिए एक परिणाम प्राप्त करते हैं।
प्रश्न
क्या कोई सही तरीका है जहां हमें समाधान का उपयोग करने की आवश्यकता नहीं है? क्या हमें कुछ याद आ रहा है?
पहले से धन्यवाद ...
तालिका निर्माण प्रक्रिया जोड़ा गया
ड्रॉप तालिका यदि मौजूद है एक परीक्षा; टेबल A.test बनाएँ (प्रोजेक्ट पाठ, एपवर्सन इंट, व्यूस्टेट टेक्स्ट, प्राइमरी की (प्रोजेक्टिड)); A.test (अनुवर्ती) पर सूचक बनाएं; A.test (viewstate) पर सूचकांक बनाएँ;
मैं अनुमान लगा रहा हूँ कि आपका अनुवर्तन पर द्वितीयक इंडेक्स कोड> सिंक के बाहर हो गया यह अक्सर नहीं होना चाहिए, लेकिन यदि यह फिर से होता है, तो इंडेक्स को फिर से बनाने का प्रयास करें।
nodetool rebuild_index एक परीक्षण
यह सभी को पुनर्निर्माण करना चाहिए A.test तालिका पर द्वितीयक अनुक्रमणिका। यदि आपके पास एपवर्सन पर अनुक्रमणिका का नाम है, तो आप उस विशिष्ट सूचकांक को फिर से बनाने के लिए अंतिम पैरामीटर के रूप में जोड़ सकते हैं।
इसके अलावा, बस सोच रहा है, लेकिन क्या आपने भवन की कोशिश की है प्राथमिक कुंजी पर क्लस्टरिंग कॉलम के रूप में अनुक्रमित कॉलम?
प्राथमिक कुंजी (प्रोजेक्टिड), अपवर्सन, व्यूस्टेट)
यह प्राथमिक कुंजी परिभाषा दोनों की अनुमति होगी काम करने के लिए आपके प्रश्नों (उपर्युक्त) का द्वितीयक अनुक्रमितों की तुलना में यह भी तेज़ होना चाहिए, और आपको इसे फिर से समन्वयित करने की चिंता नहीं होगी।
Comments
Post a Comment