views:

344

answers:

7

I've used both and I've found MySql to have several frustrating bugs, limited support for: IDE integration, profiling, integration services, reporting, and even lack of a decent manager. Total cost of ownership of MSSQL Server is touted to be less than MySQL too (.net environment), but maintaining an open mind could someone point out any killer features of MySql?

+2  A: 

I've used MySQL in the past and I'm using MSSQL lately but I can't remember anything that MySQL has and MSSQL can't do.

I think the most killer feature of MySQL it's the simplicity. For some projects you just don't need all the power you can have with a huge system like MSSQL. I have an UNIX heritage and find the simple configuration file like my.ini a killer feature of MySQL.

Also the security system of MySQL is much less robust but it makes the job right for most of applications. I believe MySQL it's killer itself from this point of view, and should stay that way, letting young users being introduced to RDBMS with a simple view first. If your project gets big enough that you are considering switch to a more robust system, then MSSQL can pop as a possibility.

That's what happened to me.

Augusto Radtke
A: 

MySQL probably has a lower TCO, since administration and configuration is more simple and straightforward than the Spaghetti GUI that MS SQL makes you do most of the configuration through, having to dig through hundreds of obscure properties dialogs to accomplish even basic administration tasks.

There is one area where MS SQL clearly excels over MySQL in my experience:

  • Integration with other technologies. MS SQL allows you to replicate back and forth with Oracle and MySQL databases, and provides SSIS for executing scheduled data transformations from other database servers.

There may be others, but I don't have experience with them.

Adam N
fulltext in MsSQL is external (I think it uses their desktop search engine), you need to prod it to rebuild its index after adding data. Oracle's which is a fully inbuilt engine that works as you'd expect.
gbjbaanb
That was true in SQL 2000, but SQL Server 2005 integrated better and provided a built in trigger setup which auto-updates the index when new records are inserted or updated. I believe 2008 went even further, though I haven't installed it myself.
Adam N
FULLTEXT is available in MySQL?
Till
Wow, you're right, I had never seen that before, I don't know how I missed it. It would have saved me days of manually coding fulltext searches. Thanks.
Adam N
"Spaghetti GUI" are you kidding? The MySQL administration "toolset" is a nightmare by comparison to SQL Management Studio
RobS
+1  A: 

The only thing I can think of, off hand, is locking. SQLServer has traditionally had poor locking strategy that has tripped many people up.

You should use what you prefer, ultimately. Its not as if MySQL is not good enough to compete with MS SQL, eg. Slashdot uses MySQL, so its hardly got problems with high-scalability performance.

Its killer feature though, is that it is free - you can deploy as many of them without worrying one fig about licensing issues. That's more important for the spread of software than anyone could imagine.

(TCO is a difficult thing to calculate - and is advice only ever given from paid consultants and other vested interests. Ignore that. MSSQL is expensive and MySQL is free.)

gbjbaanb
". SQLServer has traditionally had poor locking strategy that has tripped many people up..." in 14 years, this has never, ever caused me a problem.
David Lively
It depends what and how you do it - I used SQLserver with a lot of stored procedures and that worked well, used on a different company that came from an Oracle background, SQLServer was... truly terrible. It depends how you expect your queries to work, how many rows you update etc.
gbjbaanb
+1  A: 

About 6 years ago I developed a custom e-commernce website using ASP and MySQL for the database. At the time MySQL was clearly a better choice than MSDE which had built in throttling which concerned me enough to use MySQL. Also the difference in coding between using MySQL and MSDE/SQL was not that different or much of a concern.

Now all these years later I'm trying to get the code converted to .NET and even after purchasing commercial MySQL drivers from CRLab. I found that, as you hinted, the IDE integration is just not up to par.

I will say that MySQL is doing a great job even with our database tables approaching 4GB. So when I switch to MSSQL I have to go ahead and get SQL Workstation or higher ($$$), and not use SQL Express which has a 4gb limit.

All of my experience has changed the way I develop new websites. Now, unless it is expected to have a lot of traffic. I use VistaDB and then upgrade to SQL Server if needed. VistaDB is syntax and datasource compatible with SQL Server. And the best part is it is only a single file for the database and a dll for your bin folder.

That's my two cents based on my personal experience with using MySQL in ASP and now .NET.

Brian Boatright
+1  A: 

I work with MSSQL, MySql and PostGres regularly (using .net, java and PHP). One of my favorite things about about MySQL (esp. compared to MSSQL) is the ease with which you can run and restore full database backups.

MSSQL's model of using .bak files is really ugly and time-consuming (topic for another post.) But if you want to do somethign like automated testing, or automated build processes (that include building a db from scratch), MySQL can be a bit easier to deal with.

A few other points:

The management tools have gotten a lot better since the early days.

If you are interested in transactions, constraints, etc.. be sure you are defining your tables to use the InnoDB storage engine (instead of MyISAM which is designed for speed.)

I do miss MSSQL's schema generating tool, but I think there are equivalent tools out there.

We've used a Linux database server and a window's web server (for .net apps) with great success.

If you are using something like NHibernate or some other non-MS data abstraction layer, the case to look beyond MSSQL is stronger too...

Dave K
MS SQL Server uses essentially 3 types of backups: full, differential, and transaction log, which gives a tremendous amount of flexibility on how to backup, especially as database sizes grow. It can be a bit time-consuming, but when you look at having to do rapid restores of relatively large amounts of data, it works well.
K. Brian Kelley
A: 

I've been using the community version of MySQL for alsmost 99% of my project. I like MySQL is that I can deploy via Xcopy and is powerful compare to other "xcopy-able" database server. I also wrote a wrapper to start and stop MySQL & Apache (like LAMP), but with my own implemetation and addon capability

faulty
"most good SQL optimizers will also let you use syntax like..." why on earth would you do that? Stopping a mission-critical component like a database server is rarely necessary with decent tools.
David Lively
+1  A: 

Three points to consider; unfortunately the first two are contradictory:

1) .NET and MySQL were not designed to interact with one another, and there is no official support from either side. You're invariably going to encounter issues trying to use them together.

2) If portability off of Windows may ever be an issue (much .NET code runs quite nicely on other platforms via Mono), you'll want to avoid locking yourself too deeply to MSSQL. That doesn't mean not using it, but being careful that you don't rely on its particular quirks too much.

3) TCO is just a buzzword. It's complete nonsense when it's calculated by anyone other than you. Nobody can make such a calculation and honestly claim that it has any relevance outside their particular environment. There are too many factors, most of which have absolutely nothing to do with things like tool availability.

Nicholas Knight