• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

M$ SQL Server vs mySQL

groovin

Senior member
SQL server looks really easy to set up and maintain. Is mySQL really that much harder? I would also imagine that mySQL follows in the tradition of opensource software... more secure, stable, and better performing than the M$ counterparts.

has anyone dealt with both and is able to give some kind of comparison? thanks.
 
I only have direct experience with mysql. There are some nice tools for creating and modifying databases, so once you have the setup, users, and permissions done, there is not a lot of command line stuff you must do.
Both Db's need to be patched and maintained for security problems that arise, I would not say that mysql is necessarily more or less secure.
I will ask my friend, who had to set up mssql for his senior project in CS. He got me started on mysql, so he may have some good insight to differences.
 
SQL Server isn't really hard to maintain if you know what you're doing. There are a lot of little steps, though, that you can miss that will really affect your performance and database integrity if you're not careful. Also, depending on what you're doing with the databases, SQL Server can become very complex if you're dealing with 5 9's of uptime. People get paid decent money to make enterprise-level databases available all the time.

I don't have any experience with MySQL, but database design and administration can take up a lot of time.
 
Like many of the issues involving computer affairs there is no clear cut answer it depends on the magnitude and the nature of you planning to do.

If you really want to know prepare for a lot of reading. Type: SQL Server vs. mySQL into Google and you will be amazed.

Example for simple analysis concerning one small issue (clicks and scrolls down to the table). .UDF vs. stored calculations.

General Analysis here: Server Databases Clash.


I own MS SQL, but at the moment I am using mySQL since it is good enough for my purpose, and it is installed on my Hosting service.

 
thanks for the input everyone,

skyking, i appreciate any info you can post from your friend

jackmds, i did a search like that on google before i posted this thread. there were lots of opinions, but i thought id ask this forum as well since there are so many qualified opinions on here.
 
MySQL and SQL Server aren't really the same product. SQL Server is a full fledged RDBMS while MySQL is missing many features that real RDBMS's take for granted. If you're looking for a free RDBMS I would suggest PostgreSQL.
 
Quote from: http://www.bigredswitch.com/blog/archives/2002/10/21/000058.html

?Ken Rawlings is bothered by the cost of .NET compared to OpenSource solutions. The comparison seems unfair because the greatest cost is SQL Server vs. MySQL. These are not fairly comparable because SQL Server is a full RDBMS (e.g. transactions) and people in the market for SQL Server will not be comparing it to MySQL. So you really have to compare .NET/SQLServer to something like Linux/Apache/Oracle and the price difference disappears.?

RDBMS means Relational Data Base. I.e. the ability to combine numerous amounts of independent DBs to one cohesive source of information. MYSQL is seriously lacking in this area.

As I said in my previous post comparison like this are meaningless unless you define your needs first, and choose accordingly (it is not like comparing two video cards).

What is PostgreSQL? Here: http://www.postgresql.com/

In general PostgreSQL is not as popular as mySQL because it is harder to use.

 
As others have said, MySQL cannot compare to Oracle and Microsoft SQL Server because they are true RDBMS's while MySQL is more of a souped-up Access. What are you going to be using the database(s) for?
 
Triggers, Stored Procedures and Transactions come to mind first, although I'm not a DBA so I don't know all the differences. I believe MySQL will have atleast transactions in 4.x, but I don't know about the rest.
 
Personally I would not use mysql for any projects... I've worked with MS SQL Server for over a year now and find it
to be a very powerful/robust DBMS. Since I am using it at work I don't have to flip the bill for it though... For my personal
DB projects I am using postgres because it offers everything MS SQL Server does and it's free!
 
if you're wary about managing mysql through command line, there are many tools that will allow you to manage mysql through a nice GUI. An example is mysqlstudio.

MS SQL can be complex to manage, especially if you're running mission critical databases that requires high uptime and stability.

Our company uses MS SQL for internal databases. mysql is more popular for webhosting services as it is free and runs excellent in unix.

eRr
 
i am not squeemish at all about command line management, but in the interest of saving time (and money) a GUI can be used, then thats great too.

my database needs wouldnt be too complex... inventory, PO's, clients, contacts, etc. permissions on certain parts of the dbase would be great, and the ability to put some of it online as well.

