blog-post

Manticore Search 4.2.0: 10x तेज SELECT, प्रमुख बग ठीक किए गए, Debian Bullseye समर्थन

Manticore टीम Manticore Search version 4.2.0 की घोषणा करते हुए उत्साहित है। नए संस्करण में क्या है:

प्रमुख नई विशेषताएँ

  • रियल-टाइम इंडेक्स और फुल-टेक्स्ट क्वेरी के लिए प्स्यूडो-शार्डिंग समर्थन। पिछले रिलीज़ में हमने सीमित प्स्यूडो शार्डिंग समर्थन जोड़ा था। इस संस्करण से आप सभी प्स्यूडो शार्डिंग के लाभ और अपने मल्टी-कोर प्रोसेसर प्राप्त कर सकते हैं, बस searchd.pseudo_sharding को सक्षम करके। सबसे अच्छी बात यह है कि इसके लिए आपको अपने इंडेक्स या क्वेरी के साथ कुछ करने की जरूरत नहीं है, बस इसे सक्षम करें और यदि आपके पास मुक्त CPU है तो इसका उपयोग आपकी प्रतिक्रिया समय को कम करने के लिए किया जाएगा। यह फुल-टेक्स्ट, फ़िल्टरिंग और विश्लेषणात्मक क्वेरी के लिए प्लेन और रियल-टाइम इंडेक्स का समर्थन करता है। उदाहरण के लिए, यहां बताया गया है कि कैसे प्स्यूडो शार्डिंग को सक्षम करने से अधिकांश क्वेरी की प्रतिक्रिया समय औसतन लगभग 10x कम हो सकती है Hacker news curated comments dataset में 100 गुना गुणा किया गया (116 मिलियन दस्तावेज़ एक प्लेन इंडेक्स में)।
    4.2.0 pseudo sharding on vs off
  • Debian Bullseye अब समर्थित है।
  • PQ लेनदेन अब आणविक और अलगावित हैं। पहले PQ लेनदेन का समर्थन सीमित था। यह PQ में फ़ास्ट REPLACE को सक्षम बनाता है, विशेष रूप से जब आपको एक बार में बहुत सारे नियमों को बदलने की आवश्यकता होती है। प्रदर्शन विवरण:

पिछले रिलीज 4.0.2

यह 1M PQ नियम डालने के लिए 48 सेकंड लेते हैं और बस 40K को 10K बैच में REPLACE करने के लिए 406 सेकंड

root@perf3 ~ # mysql -P9306 -h0 -e "drop table if exists pq; create table pq (f text, f2 text, j json, s string) type='percolate';"; date; for m in `seq 1 1000`; do (echo -n "insert into pq (id,query,filters,tags) values "; for n in `seq 1 1000`; do echo -n "(0,'@f (cat | ( angry dog ) | (cute mouse)) @f2 def', 'j.json.language=\"en\"', '{\"tag1\":\"tag1\",\"tag2\":\"tag2\"}')"; [ $n != 1000 ] && echo -n ","; done; echo ";")|mysql -P9306 -h0; done; date; mysql -P9306 -h0 -e "select count(*) from pq"

Wed Dec 22 10:24:30 AM CET 2021
Wed Dec 22 10:25:18 AM CET 2021
+----------+
| count(*) |
+----------+
|  1000000 |
+----------+

root@perf3 ~ # date; (echo "begin;"; for offset in `seq 0 10000 30000`; do n=0; echo "replace into pq (id,query,filters,tags) values "; for id in `mysql -P9306 -h0 -NB -e "select id from pq limit $offset, 10000 option max_matches=1000000"`; do echo "($id,'@f (tiger | ( angry bear ) | (cute panda)) @f2 def', 'j.json.language=\"de\"', '{\"tag1\":\"tag1\",\"tag2\":\"tag2\"}')"; n=$((n+1)); [ $n != 10000 ] && echo -n ","; done; echo ";"; done; echo "commit;") > /tmp/replace.sql; date
Wed Dec 22 10:26:23 AM CET 2021
Wed Dec 22 10:26:27 AM CET 2021
root@perf3 ~ # time mysql -P9306 -h0 < /tmp/replace.sql

real    6m46.195s
user    0m0.035s
sys     0m0.008s

नए रिलीज 4.2.0

यह 1M PQ नियम डालने के लिए 34 सेकंड लेते हैं और उन्हें 10K बैच में REPLACE करने के लिए 23 सेकंड

