SQL सर्वर 2K / 2K5 / 2K8 और ठोस राज्य डिस्क: विशिष्ट अनुकूलन?


9

क्या कोई यहां सॉलिड-स्टेट ड्राइव पर SQL सर्वर चला रहा है? क्या आपको कोई विशिष्ट अनुकूलन युक्तियाँ मिली हैं? मैं विशेष रूप से उस आवृत्ति को कम करने के तरीकों में दिलचस्पी लेता हूं जिसके साथ एसक्यूएल सर्वर छोटे यादृच्छिक लेखन कार्य करता है क्योंकि वे एसएसडी प्रदर्शन, विशेष रूप से एमएलसी एसएसडी ड्राइव की दासता हैं।

कुछ स्पष्ट अनुकूलन हैं जो निश्चित रूप से कर सकते हैं: एसएसडी से रीड-हैवी डेटा परोसा जाना चाहिए, और लेखन-भारी सामान को पारंपरिक कताई डिस्क पर छोड़ दिया जाना चाहिए। इसमें लेनदेन लॉग शामिल हैं, स्वाभाविक रूप से!

पर्याप्त बजट को देखते हुए, निश्चित रूप से, एसएलसी एसएसडी डिस्क का उपयोग करना चाहेंगे जैसे एक्स 25-ई या वर्टेक्स एक्स सीरीज़ या विभिन्न एंटरप्राइज़-स्तरीय प्रसाद। लेकिन मुझे उन सुझावों में भी दिलचस्पी है जो एमएलसी एसएसडी सेटअपों को लाभान्वित कर सकते हैं। मुझे लगता है कि यह एक दिलचस्प क्षेत्र है। मेरे ग्राहकों के ग्राहकों में से एक के पास एक छोटा बजट है और एक डेटासेट है जो बेहद विकसित हो गया है और वे प्रदर्शन के एक सभ्य स्तर को बनाए रखने के लिए सौ प्रश्नों के करीब एक पूर्ण पुनर्लेखन का सामना कर रहे हैं। हालाँकि, मुझे यह संदेह है कि $ 500 से कम रैम और एसएसडी स्पेस उन्हें डेवलपर समय के हजारों डॉलर (संभवतः दसियों हजारों) की तुलना में बड़ा प्रदर्शन लाभ प्राप्त कर सकते हैं।

जवाबों:


3

निश्चित नहीं है कि छोटे, यादृच्छिक की मात्रा को कम करने से आपका क्या मतलब है जो SQL सर्वर करता है। SQL सर्वर केवल चौकियों के दौरान डेटा पेज लिखता है - इसलिए लिखने की संख्या को सीमित करने का एकमात्र तरीका चेकपॉइंट अंतराल को बदलना है या इतने आईयूडी संचालन नहीं करना है। क्या आपका मतलब कुछ और था?

SSDs के सभी कार्यान्वयनों में जो मैंने देखा है (एक मुट्ठी भर), यह उस तरह के विपरीत है जैसा आप सुझाव दे रहे हैं - SSDs का सबसे अच्छा उपयोग लेखन-भारी लेनदेन लॉग और अस्थायी के लिए लगता है - मूल रूप से जहां मैं सबसे बड़ा हूं / हे सबसिस्टम अड़चन और वहाँ में SSDs छड़ी - के रूप में समय और विलंबता कम निरंतरता के लिए तलाश कर रहे हैं।

इस शोध पत्र को चेक करें जिसे MS ने उत्पादित किया (दुर्भाग्य से SQL सर्वर विवरण पर विस्तृत रूप से विस्तृत नहीं): SSDs में सर्वर संग्रहण को माइग्रेट करना: ट्रेडऑफ़ का विश्लेषण

उम्मीद है की यह मदद करेगा!


MS 'लेख के उस लिंक के लिए धन्यवाद। यह निराशा की बारीकियों पर कम है, है ना? :) दुर्भाग्य से छोटे यादृच्छिक लिखते हैं वास्तव में कुछ है जो SSDs फिट दे सकता है। संक्षेप में, यहां तक ​​कि एक छोटे (यानी, 4KB) लिखने के लिए, SSD को पूरे ब्लॉक को मेमोरी में पढ़ना चाहिए, इसे संशोधित करना चाहिए और इसे वापस लिखना चाहिए। यह सिर्फ वर्तमान-जीन फ्लैश मेमोरी कैसे काम करता है। ग्रेट SSD ओवरव्यू लेख: anandtech.com/storage/showdoc.aspx?i=3531&p=1
जॉन रोज़

2

