MySQL和SQL Server之间的差异
我是一位ASP.NET开发人员,他已将" Microsoft SQL Server"用于我的所有数据库需求(无论是在工作中还是在个人项目中)。
我正在考虑为我的一些个人项目尝试使用LAMP堆栈。
MySQL和SQL Server之间的主要区别是什么?使用存储过程在MySQL中是一种常见的做法吗?
我们是否有任何建议或者资源可以帮助我进行转换?
对于那些既有经验又有经验的人,MySQL
是否有缺少的功能?
解决方案
回答
我们需要注意的一件事是,SQLServer和MySQL实现SQL语法的方式存在相当大的差异。
这是不同的SQL实现的很好的比较。
例如,看一下top-n部分。在MySQL中:
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下载页面。
回答
Anyone have any good experience with a "port" of a database from SQL Server to 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是免费的,并且有很多网络托管公司提供每月不到5.00美元的SQL Server完全托管。
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。无论是企业管理器还是Management Studio,IDE都比我迄今为止所见的MySQL更好。我之所以说"易于使用"是因为我可以在MSSQL中做很多事情,而MySQL却没有MySQL。在MySQL中,我不知道如何仅通过查看查询计划或者查看统计信息来优化查询。 MSSQL中的索引调整向导对丢失或者放错了哪些索引进行了大多数猜测。
MySQL的一个缺点是数据库没有最大大小。数据库只会增加大小,直到填满磁盘为止。想象一下,如果该磁盘正在与其他用户共享数据库,并且突然所有用户的查询都失败了,因为他们的数据库无法增长。我很久以前就向MySQL报告了此问题。我认为还没有解决。
回答
从MSSQL到MySQL语法POV,我花了一些时间在MySQL上工作,我发现自己无法做些什么。
在更新过程中对同一张表进行刷新时,存在对表进行更新的双重限制。
另外,UPDATE FROM不起作用,上次我检查它们也不支持Oracle MERGE INTO语法。对我来说,这是个秀场止步器,在那之后,我不再以为MySQL可以帮助我。
回答
MySQL中的一切似乎都比MSSQL更接近金属,并且文档以这种方式对待它。尤其是对于优化,我们需要了解索引,系统配置和优化器在各种情况下如何交互。
"优化器"更多是解析器。在MSSQL中,查询计划通常令人惊讶(通常很好,有时则不是)。在MySQL中,它几乎按照我们期望的方式完成了我们要执行的操作。这意味着我们自己需要对可能的各种实现方式有深刻的了解。
不是围绕良好的TRANSACTION模型(默认的MyISAM引擎)构建的。
文件系统设置是问题。
所有数据库配置都是问题,尤其是各种缓存大小。
有时似乎最好将其视为临时的,荣耀的伊萨姆。科德(Codd)和伊达(Date)在这里没有太大的分量。他们会毫不尴尬地说。
回答
两者都是DBMS的产品Sql服务器是一个商业应用程序,而MySql是一个opensouces应用程序。这两个产品都包含类似的功能,但是sql服务器应用于企业解决方案,而mysql可能适合较小的实现。如果我们需要恢复等功能,复制,真正的安全性和重要性,我们需要sql server
与SQL Server相比,MySql占用更少的磁盘空间,并使用更少的内存和cpu
回答
这里的许多评论听起来更像是宗教辩论,而不是现实生活中的陈述。
我已经使用MySQL和MSSQL多年,并且都是不错的产品。
我主要根据我们正在使用的环境选择MySQL。大多数开源项目都使用MySQL,因此,如果朝这个方向发展,则选择MySQL。如果我们使用.Net进行开发,我会选择MSSQL,不是因为它要好得多,而是因为那是大多数人所使用的。
我目前实际上在一个将ASP.NET与MySQL和C#结合使用的项目中。它工作得很好。