Microsoft folks just LOVE to belittle MySQL. They call it fake and list all of the things which it didn’t used to be able to do(often citing facts which only apply to 3.x versions or 4.0 versions, but 5.0 is now the most recent). I’m no MySQL fan either. I prefer Postgresql.
However, this isn’t a database comparison post. This is a bitch about “the power that is” Microsoft SQL Server. I was going to refrain from bitching in hopes that 2005 would be better, but in this case it has the same limit! 8060 bytes per row (actually 8039, the Microsoft documentation LIES!) Yet according to the Launch event which I just attended, MSSQL has sold more licenses than Oracle and DB2 combined. I guess that is mostly because of all the MS Access upsizers and how cheap the MSSQL std. license is. It sure doesn’t seem to be because of any technical decisions. I could not find any information quickly googling for maximum bytes per row for Oracle.
I am starting to understand why the DBAs here are so anti-MSSQL and so pro-oracle. I hate oracle mostly because I find it cumbersome to use, I never worked with TOAD which seems to be the DBA’s preference, but I’m also not a DBA, so I never had the need. I’m a programmer whose footsteps into the realm of dba is intentionally minimal. I prefer the excellent readline history and online help of Postgresql’s psql. \h and \? are my best friends and so are ctrl-r and ctrl-p in emacs readline mode.
MySQL row size limits depend on the table type, for example 65,534 for MyISAM with BLOB and TEXT fields not counting toward that (they are stored elsewhere). I’m not sure what the max row size for InnoDB tables is.
I prefer the rediculously high size maximum for a row in Postgresql. The size is 1.6TB. That isn’t a typo on my part, but maybe the Postgresql FAQ is incorrect. Either way I would hate to see the speed of a table scan on a table with rows that size. 🙂 I knew I liked Postgresql, but this is just more fuel for me.
God help me show my fellow programmers the light. I want SQL standard EXCEPT. I want to use temporary tables in triggers, I want practically unlimited row lengths.
You do know that TEXT and BLOB data types aren’t counted towards your row size in MSSQL, right?
If you’re making database rows with more than 8k of data, you should probably re-evaluate your database structure.
It’s interesting that you should point out how people do inappropriate comparisons between products to make a point. However, it is usually Linux people comparing their latest build to MS Windows Server 2003 and quoting problems that existed back in Windows 3.1! Linux (not BSD people I might add) seem to need to MS bash – a little reciprocation is not unexpected.
Back to the point, you may want to store more than 8k for ‘personal’ information, but it is unlikely.
I did some test vectors on SQL Server to 2005 to MySQL 5.0 and found ‘My’ to be lagging in speed a little still – though I needed 100,000 rows before this became apparent.
‘My’ is great for read-only applications, or where updates are minimal (user forum posts etc) but on huge dynamic databases (city financial) I would still go a more commercial route. (Oracle etc)
Let the flaming commence.
Nicholas, that is not absolutely true, if you do not change default settings, then i think first 8k bytes are stored on the same page and only the remaining bit is on own pages that you have then to access using special “binary” way.
Up to 8k chars you can select directly with select statement.