आप SQL सर्वर IO वर्णक्रमीय को संशोधित नहीं कर सकते। डेटा फ़ाइलों के लिए डिस्क एक्सेस की इसकी मूल इकाई, एक 8Kb पृष्ठ है। यह उन्हें ज्यादातर एक चेकपॉइंट के दौरान लिखेगा, लेकिन जब यह कर सकता है तो उन्हें आलसी भी लिख देगा।
SQL लौटने से पहले डेटा डिस्क पर लिखने के लिए इंतजार नहीं करता है, यह केवल लॉग लिखता है जिसे पूरा किया जाना चाहिए। यदि आप डिस्क पर केवल एक डेटाबेस लॉग रख सकते हैं तो यह क्रमिक लेखन होगा और सामान्य तेज़ हार्ड डिस्क पर ठीक होगा।
एसक्यूएल के दृष्टिकोण से हिट प्रदर्शन तब होता है जब उसे डिस्क को पढ़ना होता है। यदि आप इसे अधिक मेमोरी दे सकते हैं तो एसक्यूएल मेमोरी में अधिक डेटा पेज रखेगा, जो कि किसी भी प्रकार की डिस्क, एसएसडी या अन्यथा से तेज है। जाहिर है आप उपयुक्त इंडेक्स बनाकर डिस्क रीड की संख्या को भी कम कर सकते हैं। मुझे उम्मीद है कि एक एसएसडी इन रीड्स के साथ भी मदद करेगा क्योंकि वे यादृच्छिक होने की संभावना रखते हैं और ड्राइव हेड्स को स्थानांतरित करने के लिए इंतजार कर रहे हैं।
मुझे नहीं पता कि हम यहां किस डेटाबेस आकार की बात कर रहे हैं, लेकिन क्या आप हाइपरओएस पर एक नज़र डालना चाहते हैं। वे एसएस डिस्क या वास्तव में एक बैकअप के रूप में एसएसडी या 2.5 इंच डिस्क के साथ डीडीआर 2 रैम की छड़ें का एक भार है। सर्वर का एक्सेस पैटर्न तब एक बात नहीं होगी। मैं इस तरह से कुछ भी लॉग नहीं डालूंगा। लॉग वे होते हैं जो आपके डेटा को निरंतर बनाए रखते हैं, उन्हें एक विश्वसनीय माध्यम पर जाने की आवश्यकता होती है और इसके एसएसडी और बैटरी के बैकअप के बावजूद और सर्वर में संभवतः यूपीएस आदि होता है, फिर भी मैं वास्तविक हार्ड डिस्क पर अपने लॉग न होने के बारे में अन-आसान महसूस करूंगा विफलता सहिष्णु RAID सरणी के कुछ प्रकार में।


1

छोटे यादृच्छिक ऑपरेशन पारंपरिक डिस्क की उत्पत्ति हैं, सिर की तलाश में विलंबता के कारण ... एसएसडी वास्तव में इसे संबोधित करने में महान हैं।

लंबे, अनुक्रमिक संचालन के साथ, मानक डिस्क काफी अच्छा प्रदर्शन करते हैं, इसलिए SSDs (प्रदर्शन के दृष्टिकोण से, निश्चित रूप से) का उपयोग करने में कोई उद्देश्य नहीं होगा।


2
SSDs के कारण लगभग शून्य विलंबता की तलाश यादृच्छिक पढ़ने के संचालन में शानदार रहे हैं। वे इस तथ्य के कारण यादृच्छिक लिखने के संचालन में कम एड्रिट हैं कि एक SSD लिखने के ऑपरेशन में एक संपूर्ण फ़्लैश ब्लॉक (आमतौर पर, 128KB) पढ़ना, सामग्री को संशोधित करना और पूरे ब्लॉक को वापस फ्लैश में लिखना शामिल है। लंबे समय तक, अनुक्रमिक संचालन के लिए, बेहतर उपभोक्ता-स्तरीय एसएसडी (इंटेल, ओसीजेड वर्टेक्स, सैमसंग) 200 एमबी / सेकेंड रीड और 80 एमबी-150 एमबी पर अच्छी तरह से प्राप्त करते हैं, अच्छी तरह से ऊपर एक एकल कताई डिस्क का उत्पादन कर सकते हैं।
जॉन रोज

क्या आपको यकीन है? मुझे समझ में नहीं आता है कि एक लिखित ऑपरेशन में एक डेटा ब्लॉक को फिर से लिखने से पहले पढ़ना क्यों शामिल होना चाहिए ... लिखा जाने वाला डेटा कंप्यूटर की मेमोरी में होना चाहिए, क्या उन्हें नहीं होना चाहिए?
मासिमो

