We recently upgraded from Nav 2.6 to 4.01 and converted to SQL from a native Nav database. Over the past few months we have noticed some performance issues. We do not have any SQL DB admins onsite so I have been asked to do the investigation and make a recommendation on how to increase the DB performance.
Here is our current hardware/software configuration:
- We have a dedicated server for SQL running SQL Server 2000 on Windows 2003 Server SP1 Enterprise edition.
- 16 GB (mirror set housing the OS)
- 72 GB (5 disk RAID 5 - housing the SQL DB)
- 4GB RAM.
- Dual 3.0 Ghz processors
We have 45 users maximum on a 30GB DB. At this point in time we do not have any maintenance routines setup in SQL. We do daily backups and shrink the DB weekly.
After investigating this is what I plan to recommend.
- leave cpu's and RAM as is
- 16GB (mirror set for OS)
- Setup 2 disk RAID 1 for SQL log files (size to be determined)
- Setup 6 or 8 disk RAID 10 for SQL data files (size to be determined)
- disable any processes that are not needed
- setup weekly maintenance\reindexing routines
I'm a programmer and not real handy when it comes to hardware configuration so can anybody comment on whether this would be a good configuration or offer suggestions on a better course of action?
Thanks.
0
Comments
Consider using the SQL Perform tools to create the maintenance plans, and further analyze any remaining performance issues. I like those tools because they are SQL Server tools that you can use to fix issues inside NAV. It doesn't make any changes to the SQL Server database that have an impact on the NAV objects, so you can keep developing the database without having to redo any SQL Server routines.
RIS Plus, LLC
Upgrade client from 4.0 SP1 to 4.0 SP3. You will have a performance increase in SQL Server.
I would put SQL data in RAID 1 instead of RAID 10.
Analyse Indexes if you need to rebuild indexes more than weekly.
Freelance Dynamics AX
Blog : http://axnmaia.wordpress.com/
RIS Plus, LLC
Thanks for the tips everyone.
In addition to what I mentioned above, we are planning on upgrading to 5.0 once the tools become available. (end of April I believe)
I have a question about SQL data on RAID 1 as opposed to RAID 10. From what I have been told by our network admins as well as read on different forums is that read and write speeds to a RAID 10 is much quicker then RAID 1 due to the ability to stripe across multiple drives. Is this not true?
http://www.microsoft.com/technet/prodte ... op-10.mspx
I native I always got better performance with RAID 1 (don't ask me why)
Freelance Dynamics AX
Blog : http://axnmaia.wordpress.com/
80% is in application design and indexes. Seek profesional help to solve that first.
RIS Plus, LLC
Application can be a bottleneck. Don't forget end users.
Training end users is also important. Some users make filters that can kill a db.
Freelance Dynamics AX
Blog : http://axnmaia.wordpress.com/
RIS Plus, LLC
More RAM, and 64 bit so you can use it all.
For two reasons,
1/ Navision is good at managing its own striping. It "understands" Navision tables, and how to best stripe them.
2/ And most importantly Navision is able to dedicate a separate Commit cache for each individual spindle set, ONLY if it knows that they are separate, i.e. separate drives, thus you will have a separate slave.exe for each.
Putting all this on one drive (even if RAID 10) in Native will never be as good as individual drives.
SQL Server 2000 Enterprise does not fully utilize RAM above 2GB.
Navision allows you to specify which Navision indexes and SIFTs not to maintain in SQL Server - which can bump up performance.
You can also look at doing a technical upgrade to Nav 5 (replaces executables only) - and should work better with SQL Server 2005 64 bit.
http://mibuso.com/blogs/davidmachanick/
Let me have a go ...
45 users, 30Gb DB: I would go for minimum 2CPU's (Dual Core) and 4Gb RAM. This is also what SQLPerform recommends.
It is indeed very important that the Transaction Log is on a dedicated RAID 1. Why? Because it writes everything directly to the log ... and then it's important the the "HD-needle" is always at the right place to start writing. Putting the DB files on a RAID10 is the best option, but only if you have a good RAID controller, or a very good SAN configuration ... don't use NAS!
You could go for a dedicated drive for tempdb, allthough this is peanuts, because NAV doesn't really use tempdb a lot.
What hasn't been discussed yet (I think ... only diagonally read the thread :oops: ) ... are the auto-option. Don't auto-maintain the statistics, don't auto-maintain the indexes. I would do this on a daily basis (if possible). Create a daily job to do this maintenance.
Also use a maximum degree of paralellism = 1. For NAV, this should be the best option.
Off course, if you have the option, go for the 64 bit version (OS and SQL) .
Eric Wauters
MVP - Microsoft Dynamics NAV
My blog
Be careful with those settings if you do not have a proper maintenance plan. Otherwise you wil kill your server. Always make sure your statistics are up to date, if not via maintenance then use the autoopions since it is better than nothing at all.
DOP (Degree of Parallelism) needs to be swiched sometimes, because sometimes you do want it. Also when you run tools like Crystal reports you might need it.
A sugested maintenance plan can be that of SQL Perform.
No PM,please use the forum. || May the <SOLVED>-attribute be in your title!
Sure, but you only do that at night when everyone is off the system and you are importing new objects, so it wouldn't really help the live system.
Considering that the biggest cost these days is rack space for drives, I would say the space and slots woul dbe better used for Database.
No PM,please use the forum. || May the <SOLVED>-attribute be in your title!
RIS Plus, LLC
Yes true, so I guess there will be special cases where it makes sense to have a separate TempDB, but I think that for the vast majority, that disk would be better spend on DB.
A dedicated LOG is indeed much more important. I notice it again now, as I'm tuning a big database with Mark ... .
Eric Wauters
MVP - Microsoft Dynamics NAV
My blog
But it can become one if the DB has no window (or very limited) in which you can do an indexrebuild.
In this case it CAN be usefull to have it's own drive just for the indexrebuild.
In general on the same drive of the system is already good enough because the system-drive is not used a lot.
No PM,please use the forum. || May the <SOLVED>-attribute be in your title!
No, could you please post a link?
Thanks.
RIS Plus, LLC
But the window you need to do it will probably be smaller.
No PM,please use the forum. || May the <SOLVED>-attribute be in your title!
atm im having 6 trans/sec in tempdb vs 43 trans/sec in the Navidb on a dedicated Navi SQL server
But i do agreed with that it should be one of the less important areas. Keeping those data and indexes updated and sorted is main priority.
[/quote]
I'd also be very very careful of involking the maxdop 1 option - doing this stops your backups, index rebuilds and other maint options running in parallel ( talking ent edition here )
If you don't have a dba then leave sql options "out of the box" unless you really really know a good reason not too.
I'd advise checking out the SQL server whitepapers on best practices
http://technet.microsoft.com/en-us/sqls ... 31794.aspx