if i were to use mysql and then a year or two from now decide that i do need all the features of ms sql, how hard would it be to switch between the two?
 
Q. What is SQLyog ?

A. SQLyog is a very fast, compact and simple to use GUI tool to manage your MySQL server. The software is primarily for the users who work with MySQL during the development process.


Here

Eraser.
 
thanks, you guys are all awesome.

how well would mysql work with an access front end? does anyeon have any experience with this?
 
One thing to note is that very rarely does someone need to ask the question "MySQL vs. MS SQL?"

If you can honestly ask that question, then you don't need the laundry list of things that mysql doesnt offer. Actually whats annoying is, it means you might not know that you need them, and when you find out later it'll be a pain to move.

Generally I follow these rules

MySQL-
If one and only one application is going to write to the database
An overwhelming percentage of this databases operations will be reads (>95%)
The complexity of the database will not be great (fewer than 10 tables, mostly simple two-table joins)
And the accuracy of the data is not deadly critical (say 1% margin of error on all your calculations like "total sales")

You'll note this makes it perfect for small and simple web applications. Hence its popularity in that market.

MS SQL -
If multiple applications are going to be writing and reading from the database
The database is highly normalized, with multiple complex joins being employed (often through views to simplify applications)
Failover clustering needs to be implmented.

IMHO one of the biggest distinctions is multiple application access. There are some things like check constraints, stored procedures, and triggers which you absolutly need to build some logic into your database if mutiple applications are going to be using it. Otherwise you would have to waste time building all that logic into each application, and the risk of bugs, errors, version differences, etc is to much.
However if you have just one application using it (as is often the case in web apps), you can build all that logic into your application as you'll only need to code it once. In that case it doesnt matter so much that the database doesnt support things.

Another issue is complexity. MySQL does great for simple 1 - 4 table aplications with mostly non-joined queries. It falls down pretty fast if you get more complex that that. Both in performance, and in feature support. Subselects, and complex joins aren't even possible, and check constraints & true referential integrity aren't available. The former makes apps more complex, and the later makes data less trustworthy.

Clustering is another perk to MS. It can be done with mysql, and I have set it up in several production servers but its a custom build solution with a fair number of issues. And it also is somewhat odd because fundamentally if your data is that important you probably also want features like transactions in your RDBMS, so you wouldn't be using mysql.
With MS its a very well documented very easy thing to do, and with much better support for shared storage. And most of all its an intergrated process, not 20 different scripts and daemons to figure out.

Keep in mind there is the other ultimate concern. MS can start to cost you a pretty penny fast as you need more and more servers.

ok, enough rambling

[edit]btw this is all relevant to mysql 3.23.* People can nitpick about alternative table types and the new stuff in 4.0, but frankly one of the things a business has to understand first about open source is that just because its been hacked in somewhere, doesnt mean its something you want to jump into relying on. You gotta play it more conservitive than that if you plan on really relying on the software or system.[/edit]
 
[edit]btw this is all relevant to mysql 3.23.* People can nitpick about alternative table types and the new stuff in 4.0, but frankly one of the things a business has to understand first about open source is that just because its been hacked in somewhere, doesnt mean its something you want to jump into relying on. You gotta play it more conservitive than that if you plan on really relying on the software or system.[/edit]

The only difference between open and closed software is with open softare you know what's been hacked in, with closed you have to trust the developer that it was designed from the beginning.
 
Originally posted by: Nothinman
The only difference between open and closed software is with open softare you know what's been hacked in, with closed you have to trust the developer that it was designed from the beginning.

I wont say that the same isn't true for closed source software. I'm off the "wait for the first service pack" opinion with microsoft stuff. But simply put, with its release-early-and-release-often development methods open source is more prone to having features which haven't really been tested completely yet.

What I mostly meant by my comment was, and this everyone agrees is true, you can't really trust mysql4 or innodb right now. Mysql zealots will nitpick and claim there is support for transactions or foreign keys using them though.

bart
 
I wont say that the same isn't true for closed source software. I'm off the "wait for the first service pack" opinion with microsoft stuff. But simply put, with its release-early-and-release-often development methods open source is more prone to having features which haven't really been tested completely yet.

Again, the only difference is that you know what has had limited testing, with MS SQL Server you're taking their word for it.

