Различия между MySQL и SQL Server

Я разработчик ASP.NET, который использовал Microsoft SQL Server для всех моих потребностей в базе данных (как на работе, так и на личных проектах). Я рассматриваю возможность попробовать LAMP для некоторых моих личных проектов. Каковы некоторые из основных различий между MySQL и SQL Server? Использует хранимые процедуры обычную практику в MySQL? Любые советы или ресурсы, которые вы рекомендовали бы мне помочь с помощью коммутатора? Для тех, у кого есть опыт работы с обоими, есть ли недостающие функции MySQL?

Ответ 1

Единственное, что вам нужно обратить внимание, это довольно серьезные различия в том, как SQL Server и MySQL реализуют синтаксис SQL.

Здесь приятно Сравнение различных реализаций SQL.

Например, посмотрите раздел top-n. В MySQL:

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

Ответ 2

Много комментариев здесь больше напоминают религиозные аргументы, чем заявления о реальной жизни. Я много лет работал с MySQL и MSSQL, и оба являются хорошими продуктами. Я бы выбрал MySQL главным образом на основе среды, над которой вы работаете. Большинство проектов с открытым исходным кодом используют MySQL, поэтому, если вы пойдете в этом направлении, то MySQL - ваш выбор. Если вы что-то разработаете с помощью .Net, я бы выбрал MSSQL, а не потому, что это намного лучше, но просто причина в том, что большинство людей используют. На самом деле я нахожусь в проекте, который использует ASP.NET с MySQL и С#. Он отлично работает.

Ответ 3

Не могу поверить, что никто не упоминал, что MySQL не поддерживает выражения Common Table Expressions (CTE)/ "with". Это довольно неприятная разница.

Ответ 4

В 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

Ответ 5

Откровенно говоря, я не могу найти единственную причину использования MySQL, а не MSSQL. Проблема, прежде чем она стоила, но SQL Server 2005 Express бесплатна, и существует множество веб-хостинговых компаний, которые предлагают полный хостинг с сервером sql менее 5 долларов США в месяц.

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

Ответ 6

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

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

Не построен вокруг хорошей модели TRANSACTION (по умолчанию механизм MyISAM).

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

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

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

Ответ 7

Я думаю, что одна из основных вещей, на которые стоит обратить внимание, это то, что версии до MySQL 5.0 не имели представлений, триггеров и хранимых процедур.

Больше об этом объясняется в странице загрузки MySQL 5.0.

Ответ 8

Оба являются СУБД. Продукт Sql-сервер является коммерческим приложением, в то время как MySql - это приложение opensouces. Оба продукта включают аналогичную функцию, однако сервер sql должен использоваться для корпоративного решения, в то время как mysql может потребовать меньшую реализацию. Если вам нужна функция как восстановление, репликация, защита гранала и значительный, вам нужен сервер sql

MySql занимает меньше места на диске и использует меньше памяти и процессора, чем сервер sql

Ответ 9

У любого есть хороший опыт работы с "порт" базы данных с SQL Server к MySQL?

Это должно быть довольно болезненно! Я переключил версии MySQL с 4.x на 5.x, и различные операторы больше не работали, как раньше. Анализатор запросов был "улучшен", поэтому утверждения, которые ранее были настроены на производительность, больше не будут работать, как ожидалось.

Урок, извлеченный из работы с базой данных 500 ГБ MySQL: это тонкая тема и все остальное, но тривиальное!

Ответ 10

@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                                             |
+-----------------------------------------------------------------+

к искажениям, связанным с этим ответом.

Что касается комментария "проще в использовании", я бы сказал, что дело в том, что они разные, и если вы знаете один, навлечь накладные расходы при изучении другого.

Ответ 11

@Cebjyre. В IDE ли Enterprise Manager или Management Studio лучше, чем все, что я видел до сих пор для MySQL. Я говорю "проще в использовании", потому что я могу многое сделать в MSSQL, где MySQL не имеет аналогов. В MySQL я понятия не имею, как настраивать запросы, просто просматривая план запроса или просматривая статистику. Мастер настройки индекса в MSSQL занимает большую часть работы над тем, какие индексы отсутствуют или неуместны.

Один недостаток MySQL - нет максимального размера для базы данных. База данных будет просто увеличиваться, пока она не заполнит диск. Представьте себе, если этот диск обменивается базами данных с другими пользователями, и внезапно все их запросы терпят неудачу, потому что их базы данных не могут расти. Я давно сообщал об этой проблеме MySQL. Я не думаю, что это исправлено.

Ответ 12

Потратив некоторое время на работу с MySQL из синтаксиса PSS MSSQL для MySQL, я все время считал себя ограниченным тем, что мог.

При обновлении таблицы есть ограничения на bizzare, а при обновлении - одна таблица.

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