MySQL और SQL सर्वर के बीच अंतर [बंद]


144

मैं एक ASP.NET डेवलपर हूं, जिसने Microsoft SQL Serverमेरे सभी डेटाबेस जरूरतों (काम पर और निजी परियोजनाओं के लिए) का उपयोग किया है।

मैं अपनी कुछ व्यक्तिगत परियोजनाओं के लिए LAMP स्टैक को आज़माने पर विचार कर रहा हूं ।

के बीच मुख्य अंतर क्या हैं MySQLऔर SQL Server? क्या संग्रहीत प्रक्रियाओं का उपयोग करना एक आम बात है MySQL?

किसी भी सलाह या संसाधन आप स्विच के साथ मेरी मदद करने की सिफारिश करेंगे?

उन लोगों के लिए जिनके पास दोनों के साथ अनुभव है, वहाँ से कोई भी गायब विशेषताएं हैं MySQL?

जवाबों:


139

एक बात जो आपको देखनी है वह है SQL सर्वर और MySQL के SQL सिंटैक्स को लागू करने के तरीके में काफी गंभीर अंतर।

यहाँ विभिन्न SQL कार्यान्वयन की एक अच्छी तुलना है

उदाहरण के लिए, शीर्ष-एन अनुभाग पर एक नज़र डालें। MySQL में:

SELECT age
FROM person
ORDER BY age ASC
LIMIT 1 OFFSET 2

SQL सर्वर (T-SQL) में:

SELECT TOP 3 WITH TIES *
FROM person
ORDER BY age ASC

27
और ओरेकल भी अलग है: से चुनें * (पहले से व्यक्ति के आदेश से आयु का चयन करें) जहां पंक्तिबद्ध <= 3 वापस ANSI SQL, सभी को माफ कर दिया है :)
gbjbaanb

9
बस इसी के बीच भाग गया। सभी अंतरों के बारे में पढ़ना मुझे परेशान करता है। मूल बातें समान हैं (कम से कम समझ के संदर्भ में), लेकिन बारीकियों बहुत अलग हैं, बहुत अलग हैं।
जसकव

21
शायद एक गूंगा टिप्पणी, लेकिन 1 sql भाषा क्यों नहीं हो सकती है? ... क्या अलग html ?? है ... तो 1 sql क्यों नहीं।
अधिक

4
@graitKing HTML एक समिति / संघटन द्वारा एक सेट संरचना और मानक है, SQL .. नहीं है, यह सिर्फ एक स्क्रिप्टिंग भाषा है और एकमात्र स्वामी दुभाषिया का डेवलपर है। यह एक तरह से जावास्क्रिप्ट की तरह है, हर ब्राउज़र का अपना JS इंजन है और स्क्रिप्ट की व्याख्या करने का अपना तरीका है। यह केवल समुदाय के दबाव से है कि उस भाषा को किसी प्रकार की एकजुटता में लाने का प्रयास किया गया है। लेकिन क्या मैं चाहता हूं कि वे केवल मामूली अंतर के साथ समान थे
RedactedProfile

2
टी-एसक्यूएल ट्रांसेक्ट-एसक्यूएल में अनुवाद करता है; एसक्यूएल सर्वर में भाषा (टी-एसक्यूएल) शामिल है लेकिन यह जीयूआई के साथ एक सॉफ्टवेयर है, जो स्थानीय स्तर पर और नेटवर्क आदि के माध्यम से अनुरोधों को संभालता है
बोटंड बर्टेलन

48

यहाँ टिप्पणियों के बहुत से वास्तविक जीवन बयानों की तुलना में धार्मिक तर्कों की तरह लगता है। मैंने MySQL और MSSQL दोनों के साथ वर्षों तक काम किया है और दोनों अच्छे उत्पाद हैं। मैं मुख्य रूप से उस वातावरण के आधार पर MySQL को चुनूंगा, जिस पर आप काम कर रहे हैं। अधिकांश ओपन सोर्स प्रोजेक्ट MySQL का उपयोग करते हैं, इसलिए यदि आप उस दिशा में जाते हैं तो MySQL आपकी पसंद है। यदि आप .Net के साथ कुछ विकसित करते हैं, तो मैं MSSQL का चयन करूंगा, इसलिए नहीं कि यह बहुत बेहतर है, बल्कि सिर्फ यही कारण है कि अधिकांश लोग इसका उपयोग करते हैं। मैं वास्तव में MySQL और C # के साथ ASP.NET का उपयोग करने वाले प्रोजेक्ट पर हूं। यह पूरी तरह से ठीक काम करता है।