root@perf3 ~ # mysql -P9306 -h0 -e "drop table if exists pq; create table pq (f text, f2 text, j json, s string) type='percolate';"; date; for m in `seq 1 1000`; do (echo -n "insert into pq (id,query,filters,tags) values "; for n in `seq 1 1000`; do echo -n "(0,'@f (cat | ( angry dog ) | (cute mouse)) @f2 def', 'j.json.language=\"en\"', '{\"tag1\":\"tag1\",\"tag2\":\"tag2\"}')"; [ $n != 1000 ] && echo -n ","; done; echo ";")|mysql -P9306 -h0; done; date; mysql -P9306 -h0 -e "select count(*) from pq"

Wed Dec 22 10:06:38 AM CET 2021
Wed Dec 22 10:07:12 AM CET 2021
+----------+
| count(*) |
+----------+
|  1000000 |
+----------+

root@perf3 ~ # date; (echo "begin;"; for offset in `seq 0 10000 990000`; do n=0; echo "replace into pq (id,query,filters,tags) values "; for id in `mysql -P9306 -h0 -NB -e "select id from pq limit $offset, 10000 option max_matches=1000000"`; do echo "($id,'@f (tiger | ( angry bear ) | (cute panda)) @f2 def', 'j.json.language=\"de\"', '{\"tag1\":\"tag1\",\"tag2\":\"tag2\"}')"; n=$((n+1)); [ $n != 10000 ] && echo -n ","; done; echo ";"; done; echo "commit;") > /tmp/replace.sql; date
Wed Dec 22 10:12:31 AM CET 2021
Wed Dec 22 10:14:00 AM CET 2021
root@perf3 ~ # time mysql -P9306 -h0 < /tmp/replace.sql

real    0m23.248s
user    0m0.891s
sys     0m0.047s

छोटे बदलाव

  • optimize_cutoff अब searchd अनुभाग में एक कॉन्फ़िगरेशन विकल्प के रूप में उपलब्ध है। यह तब उपयोगी है जब आप अपने सभी इंडेक्स में RT चंक्स की संख्या को वैश्विक स्तर पर एक विशेष संख्या तक सीमित करना चाहते हैं।
  • Commit 00874743 सटीक count(distinct &hellip;) और FACET &hellip; distinct कई स्थानीय भौतिक इंडेक्स (रियल-टाइम/प्लेन) पर समान फ़ील्ड सेट/क्रम के साथ।
  • PR #598 YEAR() और अन्य टाइमस्टैम्प फ़ंक्शंस के लिए bigint समर्थन।
  • Commit 8e85d4bc अनुकूली rt_mem_limit । पहले, Manticore Search नए डिस्क हिस्से को डिस्क पर बचाने से पहले बिल्कुल rt_mem_limit तक डेटा एकत्र कर रहा था, और जबकि बचाने के दौरान 10% अधिक (उर्फ डबल-बफर) एकत्र कर रहा था ताकि संभावित सम्मिलन निलंबन को कम किया जा सके। यदि वह सीमा भी समाप्त हो गई, तो नए दस्तावेजों को जोड़ना ब्लॉक हो गया जब तक डिस्क हिस्सा पूरी तरह से डिस्क पर नहीं बचा लिया गया। नई अनुकूली सीमा इस तथ्य पर आधारित है कि हमारे पास अब auto-optimize है, इसलिए यह कोई बड़ी बात नहीं है अगर डिस्क हिस्से rt_mem_limit का पूरी तरह से पालन नहीं करते हैं और पहले डिस्क हिस्सा को फ्लश करना शुरू कर देते हैं। इसलिए, अब हम rt_mem_limit के 50% तक एकत्र करते हैं और उसे एक डिस्क हिस्से के रूप में बचाते हैं। बचाने पर हम आंकड़ों (हमने कितना बचाया, बचाते समय कितने नए दस्तावेज आए हैं) को देखते हैं और अगली बार इस्तेमाल होने वाली प्रारंभिक दर की फिर से गणना करते हैं। उदाहरण के लिए, यदि हमने 90 मिलियन दस्तावेज़ों को बचाया है, और 10 मिलियन और दस्तावेज़ बचाते समय आए हैं, तो दर 90% है, इसलिए हम जानते हैं कि अगली बार हम एक और डिस्क हिस्से को फ्लश करने से पहले rt_mem_limit के 90% तक एकत्र कर सकते हैं। दर का मान स्वचालित रूप से 33.3% से 95% तक की गणना किया जाता है।
  • Issue #628 unpack_zlib PostgreSQL स्रोत के लिए। धन्यवाद, Dmitry Voronin के लिए योगदान
  • Commit 6d54cf2b indexer -v और --version। पहले आप अभी भी श्रेणीकार के संस्करण को देख सकते थे, लेकिन -v/--version का समर्थन नहीं किया गया था।
  • Issue #662 सिस्टमडी के माध्यम से शुरू होने पर डिफ़ॉल्ट रूप से अंतहीन mlock सीमा।
  • Commit 63c8cd05 स्पिनलॉक -> coro rwlock के लिए ऑप 큐।
  • Commit 41130ce3 पर्यावरण चर MANTICORE_TRACK_RT_ERRORS RT खंडों के भ्रष्टाचार को डिबग करने के लिए उपयोगी।

