<sub id="jznnx"></sub>

<address id="jznnx"></address>

    <sub id="jznnx"></sub>

        <address id="jznnx"></address>

          ************

          簡析大型數據庫SQL語言的性能

          導讀:搜索字段定義了索引時,SELECT語句可以利用索引進行記錄定位,從而可以快速定位到相應記錄。當SELECT語句中的條件和索引無關時,這時SELECT語句不能利用索引定位,因為仍然需要全表掃描。  2.UPDATE語句的效率和SELECT語句的性質相似,因此,UPDATE語句在執行大批量修改時,效率相當高,在對單條記錄進行修改時,如果WHERE條件上沒
          大型數據庫SQL語言的性能分析【摘 要】本文就大型數據庫中常用的SQL語言進行性能上的分析,并從數據結構上給出其關鍵數據結構和關鍵算法上效率上的分析,從INSERT,DELETE,SELECT,UPDATE結合索引給出一般大型數據庫的優化策略,并系統性的給出提高效率的具體策略。
            在當前計算機應用系統中,大型數據庫是信息系統的關鍵環節,是存儲數據的必要手段,互聯網上大多數應用數據存儲在大型數據庫中,因此,合理的掌握大型數據庫的編程,是信息系統編程至關重要的環節。但是大型數據庫的SQL語言使用,和一般的編程環節有較大的不同,這使得初級編程人員很難在短期內精通,并且難以編制高質量的代碼[1]。
            SQL語言編程與一般的語言編程有很大不同,SQL語言是過程式語言,強調對數據的操作,但是操作的方式與一般的數據操作相比又有很大不同,SQL語言是以數據庫中的數據塊為數據操作單位,因此,對于數據庫來說,成批處理數據,比單獨一條條處理數據有更高的效率,這就決定了SQL語言最好是以數據塊的方式進行編程,而非逐條記錄的方式處理數據的方式處理數據。此外,SQL語言是對數據塊進行操作,需要大量的磁盤I/O操作,因此效率是SQL需要注意的關鍵理由,設計不佳的SQL語言,使得效率極為低下,不能滿足信息系統的需要。
            以下我們逐一分析SQL最常用的四種操作數據的策略SELECT,UPDATE,DELETE,INSERT的性能。
            1.SELECT語句的效率受索引影響,索引對SELECT語句的效率起到了至關緊要重要的作用,在沒有索引的情況下,SELECT語句使用全表掃描,也就是說,對于需要查找的記錄,在全表范圍內進行查找,因此,查詢一條記錄和查詢所有記錄的代價是相當的。在有索引時,SELECT語句的執行效率取決于WHERE條件與索引的配置,當WHERE條件中的搜索字段定義了索引時,SELECT語句可以利用索引進行記錄定位,從而可以快速定位到相應記錄。當SELECT語句中的條件和索引無關時,這時SELECT語句不能利用索引定位,因為仍然需要全表掃描。
            2.UPDATE語句的效率和SELECT語句的性質相似,因此,UPDATE語句在執行大批量修改時,效率相當高,在對單條記錄進行修改時,如果WHERE條件上沒有索引,仍需要進行全表掃描,效率較低,但有索引時,會使用索引進行記錄定位,UPDATE語句和SELECT語句的差別在于,UPDATE語句對字段進行修改,如果修改的字段上定義了索引時,UPDATE語句需要同時修改索引。
            3.DELETE語句的效率和UPDATE語句極為相似,因此這二類語句同時可能涉及對索引的修改,執行的效率同樣取決于WHERE條件上是否有相應的索引結構。
            4.INSERT語句的效率在所有策略中是最高的,INSERT語句的插入策略取決于表的性質,當表是堆表時,INSERT語句總是將新記錄插到最后面,因此不需要考慮其它代價,當數據表上定義了聚簇索引時,由于表中的記錄會按聚簇索引的次序進行排列,因此插入時,會插入到表中的特定位置,當特定位置沒有空間時,會將數據塊分裂,從而保證記錄在數據塊上的有序性。
            考慮到索引在大型數據庫中的重要性,我們對索引進行分析,一般來說,索引可分為聚簇索引和非聚簇索引,聚簇索引的特點在于數據按索引的在數據塊中物理順序排放,非聚簇索引則沒有此要求。一般來說,索引的結構是B+樹,B+樹由于其高效的動態查找性能,在數據庫中應用廣泛。
            B+樹的特點在于矮而粗,B+樹由于矮小,因為查找的層次少,所以能實現極高的動態查找效率,但是B+樹同樣需要大量的存貯空間,此外B樹只對選擇性高的字段有效,選擇性差的字段無效。
            所謂索引字段的選擇性,是指能否根據選定的值,快速定位到相應的字段,而選擇性高的字段可以優先作為索引,選擇性差的字段,不宜作為索大型數據庫SQL語言的性能相關范文由寫論文的好幫手http://www.beijingfeeling.com提供,轉載請保留****.引,例如,對于班級表而言,學號是選擇性高的字段,可以根據特定的值找到相應的記錄,但對于選擇性差的字段,例如性別,當使用B+數對性別建立索引時,最多只能將記錄分為二個分支“男”“女”,因此無法利用B樹精確定位記錄,因此,建立B樹只能浪費空間,并不能提高效率。
            此外,如果數據庫中的索引建立不準確,SQL優化器可能不會使用定義的索引進行查找,因此索引必須有高選擇性,而且經常被用于查找[4]。
            SQL語句中,除了SELECT,INSERT,DELETE,UPDATE之外,關聯運算也是極為重要的操作,數據庫中的關聯運算,如果完全按語義上執行,操作極為耗時,因此一般SQL使用優化器對之進行優化處理,對于關聯語句關聯的A,B表,如果B簡析大型數據庫SQL語言的性能表在連接字段上定義了索引,那么,就可以先讀取沒有定義索引的A表,然后在A表的每個記錄上,用索引去查找B表,從而得到關聯結構。
            因此,索引在關聯運算中極為重要,是提高效率的有效手段,當二張表上沒有定義索引時,SQL優化器往往會在某張表上建立臨時索引,然后利用臨時索引進行關聯查找。
            關聯運算還和內存有關,如果緩沖內存夠,那么,關聯運算可以將表放在內存中進行關聯,這顯然大大增加了效率,而在內存很少時,只能逐一對表進行讀取,并進行關聯,效率明顯下降。
            此外,應用程序的合理編寫,對SQL影響較大,而臨時表技術,可以大幅提高程序效率,對于需要處理的數據,我們不直接在表上進行操作,而是將需要處理的數據,從大表中提取出來,放在臨時表中,因為臨時表中數據量較小,因此處理很快,這樣避開了從大表中查找數據。
            對于信息系統,在業務處理中,需要區分二類數據處理,一類是短事務處理,對于前臺進行的操作,是短事務,需要盡快處理,因為需要很高的效率,而對于數據加工如記帳來說,是長事務,需要長時間的運轉,在信息系統中,需要處理好二類不同的事務,才可能開發出良好的數據庫應用程序。
            參考文獻:
            [1]張水平.數據庫原理及SQL Server應用[M].西安:西安交通大學出版社,2008.
            [2]Abraham Silberschatz,Henry F.Korth,S.Sudarshan數據庫系統概念(第3版)[M].北京:機械工業出版社,2008.
            [3]Ramez Elmasri,(美)Shamkant B.Navathe.數據庫系統基礎.高級篇[M].北京:人民郵電出版社,2008.
            [4]周輝君.數據庫系統優化策略研究[J].科技信息,2008(17):70.
          上一篇論文:研討讓語言細致精巧起來 下一篇論文:探究小學語文課堂評價語言
          相關論文
          業務范圍
          免費本科范文
          免費碩士范文
          免費職稱范文
          論文****
          職稱論文****表
          五分pk10 996622qq.com | www.9570114.com | www.369408.com | www.847568.com | xx888u.com | 0860dh.com | www.6491y.com | www.jz6788.com | www.36166b.com | 5004zz.com | 309249.com | www.88051.com | www.4520088.com | www.178753.com | 7240y.com | www.8808000.com | www.w84w.com | www.466161.com | 052325.com | www.4972yy.com | www.63606c.com | yh888n.com | 112q.net | www.034044.com | www.78949j.com | v995.com | 9737oo.me | www.4996jy.com | www.515233.com | 1294v.cc | www.bet881.com | www.hg77740.com | 皇冠在线娱乐.com | 2776f.com | www.4196o.com | www.401278.com | 30688f.com | www.df7770.com | www.71233w.com | 079.com | www.hg1388.net | www.y0291.com | 444vn77.com | 1408o.com | www.4078v.com | www.616097.com | 53262pp.com | www.771671a.com | www.022y.cc | blhvip444.com | www.1028522.com | www.77114j.com | quannengsoft.cn | www.ma1777.com | www.75wcp.com | 55957k.com | www.899238.com | www.50732m.com | xpj4444.vip | www.msc269.com | www.777337.com | ccc3405.com | www.b30666.com | www.187132.com | 30175544.com | www.8k002.com | www.c5237.com | 348301.com | www.0057g.com |