2012-01-05 14 views
8

मैं वर्तमान में अपने PHP परियोजना के लिए एक उन्नत खोज प्रदान करने के सर्वोत्तम तरीकों पर शोध कर रहा हूं।MySQL खोज - इनओडीबी और लेनदेन बनाम MyISAM FULLTEXT खोज

मैंने तालिका पंक्ति में मिलान तारों को खोजने के लिए LIKE का उपयोग करने के बजाय FULLTEXT खोज का उपयोग करने के लिए इसे संकुचित कर दिया है। हालांकि, ऐसा करने के लिए ऐसा लगता है कि मुझे इनो डीबी इंजन का उपयोग करके त्याग करने की ज़रूरत है जो मुझे लेनदेन और तालिका संबंधों की एसिडिटी खो देगी।

क्या यह वास्तव में MYISAM mysql इंजन का उपयोग करने लायक है या खोज कार्यक्षमता प्रदान करने के बेहतर तरीके हैं।

किसी भी पॉइंटर्स की सराहना की जाएगी!

उत्तर

7

यह वास्तव में एप्लिकेशन पर निर्भर करता है ... किसी भी चीज़ के लिए माईसाम का उपयोग करना जो संदर्भित अखंडता की आवश्यकता है, तुरंत विफल हो जाता है। उसी समय, यह टेक्स्ट खोज है कुशल है।

असल में, जाने के दो तरीके हैं। यदि आपको लगता है कि आपको वास्तविक संदर्भित अखंडता की आवश्यकता नहीं है, तो नोएसक्यूएल डेटास्टोर पर विचार करें। MongoDB एक महान दस्तावेज़ स्टोर डेटाबेस है।

हैं, तो दूसरी ओर, अगर तुम सच में रेफेरेंन्शिअल सत्यनिष्ठा की जरूरत है, लेकिन यह भी तेजी से, अनुक्रमित पूर्ण-पाठ खोज की जरूरत है, तो आप Sphinx या Apache Solr उपयोग करने के लिए पूर्ण-पाठ खोज के लिए एक अनुक्रमित कैश बनाने के लिए बेहतर कर सकता है।

किसी भी तरह से, मैं माईसाम को विरासत डेटास्टोर मानता हूं। मैं इसे एक नई परियोजना पर उपयोग नहीं करता। YMMV।

+4

InnoDB के साथ छड़ी और कुछ इस तरह करते हैं, जब तक प्रदर्शन जिस स्थिति स्विच http://stackoverflow.com/questions/4732067/complex-query-for-recreating-fulltext स्फिंक्स करने के लिए एक मुद्दा बन जाता -खोज प्रभाव-ऑन-InnoDB/4732982 # 4732982। यदि आपको लगता है कि मायिसम बेहतर है तो यह पढ़ें http://stackoverflow.com/questions/4419499/mysql-nosql-help-me-to-choose-the-right-one-on-a/4421601#4421601 –

3

माईसैम में कई कमियां हैं - लेनदेन समर्थन की कमी, टेबल-स्तरीय ताले जो भारी पढ़ने + लिखने के लोड प्रकार में बहुत धीमी गति से बनाते हैं। माईसाम टेबल की एक और असुविधा - वे सुरक्षित नहीं हैं ताकि सर्वर पर अप्रत्याशित शटडाउन या पावर लॉस के मामले में आप कुछ डेटा खो सकें। हालांकि MyISAM कुछ प्रश्नों पर बहुत तेज है।

पूर्ण पाठ खोज के संबंध में मैं इनो डीबी + बाहरी खोज इंजन जैसे ल्यूसीन या स्फिंक्स का उपयोग करने का सुझाव दूंगा ताकि आप सुरक्षित और भरोसेमंद स्टोरेज इंजन और तेज़ पूर्ण-पाठ क्वेरी दोनों से लाभ उठा सकें।

InnoDB और स्फिंक्स के साथ जल्दी शुरू के लिए आप उल्लेख कर सकते हैं करने के लिए http://astellar.com/2011/12/replacing-mysql-full-text-search-with-sphinx/

संबंधित मुद्दे