Skip to main content

RAID Subsystem in Microsoft dynamics Ax

RAID Subsystem in microsoft dynamics axapta

With an ERP system such as Microsoft Dynamics AX 2009, the database server generally stores a very large amount of important data for the business. If this data is unavailable for any length of time, the business could experience
significant financial losses. Using a Redundant Array of Independent Disks (RAID) can help reduce the possibility of this loss occurring. Another important aspect for a database server is fine tuning for optimal performance. A RAID disk subsystem can also be used to help achieve this goal.
RAID refers to a group of two or more disks managed as a single unit to store the data together with additional, or redundant, information to provide recovery if there is a disk failure. Usually a failed disk in a RAID system can be replaced while the server is still running. This is one benefit of RAID.

Read/Write Performance - Hardware RAID controllers divide read/writes of all data from Windows and applications such as Microsoft SQL Server into slices (usually 16 KB - 128 KB) that are spread across all disks participating in the RAID array. Splitting data across physical drives distribute the read/write I/O workload evenly across all physical hard disk drives participating in the RAID array. This increases disk I/O performance because the disks participating in the RAID array are all kept equally busy, instead of some disks becoming a bottleneck because of irregular distribution of I/O requests.

Fault Tolerance - RAID provides protection from hard disk failure and accompanying data loss with two methods: mirroring and parity.
There are many types of RAID configurations; each is called a RAID Level, but only some RAID levels typically used with Microsoft Dynamics AX 2009.

RAID 0RAID 0, which is not recommended for use with Microsoft Dynamics AX 2009, is typically defined as a group of striped disk drives, without parity or data redundancy. RAID 0 arrays deliver the best data storage efficiency and performance of any array type

RAID 1RAID 1 is also known as disk mirroring. This is merely a pair of disk drives that store duplicate data, but appear to the computer as a single drive. All writes move to both drives of a mirrored pair so that the information on the drives is kept identical. However, each drive can perform concurrent, independent read operations. Mirroring therefore doubles the read performance of a single nonmirrored drive, while the write performance is unchanged. RAID 1 delivers the best performance of any redundant array type

RAID 5RAID 5 is also known as a Rotating Parity Array. RAID 5 works by striping data and parity across all the drives. Typically RAID 5 arrays offer similar read performance as pure striping, although writes are slower because the parity information is updated every time. If one hard disk fails, it merely has to be replaced with a new one of equal or larger size and it rebuilds from the parity on the remaining drives.

RAID 0+1RAID 0+1, is a dual-level RAID and achieves a balance between the increased data availability of RAID 1, mirroring, and the increased read performance of RAID 0, striping.
Do not to confuse RAID 0+1 with RAID 10, they work differently and RAID 0+1 is what is recommended
For maximum performance configure the database server such as the following example:
• Two disk RAID 1 for the operating system and database software
• A small, four disk RAID 0+1, or two disk RAID 1 for database logs
• A larger RAID 0+1 for the main database files o To reduce cost, swap out the RAID 0+1 for a RAID 5. However,
this will result in slower performance.

Popular posts from this blog

Code to get customer Primary Address in Ax 2012

Below Code to get customer Primary Address in Ax 2012. CustTable custTable_P; DirPartyTable dirPartyTable_P; DirPartyLocation dirPartyLocation_P; DirPartyLocationRole dirPartyLocationRole_P; LogisticsLocation logisticsLocation_P; LogisticsLocationRole logisticsLocationRole_P; LogisticsPostalAddress logisticsPostalAddress_P; LogisticsPostalAddress primaryAddress_P; while select custTable_P where custTable_P.AccountNum =='ED_01029' join dirPartyTable_P where dirPartyTable_P.RecId == custTable_P.Party join dirPartyLocation_P where dirPartyLocation_P.Party == custTable_P.Party && dirPartyLocation_P.IsPrimary==NoYes::Yes join dirPartyLocationRole_P where dirPartyLocationRole_P.PartyLocation == dirPartyLocation_P.RecId join logisticsLocationRole_P where logisticsLocationRole_P.RecId == dirPartyLocationRole...

Table lists which can have large number of records in Ax 2012

If you are facing database or application performance issue then you can check these tables that may have large number of records. ECORESPRODUCTVARIANTDIMENSIONVALUE INVENTBATCH ECORESPRODUCTMASTERDIMENSIONVALUE ECORESPRODUCTMASTERDIMENSIONVALUE ECORESPRODUCT ECORESPRODUCTTRANSLATION ECORESPRODUCT ECORESPRODUCTVARIANTDIMENSIONVALUE INVENTDIMCOMBINATION ECORESRELEASESESSIONPRODUCT ECORESRELEASEPRODUCTLEGALENTITY INVENTSUMLOGTTS INVENTCOSTLISTPARM GENERALJOURNALACCOUNTENTRY GENERALJOURNALACCOUNTENTRYZAKAT_SA SMMTRANSLOG LEDGERENTRYJOURNALIZING DIMENSIONFOCUSBALANCE MARKUPTRANS INVENTTRANSPOSTING INVENTREPORTDIMHISTORY SALESPARMLINE SOURCEDOCUMENTLINE INVENTTRANS TRANSACTIONLOG INVENTTRANSORIGIN INVENTSETTLEMENT SALESPARMSUBTABLE SALESPARMTABLE SOURCEDOCUMENTHEADER SALESPARMUPDATE SQLSYNCINFO GENERALJOURNALENTRY SUBLEDGERVOUCHERGENERALJOURNALENTRY CUSTSETTLEMENT SMMACTIVITYPARENTLINKTABLE INVENTSUMDATETRANS LEDGERTRANSSTATEMENTTMP DIMENSIONFOCUSLE...

Code to get Invoice settlement data for customer in ax 2012

This is simple Code to get Invoice settlement amount data for customer payment in ax 2012. This data is after posting of data. select sum(SettleAmountCur) from custSettlement where custSettlement.TransRecId == custtrans.RecId If you want get settlement amount before posting than you can refer spectrans table.The table SpecTrans contains all the transactions marked for settlement for payment journal. while select spectrans join custtransopen join custtrans where spectrans.SpecCompany == ledgerjournaltrans.DataAreaId && spectrans.SpecTableId == ledgerjournaltrans.TableId && spectrans.SpecRecId == ledgerjournaltrans.RecId && spectrans.RefCompany == custtranssopen.DataAreaId && spectrans.RefTableId == custtranssopen.TableId && spectrans.RefRecId == custtranssopen.RecId && custtransopen.RefRecId == custtrans.RecId && custtransopen.AccountNum == custtrans.AccountNum { info...