資料庫優化
mysql架構與特性(二)
mysql支援的資料型別非常多,選擇正確的資料型別對於獲得高效能至關重要。
更小的通常更好
選擇你認為不會超過範圍的最小型別,占用更小的磁碟。
簡單就好
簡單的資料型別的操作通常需要更少的cpu週期。
盡量避免null
null值使列的索引,索引統計和值比較 都更複雜,且如果在該列建立索引,就應該避免使用null
實數型別
字串型別
blob和text
blob和text都是為了儲存很大的資料而設計的字串資料型別,分別採用二進位制和字元方式儲存。
日期和時間型別
太多的列
mysql的儲存引擎api工作時候需要在伺服器層和儲存引擎層之間通過行緩衝格式拷貝資料,然後在服務層將緩衝內容解碼成各個列。從行緩衝中將編碼過的列轉換成資料結構的操作代價是很高的。因此我們應該避免使用太多的列。
太多的關聯
mysql限制了每次關聯查詢最大只能有61張表。如果希望查詢執行的快速且併發性好,單個查詢最好在12個表以內做關聯。
全能的列舉
變相的列舉
非此發明的null 使用特殊的字元用於表示null值
正規化化的更新操作通常要比反正規化要快
當資料正規化化後,就只有很少或者沒有重複資料。更新時,只需要修改更少的資料。
很少的冗餘,意味著查詢時候需要更少的 distinct和groupby語句。
通常需要關聯,不但代價高,往往還會使一些索引策略失效
反正規化優缺點
所有資料都存在一張表了,可以很好的避免關聯
資訊冗餘,占用空間,更新時候需要同步更新多個地方,查詢時候需要使用更多的函式。
通常情況下,我們會折中一下,混用正規化與反正規化。另外在資料庫的優化中我們也可以使用快取表,彙總表,計數器表等
本章總結
MySQL 資料庫索引與事務的特性
索引的概念 索引是資料庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問資料庫表中的特定資訊。如果想按特定職員的性查詢他或她,則與在表中搜尋的所有行相比,索引有助於更快的獲取資訊。索引的乙個主要的目的就是加快檢索表中資料的方法,也是盡快的找到符合限制條件的記錄id的輔助資料結構 優點 通過建...
mysql資料庫架構設計與優化
2019 04 23 20 51 20 無畏d塵埃 閱讀數 179 收藏 更多 分類專欄 mysql 其他以上所有規範並非完全不能違背,只是如果不符時,要和公司dba團隊確認是否可以做相關操作alter table t1 add column c1 int,change column c2 int ...
關於儲存 資料庫與架構
去年,我們曾經使用了一批ssd的pc,用來做資料庫的伺服器,用來提高資料庫伺服器的io能力。但是從目前的使用情況來看,如果將ssd作為主儲存,存在一些問題 首先,ssd的穩定性還不夠好,我們碰到了一些ssd盤損壞和ssd與機器不相容的情況發生。第二,ssd的容量盤都比較小,考慮到穩定性的問題,如果做...