سؤال

أنا أسب.نت المطور الذي استخدم Microsoft SQL Server لجميع احتياجات قاعدة البيانات الخاصة بي (سواء في العمل أو للمشاريع الشخصية).

أنا أفكر في تجربة خروف كومة لبعض مشاريعي الشخصية.

ما هي بعض الاختلافات الرئيسية بين MySQL و SQL Server؟يستخدم الإجراءات المخزنة ممارسة شائعة في MySQL?

هل هناك أي نصيحة أو موارد تنصحني بها لمساعدتي في التبديل؟

بالنسبة لأولئك الذين لديهم خبرة في كليهما، هل هناك أي ميزات مفقودة فيهما MySQL?

هل كانت مفيدة؟

المحلول

أحد الأشياء التي يجب عليك الانتباه إليها هو الاختلافات الكبيرة إلى حد ما في الطريقة التي ينفذ بها SQL Server وMySQL بناء جملة SQL.

هنا لطيفة مقارنة بين تطبيقات SQL المختلفة.

على سبيل المثال، ألق نظرة على القسم العلوي n.في الخلية:

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

في SQL Server (T-SQL):

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

نصائح أخرى

تبدو الكثير من التعليقات هنا وكأنها حجج دينية أكثر من كونها تصريحات واقعية.لقد عملت لسنوات مع كل من MySQL وMSSQL وكلاهما منتج جيد.سأختار MySQL بشكل أساسي بناءً على البيئة التي تعمل عليها.تستخدم معظم المشاريع مفتوحة المصدر MySQL، لذا إذا ذهبت في هذا الاتجاه فإن MySQL هو اختيارك.إذا قمت بتطوير شيء ما باستخدام .Net، فسوف أختار MSSQL، ليس لأنه أفضل بكثير، ولكن لأن هذا هو ما يستخدمه معظم الناس.أنا حاليًا أعمل على مشروع يستخدم ASP.NET مع MySQL وC#.أنه يعمل بشكل جيد تماما.

لا أصدق أنه لم يذكر أحد أن MySQL لا يدعم عبارات Common Table Expressions (CTE)/"with".إنه فرق مزعج جدًا.

من المرجح أن تواجه MySQL مشكلات تلف قاعدة البيانات، ولا تقوم بإصلاحها تلقائيًا عند حدوثها.لقد عملت مع MSSQL منذ الإصدار 6.5 ولا أتذكر مشكلة تلف قاعدة البيانات التي أدت إلى توقف قاعدة البيانات عن العمل.في المرات القليلة التي عملت فيها مع 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

بصراحة، لا يمكنني العثور على سبب واحد لاستخدام MySQL بدلاً من MSSQL.كانت المشكلة من قبل هي التكلفة ولكن SQL Server 2005 Express مجاني وهناك الكثير من شركات استضافة الويب التي تقدم استضافة كاملة مع خادم SQL بأقل من 5.00 دولارات شهريًا.

يعد MSSQL أسهل في الاستخدام ويحتوي على العديد من الميزات غير الموجودة في MySQL.

يبدو أن كل شيء في MySQL يتم تنفيذه بشكل أقرب إلى المعدن منه في MSSQL، وتتعامل الوثائق معه بهذه الطريقة.ستحتاج إلى فهم كيفية تفاعل الفهارس وتكوين النظام والمُحسِّن في ظل ظروف مختلفة، على وجه الخصوص، من أجل التحسين.

"المُحسِّن" هو أكثر من محلل.في MSSQL، غالبًا ما تكون خطة الاستعلام الخاصة بك مفاجأة (عادةً ما تكون جيدة، وأحيانًا لا).في MySQL، يقوم بتنفيذ ما طلبته منه، وبالطريقة التي توقعتها منه.مما يعني أنك أنت نفسك بحاجة إلى فهم عميق للطرق المختلفة التي يمكن القيام بها.

غير مبني على نموذج معاملة جيد (محرك MyISAM الافتراضي).

إعداد نظام الملفات هو مشكلتك.

كل تكوينات قاعدة البيانات هي مشكلتك - خاصة أحجام ذاكرة التخزين المؤقت المختلفة.