3
कड़ाई से बोलते हुए आपको नहीं लगता कि MS SQL जैसा कुछ नहीं है। मौजूद चीज़ "MS SQL Server" है।
अटूट

मुझे यकीन है कि आप मुझसे ज्यादा जानते हैं। मैं सिर्फ एक शुरुआत कर रहा हूं क्या आप मुझे बता सकते हैं कि क्या मैं गलत हूं? क्या MS SQL के रूप में कुछ सटीक है?
अटूट

2
मुझे यकीन नहीं है कि आप क्या पूछ रहे हैं?
रेमी

3
वह सही है। Microsoft SQL Server 2012 या जो भी संस्करण आप उपयोग करते हैं।
रेमी

5
प्रोग्रामिंग आजकल सभी सारांशों के बारे में है। चलिए आप का उदाहरण लेते हैं Lamp Stack। बहुत सारे लोग शायद सिर्फ LAMP या WAMP ही कहेंगे। इसी तरह, Microsoft SQL सर्वर कहने के बजाय हमने इसे MS SQL से MSSQL MSSQL बना दिया
ytpillai

23

मुझे विश्वास नहीं हो रहा है कि किसी ने भी उल्लेख किया है कि MySQL कॉमन टेबल एक्सप्रेशंस (CTE) / "स्टेटमेंट्स" का समर्थन नहीं करता है। यह काफी कष्टप्रद अंतर है।


मैंने दोनों सीटीई के साथ-साथ टेम्प / वैरिएबल टेबल का उपयोग किया है। बाद के दो से अधिक सीटीई का उपयोग करने से क्या लाभ होगा?
जारेड

8
@ सीटीई का उपयोग करके कोड को पठनीय रखा जाता है क्योंकि आपको एक अस्थायी तालिका को परिभाषित करने की आवश्यकता नहीं होती है और यह कॉलम प्रकार है और सीटीई का उपयोग करके आप कॉलम प्रकार और नाम के लिए एक इंटेलीसेंस भी प्राप्त करते हैं, यहां तक ​​कि आपने उन्हें निर्दिष्ट नहीं किया है।
एलेक्सा

9
पुनरावृत्ति एक लाभ है कि एक उल्लेख की जरूरत है।
फैज़


इसलिए mysql को अब सिंटैक्टिक कैंडी भी मिलती है।
लेजेंडरीकॉपी कोडकर

15

MySQL में डेटाबेस करप्शन समस्याएँ होने की अधिक संभावना है, और ऐसा होने पर यह अपने आप उन्हें ठीक नहीं करता है। मैंने संस्करण 6.5 के बाद से MSSQL के साथ काम किया है और डेटाबेस को ऑफ़लाइन लेने वाले डेटाबेस के भ्रष्टाचार के मुद्दे को याद नहीं रखता। कुछ समय के लिए मैंने उत्पादन वातावरण में MySQL के साथ काम किया है, एक डेटाबेस भ्रष्टाचार समस्या ने पूरे डेटाबेस को ऑफ़लाइन ले लिया, जब तक कि हम जादू नहीं चला "कृपया मेरे भ्रष्ट सूचकांक को ठीक करें" कमांडलाइन से बात करें।

MSSQL का लेन-देन और जर्नलिंग सिस्टम, मेरे अनुभव में, किसी भी चीज़ के बारे में बताता है - जिसमें एक शक्ति चक्र या हार्डवेयर विफलता भी शामिल है - डेटाबेस भ्रष्टाचार के बिना, और अगर कुछ गड़बड़ हो जाती है तो यह अपने आप ठीक हो जाती है।

यह मेरा अनुभव रहा है, और मुझे यह सुनकर खुशी होगी कि यह तय हो गया है या हम कुछ गलत कर रहे हैं।

http://dev.mysql.com/doc/refman/6.0/en/corrupted-myisam-tables.html

http://www.google.com/search?q=site%3Abugs.mysql.com+index+corruption


2
myIsam वास्तव में त्वरित प्रतिक्रियाओं के लिए है, इसने विदेशी कुंजी को त्वरित होने के लिए मजबूर नहीं किया है। यदि कुछ अधिक गंभीर है तो InnoDB इंजन का उपयोग करने का प्रयास करें। एमएस एक्सेस के साथ मुझे वास्तव में कुछ बुरा समस्याएँ थीं, और उन्हें इस तरह की गैरजिम्मेदारी के लिए माफ़ नहीं किया जा सकता है, इसलिए मैं एमएस के किसी भी डेटाबेस का समर्थन नहीं करता, उन्हें ओएसई करने देता हूं, और स्रोत समुदाय को खोलने के लिए गंभीर व्यवसाय देता हूं ... हालांकि आप नहीं हो सकते जब से ओरेकल ने MySQL को पीछे छोड़ दिया है, तब से कुछ भी सुनिश्चित नहीं है
ante.sabo

