MySQL和SQL Server之间的差异

MySQL和SQL Server之间的差异

Differences between MySQL and SQL Server

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

我正在考虑为我的一些个人项目尝试使用LAMP堆栈。

MySQLSQL Server之间的主要区别是什么? 在MySQL中使用存储过程是否是一种惯例?

您是否有任何建议或资源可以帮助我进行转换?

对于同时拥有这两种经验的人来说,MySQL是否缺少任何功能?


您需要注意的一件事是,SQLServer和MySQL实现SQL语法的方式存在相当大的差异。

这是不同SQL实现的很好的比较。

例如,看一下top-n部分。在MySQL中:

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

在SQLServer(T-SQL)中:

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

这里的许多评论听起来更像是宗教辩论,而不是现实生活中的言论。
我已经使用MySQL和MSSQL多年,并且都是不错的产品。
我主要根据您正在使用的环境选择MySQL。大多数开源项目都使用MySQL,因此,如果朝这个方向发展,则选择MySQL。如果您使用.Net进行开发,我会选择MSSQL,不是因为它要好得多,而是导致大多数人使用它。
我目前实际上在一个将ASP.NET与MySQL和C#结合使用的项目中。它工作得很好。


我不敢相信没有人提到MySQL不支持通用表表达式(CTE)/" with"语句。这是一个非常烦人的区别。


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更接近金属,并且文档以这种方式对待它。尤其是对于优化,您需要了解索引,系统配置和优化器在各种情况下如何交互。

"优化器"更多是解析器。在MSSQL中,您的查询计划通常令人惊讶(通常很好,有时却没有)。在MySQL中,它几乎按照您的期望做事。这意味着您自己需要对可能的各种方式有深刻的了解。

并非围绕好的TRANSACTION模型(默认的MyISAM引擎)构建。

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

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

有时似乎最好将其视为临时的,荣耀的isam。此处的Codd和Date不太重要。他们会毫不尴尬地说。


坦白地说,我找不到使用MySQL而不是MSSQL的单一原因。以前的问题以前是花钱的,但是SQL Server 2005 Express是免费的,并且有很多网络托管公司提供每月少于5.00美元的SQL Server完全托管。

MSSQL易于使用,并且具有MySQL中不存在的许多功能。


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

有关更多信息,请参见MySQL 5.0下载页面。


两者都是DBMS的产品Sql服务器是一个商业应用程序,而MySql是一个opensouces应用程序。这两个产品都包含类似的功能,但是sql服务器应用于企业解决方案,而mysql可能适合较小的实现。如果您需要恢复等功能,复制,真正的安全性和重要性,您需要sql server

与SQL Server相比,MySql占用更少的磁盘空间,并使用更少的内存和cpu


@abdu

我发现MySQL在MSSQL之上具有的主要优势是对时区的支持-在时区之间进行很好地更改的能力,同时兼顾了夏时制,这真是太棒了。

比较一下:

1
2
3
4
5
6
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                                             |
+-----------------------------------------------------------------+

在这个答案涉及的扭曲。

至于"更易于使用"的评论,我想说的是,它们是不同的,如果您知道其中一个,则学习另一个会产生开销。


Anyone have any good experience with a
"port" of a database from SQL Server
to MySQL?

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

从使用500GB MySQL数据库获得的经验教训:这是一个微妙的话题,除了琐碎的事!


@Cebjyre。无论是企业管理器还是Management Studio,IDE都比我迄今为止所见的MySQL更好。我之所以说"易于使用"是因为我可以在MSSQL中做很多事情,而MySQL却没有MySQL。在MySQL中,我不知道如何仅通过查看查询计划或查看统计信息来优化查询。 MSSQL中的索引调整向导可以对丢失或放错哪些索引进行大多数猜测。

MySQL的一个缺点是数据库没有最大大小。数据库的大小只会增加,直到填满磁盘为止。想象一下,如果该磁盘正在与其他用户共享数据库,并且突然所有用户的查询都失败了,因为他们的数据库无法增长。我很久以前就向MySQL报告了此问题。我认为还没有解决。


从MSSQL到MySQL语法POV,我花了一些时间在MySQL上工作,我发现自己无法做些什么。

在更新过程中,在刷新同一张表的同时,存在对表的双重限制。

另外,UPDATE FROM不起作用,上次我检查它们也不支持Oracle MERGE INTO语法。对我来说,这是个秀场止步器,在那之后我不再以为MySQL可以帮助我。


推荐阅读