資源描述:
《淺談如何優(yōu)化sqlserver服務(wù)器》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、淺談如何優(yōu)化SQLServer服務(wù)器>>教育資源庫 1.數(shù)據(jù)和日志文件分開存放在不同磁盤上 數(shù)據(jù)文件和日志文件的操作會(huì)產(chǎn)生大量的I/O。在可能的條件下,日志文件應(yīng)該存放在一個(gè)與數(shù)據(jù)和索引所在的數(shù)據(jù)文件不同的硬盤上以分散I/O,同時(shí)還有利于數(shù)據(jù)庫的災(zāi)難恢復(fù)?! ?.tempdb數(shù)據(jù)庫單獨(dú)存放在不同磁盤上 tempdb數(shù)據(jù)庫是其他所有數(shù)據(jù)庫都有可能使用的臨時(shí)數(shù)據(jù)庫。當(dāng)使用selectinto、在沒建立索引的列上執(zhí)行Orderby時(shí)就會(huì)在tempdb數(shù)據(jù)庫中產(chǎn)生臨時(shí)表來存儲(chǔ)中間數(shù)據(jù)。由于建立和填充臨時(shí)表會(huì)嚴(yán)重降低系統(tǒng)性能
2、,所以在盡可能的情況下應(yīng)該為要排序的列建立索引。同時(shí),tempdb數(shù)據(jù)庫是為所有的用戶和應(yīng)用程序共享,所以如果一個(gè)用戶占據(jù)了tempdb數(shù)據(jù)庫的所有空間,則其他數(shù)據(jù)庫將不能再使用。在可能的情況下,tempdb數(shù)據(jù)庫應(yīng)該單獨(dú)放置在一個(gè)速度更快的硬盤或者RAID陣列上。分離tempdb數(shù)據(jù)庫的I/O操作以加快性能。tempdb數(shù)據(jù)庫應(yīng)該有適當(dāng)?shù)娜萘?,以滿足用戶的需要。應(yīng)該允許tempdb數(shù)據(jù)庫的空間自動(dòng)增長。如果設(shè)置為不允許自動(dòng)增長,當(dāng)查詢操作建立了超過tempdb數(shù)據(jù)庫容量的臨時(shí)表時(shí),操作將無法完成?! ∵m當(dāng)設(shè)置tempd
3、b數(shù)據(jù)庫的增長幅度,過小的增長幅度會(huì)產(chǎn)生更多的外部碎片,會(huì)占用更多的資源?! ?.避免熱點(diǎn)數(shù)據(jù)的發(fā)生 在SQLServer7.0之前,對于沒有聚集索引的表(堆集表),新插入的數(shù)據(jù)行總是放置在磁盤中表的物理結(jié)尾處。如果并發(fā)的用戶很多,同時(shí)在對表執(zhí)行插入或者更新數(shù)據(jù)的操作,這將使得十分繁忙的表的末尾有可能產(chǎn)生數(shù)據(jù)熱點(diǎn)。并發(fā)的I/O操作集中對少數(shù)頁面進(jìn)行操作,將導(dǎo)致數(shù)據(jù)庫性能的下降?! ≡赟QLServer中,新的數(shù)據(jù)行的物理存儲(chǔ)空間的分配是通過PFS頁面來進(jìn)行的。PFS頁面的管理算法將插入操作進(jìn)行分散來盡量避免產(chǎn)生數(shù)據(jù)熱點(diǎn)
4、?! ≡谠O(shè)計(jì)應(yīng)用系統(tǒng)和數(shù)據(jù)庫時(shí),要避免在自然增長的列上建立主鍵,這樣有可能導(dǎo)致熱點(diǎn)數(shù)據(jù)的發(fā)生。 4.數(shù)據(jù)類型要少 在設(shè)計(jì)表時(shí),盡可能少用數(shù)據(jù)類型。這樣一個(gè)數(shù)據(jù)頁面上可以保存最多的信息。數(shù)據(jù)頁面就少,檢索數(shù)據(jù)頁面的I/O操作就少,所以效率會(huì)高?! ?.監(jiān)控和整理空間碎片 文件空間的自動(dòng)增長提高了自動(dòng)管理性,但可能導(dǎo)致空間碎片。物理空間與數(shù)據(jù)的邏輯空間不再連續(xù)。定期的監(jiān)控和空間碎片整理有利于提高I/O性能。 6.使用主數(shù)據(jù)文件和次要數(shù)據(jù)文件 每個(gè)數(shù)據(jù)庫的一個(gè)主數(shù)據(jù)文件屬于主文件組。對于1GB左右規(guī)模的數(shù)據(jù)庫,一個(gè)數(shù)
5、據(jù)文件就夠了,如果有次要數(shù)據(jù)文件,主數(shù)據(jù)文件中有管理次要數(shù)據(jù)文件的指針?! 〔捎枚鄠€(gè)數(shù)據(jù)文件時(shí),主數(shù)據(jù)文件用于存儲(chǔ)系統(tǒng)對象和表,次要數(shù)據(jù)文件用于存儲(chǔ)用戶數(shù)據(jù)和索引。在可能的情況下,主數(shù)據(jù)文件和次要數(shù)據(jù)文件可以單獨(dú)存放在不同的磁盤上以分散I/O?! ∪绻捎枚鄠€(gè)數(shù)據(jù)文件,推薦主數(shù)據(jù)文件存儲(chǔ)系統(tǒng)數(shù)據(jù),次要數(shù)據(jù)文件存放用戶數(shù)據(jù)和索引,這樣會(huì)有助于提高I/O性能?! ?.利用文件組改善性能 在大型數(shù)據(jù)庫系統(tǒng)中,可以考慮建立文件組來管理數(shù)據(jù)文件。將表和索引通過存放在不同的物理磁盤上進(jìn)行性能監(jiān)控比較,最后得出優(yōu)化的存儲(chǔ)方案?! ?
6、.重視自動(dòng)增長和自動(dòng)收縮可能導(dǎo)致的性能問題 數(shù)據(jù)庫文件的自動(dòng)增長和自動(dòng)收縮功能對于小型數(shù)據(jù)庫的管理十分有用。但可能導(dǎo)致大型數(shù)據(jù)庫的性能問題。因?yàn)槲募淖匀辉鲩L的同時(shí)會(huì)導(dǎo)致存儲(chǔ)碎片的發(fā)生。當(dāng)文件空間變大時(shí),新分配的空間不一定和原來的空間連續(xù)。當(dāng)文件空間收縮時(shí),釋放了部分空間。然而當(dāng)文件又需要增長存儲(chǔ)空間卻不能利用原先釋放的空間,也會(huì)導(dǎo)致碎片的發(fā)生?! ?.分離系統(tǒng)數(shù)據(jù)和用戶數(shù)據(jù) 將系統(tǒng)數(shù)據(jù)庫和用戶數(shù)據(jù)庫分開存放在不同的物理磁盤上有助于改善I/O性能,有助于數(shù)據(jù)庫備份和恢復(fù)。 10.優(yōu)化索引設(shè)計(jì) 索引的設(shè)計(jì)對數(shù)據(jù)庫的
7、性能十分重要。具體不再闡述,可參見本博相關(guān)文章。 11.定期更新統(tǒng)計(jì)信息 SQLServer默認(rèn)使用基于代價(jià)的優(yōu)化,所以統(tǒng)計(jì)信息的及時(shí)更新對于查詢優(yōu)化十分重要?! ?2.定期的一致性檢查 定期對數(shù)據(jù)庫進(jìn)行一致性檢查,確保數(shù)據(jù)庫的完整性。>>>>這篇文章來自..,。