| MyISAM vs InnoDB on Windows with limited memory [message #2563] |
Thu, 31 January 2008 09:12  |
Pulse77 Messages: 6 Registered: August 2007 |
Junior Member |
|
|
Hi,
We have a server with the following specs:
Windows Server 2003 Standard
1 x Quad Core Xeon 1.86Ghz
3Gb RAM (Actually 5Gb, but windows can only use 3gb)
Raid 5 - SATA 250Gb
All the tables and database being used is about 40Gb with one busy table being 13Gb
We cannot set the InnoDB buffer larger than 640Mb, otherwise the DB does not start.
Most of the heavy traffic tables are bigger than 640Mb, and this just tells me that the tables will not one fit into the innodb buffer.
Would I be better off converting all tables to MyIsam, or should I leave it on Innodb, I am currently not happy with the performance at all, and we are running a failry busy website.
Any suggestions, and please don't tell me to install Linux, its just not an option at this stage. We have to be on windows for a while longer since a lot of applications was developed in .NET 
I need to get the most out of the system I have and would love some tips in this area.
Thanks a million in advance
|
|
|
|
|
| Re: MyISAM vs InnoDB on Windows with limited memory [message #2569 is a reply to message #2568 ] |
Thu, 31 January 2008 14:02   |
sterin Messages: 324 Registered: March 2007 Location: Sweden |
Senior Member |
|
|
| Pulse77 wrote on Thu, 31 January 2008 18:49 | I suppose AWE is an option, but I would need to re-compile mysql for that and that scares the living daylights out of me. (any guides out there)
|
That is true and I can understand your point.
| Pulse77 wrote on Thu, 31 January 2008 18:49 |
But Will AWE help a lot, concidering that the tables will still be larger than all the available memory
|
I would say probably not as much as you hope for.
| Pulse77 wrote on Thu, 31 January 2008 18:49 |
We have a lot of relational tables, but no foreign keys, we do have indexes on all referenced fields, will creating a foreign key speed things up more? or will it just help with the integrity of the data?
|
No they just force integrity. The underlying indexes will be the same format.
| Pulse77 wrote on Thu, 31 January 2008 18:49 | If locking, transactions and foreign keys are not a problem, will myisam be better?
|
Could be since you can set the key_buffer_size to about 1GB memory and then the OS cache can use all the rest of the memory.
But at the same time starting to convert all those large tables to MyISAM will take quite a while and depending on how your application is accessing the data in the tables it might not affect that much since you still have a very large DB compared to the useful amount of RAM.
With very large DB's like yours the way out for performance is:
1. Make sure _all_ queries are optimized with correct indexes etc. If you have a query and DB that is not optimized it is very unforgiving on large amounts of data since reading from disks is so very slow compared to reading data cached in RAM.
2. More RAM
3. More RAM 
4. Faster disks
5. More disks to spread the load over
So in your case I suggest try optimize application and DB structure more if possible.
And if you have the time you could think about changing the tables to MyISAM but it will most definitely take a long time to convert them and I'm not so sure it would give such a big speed increase.
The best solution would of course be to buy a new 64bit box with a lot of RAM and change to a 64 bit OS. And then still run the application on your current box but run the DB backend on the other box, and then you can still run the .NET stuff just that they talk to the DB on the other server.
Yes it costs to buy a new server but your time is also valuable and by continuing with the machine that you have I fear that you are going to spend a lot of time that won't really give you any increase in speed.
|
|
|
|
|
|
|
|
|
|