qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          數據庫優化的最佳實踐

           在許多很好的例子,技術和方法被世界上最好的數據庫性能專家所高薦。我們將討論提高數據庫性能的最常用的方法,而不是評論或建議任何特定的工具或技術。
            1)謹慎而有效地使用索引
            選擇合理的索引(前綴性及可選性)、刪除沒有用的索引。
            2)使用規范化,但不要使用過頭
            規范化(至少是第三范式)是一個易于理解且標準的方法。然而,在有些情況下,你可能希望違反這些規則。查詢表通常是規范化的產物,也就是說,你創建了一個特殊的表,這個表包含了在其他表中被頻繁使用的相關信息的列表。然而,當使用那些經常被訪問且分布有限(僅有或有限的行數擁有小值)的查找表時,會使系統性能降低。在這種情況下,每次你使用查詢信息,它們必須使用join以獲取完整數據。join的開銷很大,而且頻繁訪問會使開銷隨著時間逐漸增加。為了減少這種潛在的性能問題,可以使用枚舉字段存儲數據,而不是使用查找表存儲數據。例如,可以使用枚舉字段存儲頭發彩色值,而不是創建表來存儲頭發顏色值,這樣還可以避免使用join.
            3)使用正確的存儲引擎
            mysql的最強大的功能之一是它支持不同的存儲引擎,存儲引擎管理如何存儲和恢復數據。mysql支持多個存儲引擎,每個存儲引擎具有獨特的功能和用途,可以使數據庫設計通過使用最合適他們的應用程序的存儲引擎來改善數據庫系統的性能。例如,如果有一個這樣的環境:使用事務控制高度活躍的數據庫,請選擇一個合適這個情況的存儲引擎(mysql的有些存儲引擎不支持事務),你還可能會發現這樣的視圖和表,它們常常被查詢但是幾乎不被更新(例如查找表),在這種情況下,你可能希望使用存儲引擎將這些數據存儲在內存中,以便快速訪問它們。
            InnoDB存儲引擎支持事務,在需要事務支持時,通常應該選擇這個存儲引擎,它是Mysql中目前唯一事務性的引擎。很多第三方存儲引擎支持事務,但是僅有InnoDB有"開包即用"選項。有趣的是,InnoDB中所有的索引都是B-trees,在這個B樹中索引記錄被存儲在樹的葉子項,InnoDB適用于高性能和事務處理環境。
            MyISAM存儲引擎是Mysql默認引擎,如果你在create語句中省略了engine選項,那么默認使用這個引擎。MyISAM經常在數據倉庫、電子商務和企業應用中使用。MyISAM使用高級緩存和索引機制提高數據檢索速度,另外,當各種應用程序需要快速檢索數據而不需要事務時,MyISAM將是很好的選擇。
            Blackhole存儲引擎是非常有趣的,它并不存儲任何東西。實際上,正如它的名字所言-存儲進去的數據永遠還會返回。Blackhole存儲引擎有個特殊的用途,如果啟用了二進制日志SQL命令將被寫入這個日志,這時,Blackhole存儲引擎被當做復制拓撲中的中繼代理使用。
            Memory存儲引擎(有時被稱為HEAP)是內存中的存儲器,它使用哈希機制頻繁檢索被使用過的數據,這樣可以更快地檢索,它訪問數據的方式與其他存儲引擎類似,但是數據存儲在內存中,并且只在mysql會話有效。當關機時,這些數據被刷新并刪除掉。Memory存儲引擎通常用于以下情況:靜態數據被頻繁使用且很少被改變(如查找表).
            4)通過Query Cache使用視圖來加速結果
            5)使用約束
            6)使用explain、analyze、optimize
            這些工具在診斷和調優時很重要,在不發生錯誤的前提下經常使用它們,但是請小心使用。具體來說,當analyze、optimize有意義且不是作為定期的預定的事件時使用它們。我們發現有些系統管理員晚上使用這些命令,但是一般情況下,這樣做是不值得的,并且會產生不必要的表副本。顯然,強制系統定期復制數據浪費時間,并會導致操作過程中的訪問有限。

          posted on 2013-12-24 11:51 順其自然EVO 閱讀(359) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2013年12月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 娄底市| 宁国市| 济阳县| 雅安市| 大冶市| 鄂尔多斯市| 张家口市| 临桂县| 潞西市| 白水县| 沧州市| 建瓯市| 广德县| 蛟河市| 长治市| 阳泉市| 沧州市| 普洱| 防城港市| 云和县| 太仆寺旗| 苗栗县| 宾阳县| 双鸭山市| 香港 | 固安县| 樟树市| 靖宇县| 吐鲁番市| 泸州市| 乌海市| 天峨县| 平安县| 临邑县| 类乌齐县| 盐山县| 苏尼特左旗| 华池县| 镇宁| 和硕县| 西宁市|