Вопрос

Я АСП.НЕТ разработчик, который использовал Microsoft SQL Server для всех моих потребностей в базе данных (как на работе, так и в личных проектах).

Я подумываю о том, чтобы попробовать ЛАМПА стек для некоторых моих личных проектов.

Каковы некоторые основные различия между MySQL и SQL Server?Использует хранимые процедуры обычная практика в MySQL?

Какие-нибудь советы или ресурсы вы бы порекомендовали, чтобы помочь мне с переходом?

Для тех, кто имеет опыт работы с обоими, есть ли какие-либо недостающие функции в MySQL?

Это было полезно?

Решение

Следует обратить внимание на довольно серьезные различия в способах реализации синтаксиса SQL в SQL Server и MySQL.

Вот хороший Сравнение различных реализаций SQL.

Например, взгляните на раздел top-n.В 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

Другие советы

Многие комментарии здесь больше похожи на религиозные аргументы, чем на утверждения из реальной жизни.Я много лет работал как с 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 долларов в месяц.

MSSQL проще в использовании и имеет множество функций, которых нет в MySQL.

Кажется, что все в MySQL сделано ближе к металлу, чем в MSSQL, и документация трактует это именно так.Особенно при оптимизации вам необходимо понимать, как индексы, конфигурация системы и оптимизатор взаимодействуют при различных обстоятельствах.

«Оптимизатор» — это скорее парсер.В MSSQL план запроса часто оказывается неожиданностью (обычно хорошим, иногда нет).В MySQL он в значительной степени делает то, что вы просили, и так, как вы от него ожидали.Это означает, что вы сами должны иметь глубокое понимание различных способов, которыми это можно сделать.

Не построен на хорошей модели ТРАНЗАКЦИИ (движок MyISAM по умолчанию).

Настройка файловой системы - ваша проблема.

Вся конфигурация базы данных — ваша проблема, особенно различные размеры кэша.

Иногда кажется, что лучше думать об этом как о специальном, прославленном изаме.Кодд и Дейт здесь не имеют большого значения.Они сказали бы это без смущения.

Я думаю, что одна из главных вещей, на которую следует обратить внимание, это то, что версии 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 является коммерческим приложением, а MySql — приложением openouces. Оба продукта включают схожую функцию, однако сервер 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, я продолжал обнаруживать, что мои возможности ограничены.

Существуют странные ограничения на обновление таблицы при ссылке на одну и ту же таблицу во время обновления.

Кроме того, UPDATE FROM не работает, и когда я в последний раз проверял, они также не поддерживают синтаксис Oracle MERGE INTO.Для меня это стало камнем преткновения, и я перестал думать, что после этого чего-нибудь добьюсь с MySQL.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top