2
@ मैसिमो: क्योंकि ओएस केवल कुछ बाइट्स लिखता है, लेकिन एसएसडी 128KB (आमतौर पर) की इकाइयों (पृष्ठों) में काम करता है। यह केवल 128KB का पृष्ठ लिख सकता है, कुछ कम नहीं, कुछ अधिक नहीं। इसलिए जब आप संशोधित करते हैं तो कहते हैं कि एक पृष्ठ के मध्य में, ड्राइव पूरे पृष्ठ को पढ़ता है, मध्य को अपडेट करता है और फिर पुराने स्थान को अमान्य करते हुए, आमतौर पर नया पृष्ठ कहीं और लिखता है।
बजे क्रिस्टियन सियुपिटु

क्रिस्टियन सियुपिटु सही है। कुछ SSDs में यह एक ऑनबोर्ड कैश द्वारा कम किया जाता है (Indilinx कंट्रोलर का उपयोग करने वाले सभी ड्राइव्स में 64MB कैश है, मेरा मानना ​​है) और शायद ऑपरेटिंग सिस्टम के राइट कैशिंग द्वारा भी सक्षम होने पर। यहां तक ​​कि 64MB कैश की अपनी सीमाएं हैं, हालांकि - बहुत सारे राइट्स करने वाले डेटाबेस सर्वर के लिए, 64MB पर्याप्त नहीं हो सकता है। फ़र्मवेयर निर्माता बहुत सारी बारीकियों को जारी नहीं करते हैं, लेकिन एक बेहतर फर्मवार (इंटेल, इंडिलिनक्स) मान लेंगे कि इस ओवरहेड को कम करने के लिए 128KB पेज के भीतर छोटे यादृच्छिक लेखन रखने के लिए कुछ बुद्धिमान पुनरावर्तन / बैचिंग करें।
जॉन रोज

कैश की मेरी समझ से, यह आपको इन छोटे-छोटे लेखनों से बचाएगा, जिनके बारे में आप चिंतित हैं। यह बहुत मायने नहीं रखता है, क्योंकि डेटाबेस बहुत सारे रैखिक पढ़ने / लिखने के लिए डिज़ाइन किए गए हैं। मुझे यकीन है कि SSD अभी भी बेहतर काम करेगा क्योंकि एक रेखीय पढ़ा जाता है, एक seq नहीं। मतलब कि डेटा के बीच अभी भी अंतराल रहेगा और SSD समय की तलाश को दूर करेगा।
पाइरोलॉनिक जूल

0

कमेंट थ्रेड में जोड़ने के लिए अभी तक यहां कोई बिंदु नहीं है, लेकिन यदि आप SSD के पृष्ठ आकार के कई पर SSD के किसी भी चीज़ के लिए DB के पृष्ठ आकार / बहु रीड काउंट को सेट करते हैं तो यह कोई समस्या नहीं होनी चाहिए।

मैंने लंबे समय तक SQL सर्वर पर काम नहीं किया है इसलिए मुझे यकीन नहीं है कि ये विकल्प वहां उपलब्ध हैं। मैं पिछले कुछ वर्षों से Oracle और DB2 कर रहा हूं और इससे आपकी चिंताओं का समाधान होगा क्योंकि DB को डिस्क विशेषताओं में ठीक से ट्यून किया जाएगा।


0

मैं अनुशंसा करूँगा कि जहाँ डेटाबेस फ़ाइलें संग्रहीत हैं, वहाँ विभाजन संरेखित करें।

मैं यह भी तय करने की सलाह दूंगा कि RAID 0 परफेक्ट (ldf और TempDB) के लिए क्या है, और RAID 1 (mdf) पर महत्वपूर्ण डेटा रखें।

तीसरा, आपको वास्तव में ड्राइव के फर्मवेयर के साथ-साथ SATA कंट्रोलर फर्मवेयर / ड्राइवरों को अपडेट करना चाहिए। ऐसा करके आप हार्डवेयर कंपनी और उनके डेवलपर्स को आपके लिए पूर्ण अनुकूलन करने का मौका देते हैं।


RAID 0 का उपयोग कभी भी डेटाबेस सर्वर के लिए नहीं किया जाना चाहिए। यदि एक भी ड्राइव विफल हो जाता है तो डेटाबेस तब तक नीचे रहता है जब तक कि डिस्क को बदल नहीं दिया जाता है और टेप से लापता डेटा (इसमें लॉग शामिल है)।
मर्डेनी जूल 7'09

ऐसी दुनिया में जहां पैसा कोई वस्तु नहीं है, सब कुछ बैटरी-समर्थित L1 कैश पर चलना चाहिए। बैंकिंग उद्योग में, LDF फ़ाइल mdf की तरह ही महत्वपूर्ण है। वैज्ञानिक कंप्यूटिंग के लिए एमडीएफ एकमात्र फाइल है जिसे वास्तव में 100% होना चाहिए।
ग्रेग जूल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.