8
पर्याप्त रूप से उचित है, लेकिन यह एक्सेस के आधार पर Microsoft डेटाबेस को अनदेखा करने के लिए मूर्खतापूर्ण है। इसे एक्सेस करना एक डेस्कटॉप डेटाबेस है और इसका SQL सर्वर से कोई लेना-देना नहीं है। आपको पता है कि StackOverflow SQL Server पर चलता है, है ना?
जॉन गैलोवे

@JonGalloway: हाय मैं एक शुरुआत कर रहा हूँ। मैं केवल यह जानना चाहता हूं कि हमारे पास एमएस एसक्यूएल के रूप में कुछ भी बोलने के लिए है। मुझे लगता है कि जो मौजूद है वह MS SQL सर्वर है। क्या आप मुझे इस पर स्पष्ट कर सकते हैं। यह एक सामान्य शब्द हो सकता है इसलिए आपने इसे MS SQL के रूप में इस्तेमाल किया होगा और यह हर एक को समझ में आया होगा। लेकिन मैं एक शुरुआत कर रहा हूं इसलिए मैं अवधारणा प्राप्त करने के लिए शब्दावली के साथ निश्चित रूप से जुड़ा हुआ हूं। कृपया मुझे बताएं कि आप MS SQL या MS SQL सर्वर के बारे में क्या बात कर रहे हैं?
अटूट

1
जब लोग MSSQL, TSQL कहते हैं, तो वे आम तौर पर उत्पाद Microsoft SQL सर्वर के साथ SQL या लेनदेन SQL (TSQL) भाषा भेजते हैं। यह पता लगाने के लिए उतना मुश्किल नहीं होना चाहिए। En.wikipedia.org/wiki/Microsoft_SQL_Server
Faiz

@JonGalloway और यहाँ संदर्भ है: stackoverflow.blog/2008/09/what-was-stack-overflow-built-with
Moayad Hani Abu Rmilah

7

सच कहूँ तो, मुझे MSSQL के बजाय MySQL का उपयोग करने का एक भी कारण नहीं मिल रहा है। पहले यह मुद्दा लागत का था, लेकिन SQL सर्वर 2005 एक्सप्रेस मुफ्त है और बहुत सारी वेब होस्टिंग कंपनियां हैं जो sql सर्वर के साथ प्रति माह $ 5.00 से कम के लिए पूर्ण होस्टिंग प्रदान करती हैं।

MSSQL का उपयोग करना आसान है और इसमें कई विशेषताएं हैं जो MySQL में मौजूद नहीं हैं।


2
मुझे लगता है कि MSSQL पर MySQL चुनने के लिए कीमत एकमात्र वास्तविक कारण है। निश्चित रूप से, कुछ सस्ते MSSQL होस्टिंग हैं लेकिन यह दुर्लभ है और अक्सर भंडारण पर गंभीर रूप से सीमित है।
क्रेग

21
मैं कहूंगा कि लाइसेंस MySQL के साथ जाने के लिए एक बहुत अच्छा कारण है।
डॉ। माइक

3
Group_concat और REGEXP SQL सर्वर पर MySQL का उपयोग करने के लिए पर्याप्त कारणों से अधिक हैं (भले ही दो लाइसेंस स्विच किए गए हों)
मिशेल

1
एक और कारण कि मैं MySQL के साथ क्यों जाऊंगा, यदि आप एक स्थानीय डेटाबेस चाहते हैं और आप MS SQL सर्वर के लिए जाते हैं, तो आपको एक विंडोज़ मशीन चलानी होगी, जिसमें अधिक लाइसेंसिंग लागतें शामिल हैं ... विशेष रूप से यदि आप यह सब रखना चाहते हैं आज तक
पेड्रो ब्रज

2
नीच क्योंकि मुझे लगता है कि यह पक्षपाती है और स्पष्ट रूप से यह कहना गलत है कि MSSQL पर MySQL के साथ जाने का एक भी कारण नहीं है। SQL सर्वर एक्सप्रेस की गंभीर सीमाएँ हैं जो MySQL नहीं करता है, और कोई भी गंभीर परियोजना एक्सप्रेस का उपयोग करने वाली नहीं है, जिसका अर्थ है कि लागत का मुद्दा अभी भी बहुत वैध है। वहां की अधिकांश बड़ी कंपनियों ने MSSQL पर MySQL / MariaDB चुना। निजी तौर पर, मैं भी केवल लाइसेंस और लागत के मुद्दे के लिए नहीं, बल्कि इसलिए कि मेरे अनुभव में MySQL के साथ काम करना बहुत आसान है। MySQL सिर्फ काम करने के लिए जाता है, जबकि मैं अपने आप को MSSQL के साथ कभी-कभार लड़ता हुआ पाता हूँ जो मैं चाहता हूँ उसे करने के लिए।
dallin

