MySQL vs. SQL Server vs. Oracle [closed]

I have always only used MySQL and no other database system.

A question came up at a company meeting today and I was embarrassed I did not know: To a developer, what earth-shaking functionality do MS or Oracle offer that MySQL lacks and which allows MS and Oracle to charge for their systems?


I think other commentators are quite right to highlight all of the extra non-core RDBMS abilities that are bundled with the commercial solutions.

Here is a matrix of Oracle editions and features that would be worth browsing just for an understanding of the "extra" features, particularly in the context of what it would cost to develop and support your own version of them (if that is even possible) on a product like MySQL: https://docs.oracle.com/cd/B28359_01/license.111/b28287/editions.htm#DBLIC116

For example, if you had a requirement that said: "Users shall be able to recover any previous versions of data that they have deleted/updated up to one week after the changes has been committed" then that implies a certain development overhead that I think would be much higher on a system that did not have a built-in feature like oracle's Flashback Query.


The pure RDBMS layers of Oracle and MSSQL offer mainly a more mature programmable environment than MySQL and InnoDB. T-SQL and PL/SQL can't be yet matched by MySQL stored procedures and triggers.

The other differences are syntactic and slight semantic differences which make things easier or harder (like top 500 versus limit/offset).

But the real killer is that there are a ton of integrated tools and services on top of the RDBMS layers of MSSQL (Reporting Services, Analysis Services) and Oracle (Data Warehousing, RAC) which MySQL doesn't have (yet).


MySQL is not free!

It is widely understood to be free, but if you are selling or distributing software packages that incorporate MySQL, it carries rather severe restrictions. If MySQL must be included in your software distribution (i.e. you are not using it only to serve remote clients), it is free only for Open Source projects or non-profit organizations. If you can manage to completely separate the database and drivers from the rest of your application, and force your customer to download and install MySQL on their own, you're probably okay.

Otherwise, it costs $2,000 / year for the "standard" edition, which is roughly comparable to the cost of licensing SQL Server.

Both are very good databases, but among SQL Server's advantages are:

  • A rich and expressive procedural language (T-SQL)
  • A better query optimizer, and better performance in write-intensive environments
  • A strong set of ancillary tools and capabilities, including a programming environment, an ETL tool (SSIS), dimensional modeling (SSAS), a reporting environment (SSRS), and a reasonably sophisticated job scheduler.
  • Interactive debugging of stored procedures and UDFs.
  • A relatively easy-to-use window-based management tool that lets you do most administration tasks in a "clicky" way.

Many people are ideologically opposed to using Microsoft tools, or being locked into a Windows environment, and I can understand that. But MySQL is NOT free for business usage, and that doesn't seem to be widely understood.

To review MySQL's licensing policy, take a look at it at their website: https://www.mysql.com/about/legal/licensing/oem/


Some other things which oracle has over mysql.

  • Queues
  • internal job scheduling
  • mature stored procedure language
  • patitioned tables
  • fine grained access control and auditing
  • strong recovery features ( eg flashback, rman, dataguard )
  • remote database links
  • application express