What I mostly meant by my comment was, and this everyone agrees is true, you can't really trust mysql4 or innodb right now. Mysql zealots will nitpick and claim there is support for transactions or foreign keys using them though.

I don't know enough about MySQL to say either way, but MySQL has never claimed to be a full RDMS that competes with SQL Server or Oracle. If you want a free RDBMS PostgreSQL is probably you're best option.
 
Originally posted by: groovin
thanks for the input everyone,

skyking, i appreciate any info you can post from your friend

jackmds, i did a search like that on google before i posted this thread. there were lots of opinions, but i thought id ask this forum as well since there are so many qualified opinions on here.

My friend is hammered at school now, and as you can see, you got a wealth of information from the forum members, as usual😀

 
Postgres is also much slower on larger databases. Postgres is also not nearly a true RDBMS. It doesn't offer SP's or Triggers, but it does allow for functions.

The syntax from the command line is much more difficult in psql starting out----but it's easy to get used to. Personally, I've used both MySQL and Postgres gui tools (almost all of them) and I always end up going back to the command shell. That's how I learned em both, and they're my favorite. phpmyadmin and the same tool for postgres work well though through a web interface.

As far as comparing MySQL to a true RDBMS, in the real world there is NO comparison. MySQL doesn't enforce the Atomicity of transactions, nor does it support row level locking ( a default setting in MsSQL and Oracle), nor does it support SPs or Triggers.

Mysql also has a 4GB DB Size limitation and Postgres has a 64 GB limitation as of the last versions I used.

If you're using Mysql or Postgres in a multi-user environment where multiple reads/writes can be committed to the database----you'll have to write your own mechanism for locking records to avoid writing collisions.

Pre Mysql 4.0 the biggest difference between Mysql and Postgres was the lack of support for foreign keys in Mysql. While you can still use Lookup records in much the same way---mysql doesn't enforce an once of a DB Model on the DB Side. If you have a "related" table in MYSQL there's nothing preventing you from inserting a dubious record in your lookup field other then your own code.

Postgres does do the job of handling foreign keys fairly well, and it does allow for user defined functions. However----on larger databases---like the last project I worked on with it we had a 15 GB db, the performance differential is very noticeable. I've lost my timing chart that I created for Posgres vs MSSql on that project---but in some cases with multiple inserts and deletes with cascading constraints----Postgres was 300% to 400% slower. [edit] ON massive updates with multiple join queries to the reporting tables (all dynaically created on each call of a report) postgres was sometimes 2000% - 3000% slower. Granted---that was an unfair test for postgres as the entire process involved a table delete by key, multiple query build to temp recordset, followed by a massive row by row insert. I could have really kicked postrgres's arse w/ MSSql if I had moved that code to all Sp's and triggers---but I just tested it from a web client keeping all the recordsets local to the web server. It was also an unfair test in the way that the reports worked too---they weren't being pulled from SPs...but on large reports, the Crystal Engine had to pull all of the results for each report, and then pull each subreport results as well----and the crystal pull is multi-threaded....so even the rendering favored MSSQL in that case.......[/edit]

But---all in all----there are clear cases where Mysql is a good alternative. And cases as well where Postgres fits the bill. THe company I was at was a non-profit company, and they saved a buttload using Postgres instead of a true RDBMS----but a year after I left they convert4ed to oracle b/c the database size & the performance drop-down was too much for the 40 or so users to deal with.
 
"If you're using Mysql or Postgres in a multi-user environment where multiple reads/writes can be committed to the database----you'll have to write your own mechanism for locking records to avoid writing collisions."

they dont do that by their default design? wow, im surprised. i thought locking records would be a normal feature of all dbases.

What happens if a mysql dbase hits the 4gb limit?
 
http://www.mysql.com/doc/en/Table_size.html
MySQL Version 3.22 had a 4 GB (4 gigabyte) limit on table size. With the MyISAM table type in MySQL Version 3.23, the maximum table size was pushed up to 8 million terabytes (2 ^ 63 bytes).

3.23.1 was released august 9th, 1999.

Also, while mysql does not do row-level locking (in the default myisam table type), it does lock. At the table level. So concurrent updates will not cause any sort of corruption. One just has to wait for the other to finish.

bart
 
Back
Top