7

MSSQL की तुलना में MySQL में सब कुछ धातु के करीब किया जाता है, और प्रलेखन इसे इस तरह से व्यवहार करता है। विशेष रूप से अनुकूलन के लिए, आपको यह समझने की आवश्यकता होगी कि अनुक्रमणिका, सिस्टम कॉन्फ़िगरेशन और ऑप्टिमाइज़र विभिन्न परिस्थितियों में कैसे बातचीत करते हैं।

"ऑप्टिमाइज़र" अधिक पार्सर है। MSSQL में आपकी क्वेरी योजना अक्सर आश्चर्यचकित करती है (आमतौर पर अच्छा है, कभी-कभी नहीं)। MySQL में, यह वही करता है जो आपने इसे करने के लिए कहा था, जिस तरह से आपने इसकी अपेक्षा की थी। जिसका अर्थ है कि आपको अपने आप को विभिन्न तरीकों की गहरी समझ होनी चाहिए।

एक अच्छे परिवहन मॉडल (डिफ़ॉल्ट MyISAM इंजन) के आसपास नहीं बनाया गया है।

फ़ाइल-सिस्टम सेटअप आपकी समस्या है।

सभी डेटाबेस कॉन्फ़िगरेशन आपकी समस्या है - विशेष रूप से विभिन्न कैश आकार।

कभी-कभी इसे तदर्थ, महिमामय समागम के रूप में सोचना सबसे अच्छा लगता है। Codd और Date यहाँ अधिक भार नहीं ले जाते हैं। वे इसे बिना किसी शर्मिंदगी के कहेंगे।


3
आधुनिक MySQL ने हालांकि इनोडब को डिफॉल्ट किया, सिर्फ स्पष्टीकरण का एक बिंदु। मुझे लगता है कि 5.1 या इसके बाद। माईडैम के साथ टेबल लेवल लॉकिंग के विपरीत इनोडब लेनदेन, विदेशी कुंजी और पंक्ति स्तर लॉकिंग का समर्थन करता है।
जोसेफ हैमिल्टन

5

मुझे लगता है कि MySQL 5.0 से पहले के संस्करणों में से एक को देखने के लिए प्रमुख चीजें हैं, जिसमें दृश्य, ट्रिगर और संग्रहीत प्रक्रियाएं नहीं थीं।

इसके बारे में MySQL 5.0 डाउनलोड पेज में बताया गया है ।


4

@abdu

मुख्य बात मैंने पाया है कि MySQL में MSSQL से अधिक समय का समर्थन है - टाइमज़ोन के बीच अच्छी तरह से परिवर्तन करने की क्षमता, दिन के उजाले की बचत का सम्मान करना शानदार है।

इसकी तुलना करें:

mysql> SELECT CONVERT_TZ('2008-04-01 12:00:00', 'UTC', 'America/Los_Angeles');
+-----------------------------------------------------------------+
| CONVERT_TZ('2008-04-01 12:00:00', 'UTC', 'America/Los_Angeles') |
+-----------------------------------------------------------------+
| 2008-04-01 05:00:00                                             |
+-----------------------------------------------------------------+

इस उत्तर में शामिल अंतर्विरोधों के लिए ।

'आसान उपयोग करने के लिए' टिप्पणी के रूप में, मैं कहूंगा कि मुद्दा यह है कि वे अलग हैं, और यदि आप एक को जानते हैं, तो दूसरे को सीखने में एक उपरि होगी।


इसके अलावा, समूह के लिए सही एएनएसआई समर्थन, स्वचालित टाइमस्टैम्प कॉलम, बहुत सरल पेजिंग ...
जोएल कोएहॉर्न

1
MySQL का टाइमज़ोन समर्थन काफी टूट गया है, मुझे नहीं लगता कि यह एक उपयोगी विशेषता है। इसके बजाय आवेदन में करें।
मार्क

मुझे टाइमज़ोन समर्थन से कोई समस्या नहीं है, क्या आप कुछ और विवरणों में जा सकते हैं या कृपया एक लिंक प्रदान कर सकते हैं?
Cebjyre

