सख्ती से केवल रैम मायने रखता है?


4

मुझे एक ऐसी परियोजना पर काम करना होगा जिसमें अरबों रिकॉर्ड्स के साथ एक अतिरिक्त बड़ी मेज होगी लेकिन केवल दो फ़ील्ड एक आईडी और दूसरा टेक्स्ट है।

और आईडी को BIGINT और PK पर सेट किया जाएगा अगर 8 + 2 (ओवरहेड के लिए अतिरिक्त 2 बाइट्स) प्रति पंक्ति बाइट्स को इंडेक्स पर ले जाया जाए तो मेरी गणना में 64GB RAM कम से कम 5 बिलियन रिकॉर्ड इंडेक्स रखने के लिए पर्याप्त होनी चाहिए।

लेकिन इसका केवल एक कारक मैं विचार कर रहा हूं।

क्या आपको लगता है कि अन्य कारक भी हैं जिन पर मुझे विचार करना चाहिए?

और जरूरत पड़ने पर रैम का आकार भी बढ़ाया जा सकता है। और उस मेज पर कुछ लिखने और बहुत सारे पढ़ने के साथ सबसे व्यस्त टेबल होगा।

+1

क्या मैं इस परियोजना के बारे में कुछ और जानकारी मांग सकता हूं?इस तालिका का उपयोग किसके लिए किया जाना है?आप कौनसी समस्याएं हल करने की कोशिश कर रहे हैं? 15 sep. 112011-09-15 07:14:14

3

आपको अपने प्रोजेक्ट के लिए उपयोग किए जाने वाले स्टोरेज इंजन पर विचार करने की आवश्यकता है क्योंकि MySQL प्रत्येक स्टोरेज इंजन के लिए अलग तरीके से कैश करता है।

MyISAM केवल इंडेक्स पेजों को कैश करता है।InnoDB डेटा और इंडेक्स पेजों को कैश करता है।

यह देखते हुए कि आपके पास बड़ी आईडी के साथ एक तालिका है, मुझे आशा है कि आप MyISAM का उपयोग कर रहे हैं।

यहाँ आपको सर्वश्रेष्ठ key_buffer_size निर्धारित करने में मदद करने के लिए एक प्रश्न है:

SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.4999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1))
recommended_key_buffer_size FROM
(SELECT LEAST(POWER(2,32),KBS1) KBS
FROM (SELECT SUM(index_length) KBS1
FROM information_schema.tables
WHERE engine='MyISAM' AND
table_schema NOT IN ('information_schema','mysql')) AA ) A,
(SELECT 2 PowerOf1024) B;

यह आपके वर्तमान डेटा सेट (the query will cap the recommendation at 4G (4096M). लिए 32-बिट OS, 4GB की सीमा है) के लिए MyISAM Key Cache (key_buffer_size) के लिए अनुशंसित सेटिंग देगा। 64-बिट, 8GB के लिए सीमा 4GB है।

UPDATE 2011-09-16 14:49 EDT

यदि आप InnoDB का उपयोग कर रहे हैं, तो key_buffer_size नौकरशाही का आकार घटाने में मदद नहीं करेगा।InnoDB and MyISAM cache differently

यहाँ आपके InnoDB बफर पूल को आकार देने के लिए एक ही तरह का प्रश्न है:

SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.49999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1)) recommended_innodb_buffer_pool_size
FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables
WHERE engine='InnoDB') A,
(SELECT 2 PowerOf1024) B;
  0

दिलचस्प है कि मैं InnoDB का उपयोग करने के बारे में सोच रहा हूं क्योंकि यह लोड के तहत बेहतर काम करता है।तो, मैंने आपके उत्तर से जो सीखा है, वह यह है कि जब तक पर्याप्त कुंजी कैश है।DB आकार कोई फर्क नहीं पड़ता? 16 sep. 112011-09-16 16:56:43

  0

मैंने InnoDB का उपयोग करके पते पर अपना उत्तर अपडेट किया 16 sep. 112011-09-16 18:49:40

  0

लेकिन जैसा कि आपने उल्लेख किया है कि MyISAM के लिए अधिकतम कैप 8GB है तो इसका मतलब है कि रैम संसाधनों से अधिक कुशलता से उपयोग नहीं किया जाएगा?{यह सवाल बहुत देर से पूछने के लिए क्षमा करें ..} 01 oct. 112011-10-01 22:14:09

+1

@ गैरी: आप सही कह रहे हैं।Key_buffer_size के लिए 8GB से ऊपर की मेमोरी को बर्बाद किया गया है।यह महत्वपूर्ण है क्योंकि केवल सूचकांक पृष्ठ MyISAM के लिए कैश हैं।आप विशिष्ट MyISAM तालिकाओं के लिए समर्पित प्रमुख कैश बना सकते हैं: http://dev.mysql.com/doc/refman/5.5/en/cache-index.html 01 oct. 112011-10-01 22:41:42