टूटने वाले परिवर्तन

  • बिनलॉग संस्करण बढ़ाया गया, पिछले संस्करण से बिनलॉग को फिर से चलाया नहीं जाएगा, इसलिए जब आप अपग्रेड कर रहे हों तो सुनिश्चित करें कि आप Manticore Search को साफ-सुथरा रोकें: पिछले उदाहरण को रोकने के बाद /var/lib/manticore/binlog/ में केवल binlog.meta फाइलें होनी चाहिए।
  • Commit 3f659f36 show threads option format=all में नया कॉलम “chain”। यह कुछ कार्य सूचना टिकटों का स्टैक दिखाता है, जो प्रोफाइलिंग आवश्यकताओं के लिए सबसे उपयोगी है, इसलिए यदि आप show threads आउटपुट को पार्स कर रहे हैं तो नए कॉलम का ध्यान रखें।
  • searchd.workers 3.5.0 से अप्रचलित हो गई थी, अब यह निषिद्ध है, यदि आपने इसे अपनी कॉन्फ़िगरेशन फ़ाइल में रखा है तो यह शुरू होने पर एक चेतावनी को ट्रिगर करेगा। Manticore Search शुरू होगा, लेकिन एक चेतावनी के साथ।

बगफिक्स

  • Issue #650 Manticore 4.0.2 Manticore 3.6.3 से धीमा। 4.0.2 पिछले संस्करणों के मुकाबले बल्क सम्मिलनों के मामले में तेज था, लेकिन एकल दस्तावेज़ सम्मिलनों के लिए काफी धीमा था। इसे 4.2.0 में ठीक कर दिया गया है।
  • Commit 22f4141b RT इंडेक्स तीव्र REPLACE लोड के तहत भ्रष्ट हो सकता है, या यह क्रैश कर सकता है
  • Commit 03be91e4 मर्जिंग समूहों में औसत को ठीक किया और समूह N सॉर्टर; समेकनों का मर्ज ठीक किया
  • Commit 2ea575d3 indextool --check क्रैश कर सकता है
  • Commit 7ec76d4a UPDATEs के कारण RAM समाप्ति समस्या
  • Commit 658a727e डेमन INSERT पर लटका सकता है
  • Commit 46e42b9b डेमन शटडाउन पर लटक सकता है
  • Commit f8d7d517 डेमन शटडाउन पर क्रैश कर सकता है
  • Commit 733accf1 डेमन क्रैश पर लटक सकता है
  • Commit f7f8bd8c डेमन क्लस्टर से फिर से जुड़ने की कोशिश करते समय प्रारंभ में क्रैश कर सकता है जब अवैध नोड्स की सूची हो
  • Commit 14015561 वितरित इंडेक्स RT मोड में पूरी तरह से भुला दिया जा सकता है यदि यह प्रारंभ पर इसके एजेंटों में से एक को हल नहीं कर सका
  • Issue #683 attr bit(N) engine=‘columnar’ विफल होता है
  • Issue #682 तालिका बनाना विफल होता है, लेकिन निदेशिका छोड़ देता है
  • Issue #663 कॉन्फ़िग विफल होता है: अज्ञात की नाम ‘attr_update_reserve’
  • Issue #632 Manticore बैच प्रश्नों पर क्रैश कर रहा है
  • Issue #679 बैच प्रश्न फिर से वि4.0.3 के साथ क्रैश कर रहे हैं
  • Commit f7f8bd8c ने अमान्य नोड्स सूची के साथ क्लस्टर में फिर से शामिल होने का प्रयास करते समय डेमॉन क्रैश को ठीक किया
  • Issue #643 Manticore 4.0.2 बैच इनसर्ट के बाद कनेक्शन स्वीकार नहीं करता
  • Issue #635 ORDER BY JSON.field या स्ट्रिंग एट्रिब्यूट के साथ FACET क्वेरी क्रैश कर सकती है
  • Issue #634 पैक्ड फैक्टर्स के साथ क्वेरी पर क्रैश SIGSEGV

मैंटीकोर सर्च इंस्टॉल करें

मैंटीकोर सर्च इंस्टॉल करें