我是一名ASP.NET开发人员,他已经使用Microsoft SQL Server
了我所有的数据库需求(无论是在工作中还是个人项目中)。
我正在考虑为我的一些个人项目尝试LAMP堆栈。
MySQL
和之间的主要区别是SQL Server
什么?使用存储过程是一种常见的做法MySQL
吗?
您有什么建议或资源可以帮助我进行转换吗?
对于两者都有经验的人,是否缺少任何功能MySQL
?
您必须注意的一件事是 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
这里的很多评论听起来更像是宗教论点,而不是现实生活中的陈述。我已经使用 MySQL 和 MSSQL 多年,它们都是很好的产品。我会主要根据您正在使用的环境选择 MySQL。大多数开源项目都使用 MySQL,所以如果你朝这个方向发展,MySQL 是你的选择。如果您使用 .Net 开发一些东西,我会选择 MSSQL,不是因为它更好,而是因为这是大多数人使用的。我实际上目前正在使用带有 MySQL 和 C# 的 ASP.NET 的项目。它工作得很好。
我不敢相信没有人提到 MySQL 不支持 Common Table Expressions (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 的单一理由。以前的问题是成本,但 SQL Server 2005 Express 是免费的,并且有许多网络托管公司提供完整的 sql server 托管服务,每月不到 5.00 美元。
MSSQL 更易于使用,并且具有 MySQL 中不存在的许多功能。
MySQL 中的一切似乎都比 MSSQL 更接近于金属,并且文档是这样处理的。特别是对于优化,您需要了解索引、系统配置和优化器在各种情况下如何交互。
“优化器”更像是一个解析器。在 MSSQL 中,您的查询计划通常是一个惊喜(通常是好的,有时不是)。在 MySQL 中,它几乎按照您期望的方式执行您要求它执行的操作。这意味着您自己需要对可能完成的各种方式有深入的了解。
不是围绕良好的 TRANSACTION 模型(默认 MyISAM 引擎)构建的。
文件系统设置是您的问题。
所有的数据库配置都是你的问题——尤其是各种缓存大小。
有时最好将其视为临时的、美化的伊萨姆。Codd 和 Date 在这里没有太大的分量。他们会毫不尴尬地说出来。
我认为需要注意的主要事情之一是 MySQL 5.0 之前的版本没有视图、触发器和存储过程。
更多内容在MySQL 5.0 下载页面中进行了解释。
@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 |
+-----------------------------------------------------------------+
对于这个答案所涉及的扭曲。
至于“更容易使用”的评论,我想说的是它们是不同的,如果你知道一个,学习另一个就会有开销。
两者都是 DBMS 的产品 Sql server 是一个商业应用程序,而 MySql 是一个开源应用程序。两个产品都包含类似的功能,但是 sql server 应该用于企业解决方案,而 mysql 可能适合较小的实现。如果您需要恢复之类的功能,复制,粒度安全和重要,你需要sql server
MySql占用磁盘空间少,使用内存和cpu比sql server少
有人对从 SQL Server 到 MySQL 的数据库“端口”有任何好的经验吗?
这应该是相当痛苦的!我将 MySQL 的版本从 4.x 切换到 5.x,并且各种语句不再像以前那样工作。查询分析器已“改进”,因此以前针对性能进行了调整的语句将不再按预期工作。
从使用 500GB MySQL 数据库中吸取的教训:这是一个微妙的话题,其他任何事情都不是微不足道的!
@Cebjyre。无论是 Enterprise Manager 还是 Management Studio,IDE 都比我迄今为止看到的 MySQL 更好。我说“更容易使用”是因为我可以在 MSSQL 中做很多事情,而 MySQL 没有对应物。在 MySQL 中,我不知道如何通过简单地查看查询计划或查看统计信息来调整查询。MSSQL 中的索引调优向导对丢失或错位的索引进行了大部分猜测工作。
MySQL 的一个缺点是没有数据库的最大大小。数据库只会增加大小,直到填满磁盘。想象一下,如果这个磁盘正在与其他用户共享数据库,突然他们的所有查询都失败了,因为他们的数据库无法增长。我很久以前就向 MySQL 报告了这个问题。我认为它还没有修复。
花一些时间使用 MySQL,从 MSSQL 到 MySQL 语法 POV,我一直发现自己的能力有限。
在更新期间引用同一个表时更新表有一些奇怪的限制。
此外 UPDATE FROM 不起作用,上次我检查它们也不支持 Oracle MERGE INTO 语法。这对我来说是一个表演停止者,我不再认为在那之后我会用 MySQL 取得任何进展。