我在两种数据库都有多年从业经验,自认为比较有资格回答。
其实两种产品并不是一样的类型,mysql是单纯的数据库存储,mssql是一整套数据解决方案。如果有兴趣可以去了解一下microsoft sql server business intelligence和data mining相关的产品,以及data cube,高斯分布计算等各种features,你就会改变观念了。
mysql是互联网公司广泛使用的,免费的(最重要),容易使用的存储方案,标准做法是单纯的业务crud,核心任务是扛住qps和tps,没有存储过程,扩展函数等逻辑(从安全,性能,逻辑控制考虑)。
回到你的问题,如果要比较,那就得把sql server降级到这个角色来。单纯的crud情况下,同样的配置,它的优势有:
1. 更好的读写性能,因为和windows framework绑定一起,底层操作系统级优势。而mysql则有可能oom,被linux无差别清理掉
2. 数据可靠性更好:数据安全,一致性等
3. 存储过程。oracle和mssql都有强大的存储过程,银行系统甚至有规定凡是和资金相关的逻辑必须写在存储过程里,禁止写在应用程序里。而mysql的存储过程则一直是鸡肋。用c语言写的扩展存储过程,即运行在数据库内存中的程序代码,两个都支持,这个不在讨论范围之内
4. 方便的性能监控。打开profiler,可以在生产环境中实时看各个query的执行详情,还可以按需过滤,而且不影响系统性能
5. 方便的sql debug。这个主要用于函数和存储过程,可以设断点,单步,跳步等执行,就像程序debug一样。mysql没有ide能这样做,调试存储过程比较困难
6. 说到ide了,当然是出品过vs这种神器的微软的天下了,mssql management studio各种好用,查询管理都很方便
7. 可靠的数据库复制。做过mysql dba的应该都有体会,主要的折腾工作就是db replication,敲得最多的就是show slave status… mssql有data mirror,log shipping等多种复制方式,且都很可靠。至少我那么多年没处理过主备数据不一致的修补工作。mysql主备读写分离曾经是mysql一个优势,以前的mssql mirror备库不可读。但现在的版本已经可读了,所以不存在这个缺陷了
其实还有很多,但那样的话回答就成长篇大论了。总之选择什么数据库并不是程序员或dba来决定的,而且行业和成本。难以想象杭州或北京一个互联网startup会购买昂贵的数据库licence,即便是云计算数据库