2
आपको डेटाबेस में टाइमज़ोन समर्थन की आवश्यकता क्यों होगी? हर जगह यूटीसी का उपयोग करें और ओएस के स्थानीय समयक्षेत्र का उपयोग करके सामने के छोर / गुई में प्रस्तुत करें।
टिबेरिउ-आयनो स्टेन

4

दोनों DBMS के प्रोडक्ट Sql सर्वर एक कमर्शियल एप्लीकेशन है, जबकि MySql एक ओपन एप्लीकेशन है। हालांकि प्रोडक्ट में समान फीचर शामिल है, लेकिन sql सर्वर का उपयोग एंटरप्राइज सॉल्यूशन के लिए किया जाना चाहिए, जबकि mysql एक छोटे से कार्यान्वयन के लिए उपयुक्त हो सकता है। यदि आपको रिकवरी जैसे फीचर की आवश्यकता हो, प्रतिकृति, ग्रेनलर सुरक्षा और महत्वपूर्ण, आपको sql सर्वर की आवश्यकता है

MySql डिस्क पर कम स्थान लेता है, और sql सर्वर की तुलना में कम मेमोरी और सीपीयू का उपयोग करता है


3

किसी को SQL सर्वर से MySQL के एक "पोर्ट" के साथ कोई अच्छा अनुभव है?

यह काफी दर्दनाक होना चाहिए! मैंने 4.x से 5.x तक MySQL के संस्करणों को स्विच किया और विभिन्न कथन अब काम नहीं करेंगे जैसे वे करते थे। क्वेरी एनालाइज़र को "बेहतर" किया गया था ताकि पहले जो प्रदर्शन के लिए ट्यून किए गए थे वे अब अपेक्षा के अनुरूप काम नहीं करेंगे।

500GB MySQL डेटाबेस के साथ काम करने से सीखा गया सबक: यह एक सूक्ष्म विषय है और कुछ और लेकिन तुच्छ!


2

@Cebjyre। आईडीई चाहे एंटरप्राइज मैनेजर हो या मैनेजमेंट स्टूडियो, मैंने MySQL के लिए अब तक जो कुछ भी देखा है, उससे बेहतर है। मैं कहता हूं कि 'उपयोग में आसान' है क्योंकि मैं MSSQL में कई काम कर सकता हूं जहां MySQL का कोई समकक्ष नहीं है। MySQL में मुझे पता नहीं है कि क्वेरी प्लान को देखकर या आँकड़ों को देखकर कैसे प्रश्नों को ट्यून किया जाए। MSSQL में इंडेक्स ट्यूनिंग विज़ार्ड इंडेक्स के गुम या गलत होने पर सबसे अधिक अनुमान लगाने का काम करता है।

MySQL की एक कमी डेटाबेस के लिए कोई अधिकतम आकार नहीं है। डेटाबेस केवल आकार में वृद्धि करेगा जब तक यह डिस्क को भरता है। सोचिए अगर यह डिस्क अन्य उपयोगकर्ताओं के साथ डेटाबेस साझा कर रही है और अचानक उनके सभी प्रश्न विफल हो रहे हैं क्योंकि उनके डेटाबेस नहीं बढ़ सकते हैं। मैंने इस मुद्दे को बहुत पहले MySQL को रिपोर्ट किया है। मुझे नहीं लगता कि यह अभी तक तय है।


2
दूसरी ओर, मैं प्रबंधन स्टूडियो कंसोल द्वारा पूर्ववत ठीक से सम्मान नहीं करने पर नाराज़ हो गया हूं (यह एक वैध प्रश्न है कि इस पर चुटकी लेना संभव है, क्योंकि यह महसूस नहीं होता है कि पाठ अपडेट किया गया है), और टैब की कमी है। -एक्सपेंशन (mysql खोल की तुलना में)। दोनों तरफ मीनू हैं।
Cebjyre

1

MSSQL से MySQL सिंटैक्स POV तक MySQL के साथ काम करने में कुछ समय बिताने से मैं खुद को सीमित कर पाया कि मैं क्या कर सकता हूँ।

एक अद्यतन के दौरान एक ही तालिका को वापस करते समय किसी तालिका को अद्यतन करने की सीमाएँ होती हैं।

इसके अतिरिक्त अद्यतन से काम नहीं करता है और पिछली बार जब मैंने जाँच की थी कि वे Oracle MERGE INTO सिंटैक्स का समर्थन नहीं करते हैं। यह मेरे लिए एक शो स्टॉपर था और मैंने यह सोचना बंद कर दिया कि मैं इसके बाद MySQL के साथ कहीं भी मिल जाऊंगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.