MySQL 与 SQL Server 的区别

我是一个 ASP.NET开发人员谁使用 Microsoft SQL Server的所有我的数据库需求(无论是在工作和个人项目)。

我正在考虑为我的一些个人项目尝试 台灯堆栈。

MySQLSQL Server之间的主要区别是什么? 在 MySQL中使用 存储程序是一种常见的做法吗?

你有什么建议或者资源可以帮我调包吗?

对于那些有经验的人来说,MySQL有什么缺失的特性吗?

330621 次浏览

您必须注意的一件事是 SQLServer 和 MySQL 实现 SQL 语法的方式存在相当严重的差异。

这是一个不错的 不同 SQL 实现的比较

例如,看看前面的 n 部分:

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

在 SQLServer (T-SQL)中:

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

我认为需要注意的主要问题之一是 MySQL 5.0之前的版本没有视图、触发器和存储过程。

这一点在 MySQL 5.0下载页面中有更多的解释。

任何人都有任何好的经验 从 SQLServer“端口”数据库 到 MySQL?

这应该是相当痛苦的!我将 MySQL 的版本从4.x 转换为5.x,各种语句不再像以前那样工作了。查询分析器得到了“改进”,因此之前针对性能进行了调优的语句将不再像预期的那样工作。

从使用500GB MySQL 数据库中学到的经验是: 这是一个微妙的主题,绝不是琐碎的!

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

坦白地说,我找不到一个使用 MySQL 而不是 MSSQL 的理由。以前的问题是成本问题,但 SQL Server 2005 Express 是免费的,而且有很多网络托管公司提供使用 SQL 服务器的完整托管服务,每月的费用不到5.00美元。

MSSQL 更容易使用,并且有许多 MySQL 中不存在的特性。

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

这个答案的扭转动作有关。

至于“更容易使用”的评论,我想说的是,它们是不同的,如果你知道其中一个,那么学习另一个就会有一定的开销。

@ Cebjyre.无论是企业管理器还是管理工作室的 IDE 都比我迄今为止看到的任何 MySQL IDE 都要好。我说“更容易使用”是因为我可以在 MSSQL 中做很多事情,而 MySQL 没有对应的。在 MySQL 中,我不知道如何通过查看查询计划或查看统计数据来调优查询。MSSQL 中的索引调优向导负责对丢失或放错的索引进行大部分猜测工作。

MySQL 的一个缺点是数据库没有最大大小。数据库只会增加大小,直到它填满磁盘。想象一下,如果这个磁盘正在与其他用户共享数据库,突然之间他们的所有查询都失败了,因为他们的数据库不能增长。我很久以前就向 MySQL 报告了这个问题。我觉得还没修好。

花了一些时间使用 MySQL,从 MSSQL 到 MySQL 语法 POV,我发现自己能做的事情很有限。

在更新过程中引用同一个表时,对于更新表有一些奇怪的限制。

另外,UPDATEFROM 不能工作,而且上次我检查它们也不支持 OracleMERGEINTO 语法。对我来说,这是一个表演停止,我不再认为我会得到任何地方与 MySQL 之后。

在 mySQL 中所做的一切似乎都比在 MSSQL 更接近金属,文档也是这么说的。特别是对于优化,您需要了解索引、系统配置和优化器在各种情况下是如何交互的。

“优化器”更像是一个解析器。在 MSSQL 中,查询计划通常是一个惊喜(通常是好的,有时不是)。在 MySQL 中,它几乎完成了您要求它完成的任务,以您期望的方式完成任务。这意味着你自己需要对各种可能的方法有一个深刻的理解。

不是围绕一个好的 TRANSACTION 模型(默认的 MyISAM 引擎)构建的。

文件系统设置是您的问题。

所有的数据库配置都是您的问题-特别是各种缓存大小。

有时候最好把它想象成一个临时的,被美化的伊萨姆。Codd 和 Date 在这里没什么分量。他们会毫不尴尬地说出来。

两者都是 DBMS 的 ProductSql 服务器是一个商业应用程序,而 MySql 是一个开源应用程序。这两个产品都包含类似的特性,但是 sql 服务器应该用于企业解决方案,而 mysql 可能适合较小的实现。如果需要恢复、复制、粒度安全性和重要性等特性,那么就需要 sql 服务器

与 sql 服务器相比,MySql 占用更少的磁盘空间,使用更少的内存和 CPU

这里的很多评论听起来更像是宗教争论,而不是现实生活中的陈述。 我已经为 MySQL 和 MSSQL 工作了多年,它们都是很好的产品。 我选择 MySQL 主要是基于您正在使用的环境。大多数开源项目都使用 MySQL,所以如果你朝这个方向发展,MySQL 是你的选择。如果你用。Net 我会选择 MSSQL,不是因为它更好,而是因为这是大多数人使用的。 实际上,我目前正在做一个项目,它使用 ASP.NET 和 MySQL 以及 C # ,运行得非常好。

我不敢相信没有人提到 MySQL 不支持公共表表达式(CTE)/“ with”语句。这是一个相当恼人的区别。