數據庫的一些總結

併發控制:讀寫鎖,讀鎖是共享鎖,寫鎖是排他鎖

         行級鎖:最大程度的支持併發處理,最大的鎖開銷

事務:原子性、一致性、隔離性、持久性


索引:B_Tree索引:適合查找範圍數據key(last_name,first_name),適用於全鍵值、鍵值範圍或鍵前綴查找

                                        必須從索引最左側列開始查找、不能跳過索引中的列、查詢中有某個範圍查詢,其右側所有列都無法使用索引優化查找

             哈希索引,只有memory引擎顯式支持哈希索引key using HASH(fname),

             全文索引:適用於match against操作

索引的優點:1:減少服務器需要掃描的數據量‘2:幫助服務器避免排序和臨時表3:將隨機I/O變爲順序I/O

索引高性能的策略:

         1:獨立的列,將索引列單獨放在比較符號的一側
         2:前綴索引和索引選擇性,找到索引長度的最合適長度看一下之後的標記語句
         3:多列索引,再多個列上建立單獨索引大部分情況不能優化
         4:選擇合適的索引列順序(選擇性高的列放在前面)
         5:聚簇索引,一種數據存儲方式
         6:覆蓋索引
         7:儘量避免範圍條件
         8:優化排序       對於那些選擇性非常低的列,可以增加特殊的索引做排序:例如(sex,rating)  來做select <sols> from profiles where sex ='m' order by rating limit 10;

減少冗餘索引,類似(既有(A,B)也有(A),但是(B,A)和(B)則不是冗餘)

在一些經常使用的到的搜索列中可以加上查詢條件,就好比sex這個列幾乎所有的查詢都會用到這個列,就算不用也可以在查詢條件中增減sex in ('m','f')的這個搜索條件

儘可能將範圍查詢放在最後面(前面的條件會過濾掉一部分數據)


 查詢的生命週期:從客戶端到服務器,然後再服務器上執行解析,生成執行計劃,執行,並返回結果給客戶端;執行過程中包括了大量爲了檢索數據到存儲引擎的調用以及調=                                調 用後的數據處理(包括排序,分組)

數據庫優化數據訪問:一:是否向數據庫請求了不需要的數據(取出*的寫法,需要什麼數據返回什麼數據)二:是否在掃描額外的記錄(查詢開銷的三個指標:響應時間,掃                                            描的行數,返回的行數)

                                   一個複雜查詢還是多個簡單查詢、分解關聯查詢(讓緩存的效率更高、將查詢分解後執行單個查詢可以減少鎖競爭、在應用層做關聯容易對數據庫進行拆分)


嵌套查詢的情況:試講外層表壓縮到子查詢中


 安撫



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章