計算機非常擅長做序列化處理,順序寫入,順序讀取的效率很高。一般情況下我們會認為從主內存讀取數據要比從磁盤讀取數據塊,但實際情況
並不絕對是這樣的,當我們進行主內存隨機尋址時的負載確實會比順序讀取磁盤要高。那么基於計算機這個特性,我們對優化數據庫有什么啟發呢?
使用索引有哪些缺點:
1.不斷更新索引頁,導致隨機寫
2.當不斷插入新數據時,有可能會導致索引頁進行頁分裂,產生索引碎片
應如何避免使用索引:
數據量不大時,應避免使用索引,這樣一方面可以避免索引IO及索引維護,更重要的是可以對數據進行順序存取,根據計算機的局部性原理,會
大大提高數據的更新及查詢速度。
適當使用聚集索引:
當數據量較大必須使用索引的情況下,可以考慮聚集索引。聚集索引的葉子節點就是數據頁(非聚集索引的葉子節點是索引頁),所以在物理設備上
是有序的這樣可以充分利用計算的局部特定,但是這種情況不適合頻繁插入的情況。
寫入磁盤盡量追加寫入:
比如我們要更新一個字段,一般我們認為直接update是沒問題的,但是這會產生隨機寫,我們可以把新數據在后面追加,然后對更新前的數據進行過濾。
當然這種方法弊端很多,只是描述一下大概思路。