في بعض الأحيان يبدو من الأفضل التفكير في الأمر باعتباره إسلامًا خاصًا وممجدًا.Codd و Date لا يحملان وزنًا كبيرًا هنا.سيقولون ذلك دون أي حرج.

أعتقد أن أحد الأشياء الرئيسية التي يجب الانتباه إليها هو أن الإصدارات السابقة لـ MySQL 5.0 لم تكن تحتوي على طرق عرض ومشغلات وإجراءات مخزنة.

المزيد من هذا موضح في صفحة تحميل MySQL 5.0.

@عبدو

الشيء الرئيسي الذي وجدته أن 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                                             |
+-----------------------------------------------------------------+

إلى الالتواءات المعنية في هذه الإجابة.

أما بالنسبة للتعليق "الأسهل في الاستخدام"، أود أن أقول إن النقطة المهمة هي أنهما مختلفان، وإذا كنت تعرف أحدهما، فسيكون هناك عبء إضافي في تعلم الآخر.

كلاهما عبارة عن خادم Sql الخاص بمنتج DBMS وهو تطبيق تجاري بينما MySql هو تطبيق مفتوح المصدر. يتضمن كلا المنتجين ميزة مماثلة، ومع ذلك يجب استخدام خادم SQL لحل المؤسسات، بينما قد يناسب mysql تنفيذًا أصغر. إذا كنت بحاجة إلى ميزة مثل الاسترداد، النسخ المتماثل والأمان الدقيق والهام، أنت بحاجة إلى خادم SQL

يشغل MySql مساحات أقل على القرص، ويستخدم ذاكرة ووحدة معالجة مركزية أقل من خادم SQL

أي شخص لديه أي تجربة جيدة مع "منفذ" لقاعدة بيانات من SQL Server إلى MySQL؟

يجب أن يكون هذا مؤلمًا إلى حد ما!لقد قمت بتبديل إصدارات MySQL من 4.x إلى 5.x ولم تعد العبارات المختلفة تعمل كما كانت في السابق.تم "تحسين" محلل الاستعلام، لذا فإن البيانات التي تم ضبطها سابقًا للأداء لن تعمل بعد الآن كما هو متوقع.

الدرس المستفاد من العمل مع قاعدة بيانات MySQL بسعة 500 جيجابايت:إنه موضوع خفي وأي شيء آخر غير تافه!

@Cebjyre.يعد IDE سواء كان Enterprise Manager أو Management Studio أفضل من أي شيء رأيته حتى الآن في MySQL.أقول "أسهل في الاستخدام" لأنني أستطيع القيام بالعديد من الأشياء في MSSQL حيث لا يوجد لدى MySQL نظير.ليس لدي أي فكرة في MySQL عن كيفية ضبط الاستعلامات بمجرد النظر إلى خطة الاستعلام أو النظر إلى الإحصائيات.يقوم معالج ضبط الفهرس في MSSQL بمعظم أعمال التخمين بشأن الفهارس المفقودة أو في غير محلها.

أحد عيوب MySQL هو عدم وجود حد أقصى لحجم قاعدة البيانات.سيزداد حجم قاعدة البيانات حتى تملأ القرص.تخيل لو كان هذا القرص يشارك قواعد البيانات مع مستخدمين آخرين وفجأة تفشل جميع استعلاماتهم لأن قواعد بياناتهم لا يمكن أن تنمو.لقد أبلغت MySQL بهذه المشكلة منذ وقت طويل.لا أعتقد أنه تم إصلاحه بعد.

قضيت بعض الوقت في العمل مع MySQL من MSSQL إلى بناء جملة MySQL POV، ظللت أجد نفسي محدودًا في ما يمكنني فعله.

توجد حدود غريبة على تحديث جدول أثناء الرجوع إلى نفس الجدول أثناء التحديث.

بالإضافة إلى ذلك، لا يعمل UPDATE FROM وفي آخر مرة تأكدت من أنها لا تدعم بناء جملة Oracle MERGE INTO أيضًا.لقد كان هذا بمثابة توقف بالنسبة لي وتوقفت عن التفكير في أنني سأصل إلى أي مكان باستخدام MySQL بعد ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top