當前位置:首頁 » 數據倉庫 » mysql資料庫設計模版
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

mysql資料庫設計模版

發布時間: 2023-08-21 12:18:36

㈠ MYsql資料庫的物理設計都包括哪些內容,怎麼設計

Log File物理結構

log block結構分為日誌頭段、日誌記錄、日誌尾部

  • Block Header,佔用12位元組

  • Data部分

  • Block tailer,佔用4位元組

  • Block Header

    這個部分是每個Block的頭部,主要記錄的塊的信息

  • Block Number,表示這是第幾個block,佔用4位元組,是通過LSN計算得來的,佔用4位元組

  • Block data len,表示該block中有多少位元組已經被使用了,佔用2位元組

  • First Rec offet,表示該block中作為第一個新的mtr開始的偏移量,佔用2位元組

  • Checkpoint number,表示該log block最後被寫入時的檢查點的值,佔用4位元組

  • ㈡ 如何設計一個能夠高效查詢的千萬級MySQL資料庫

    我們先探討非高並發量的實現。

    對於查詢頻次較高的欄位,加上索引。

    加索引注意事項:1.對那些字元內容較長的最好不要加索引2.按照官方文檔,單表加的索引不要超過16個,索引的長度不要超過256個位元組。隨意加索引,會給數據維護增知臘加負擔

    其實,可以引入分區。

    分區注意事項:1.常見的分區類型有range,list,hash,key等。用的比較多的就是range分區。2.對於初始建立索引的時候,我們往往會忽視一個前提條件,導致添加失敗報錯。這里的前提是,如果表是有主鍵的,分區的鍵和主鍵不是同一個,那麼分區的鍵也必須是主鍵。

    引入分區後,數據寫入時,資料庫會自動判斷寫入哪個分區

    對於譽慎並發量較高的,我們除了做上搭虛滑面的操作外,就要考慮分庫分表或者採用一主多從的方式。

    未來我相信這類問題需要採用NewSQl這類資料庫來解決,如TiDb等,此時,我們將不必考慮數據分區的問題,而且可以做到數據水平無限擴展,和熱點數據的動態分布。

    ㈢ 如何設計一個能夠高效查詢的千萬級MySQL資料庫

    首先要確定你的目標,所謂千萬級是每秒千萬次查詢還是千萬條記錄的資料庫,前者是一個極其復雜的,這個不是光告mysql能解決的,我想不是前者,而後者卻是很簡單的一件事,前提是定義高效,定義兩個指標:

    1,每秒查詢的次數是多少

    2,每次查詢時長

    確定好以後再考慮以下幾個因素的優化

    1,存儲的類型,SSD比普通磁碟的隨機讀寫能力可以提高不少禪嫌凱,一般2到3個數量級,還要看索引和數據塊的大小,比較復雜

    2,先擇RAID類型,如果選raid0和raid10可以提升近似1倍的速度

    3,使用高帶寬的網速,可以減少網路傳輸延遲,用10g的光纖比1g的電纜理論上可以提升1個數量級的吞吐量,尤其對大數據據量的結果集特別有效

    4,合理的索引,帶條件的檢索欄位加上索引

    5,用大寬表,盡可能減少多表關聯查詢,用空間換時間吧

    6,_用主從的集群,基本上查詢的並發量和伺服器的數量成正比的

    7,使賀喚用緩存,如memcached,尤其對靜態數據提升尤其明顯

    8,合理選擇資料庫欄位的類型,用定長字字,不要用變長的,如定長的int,char,decimal類型,別用varchar,text等

    9,給資料庫配置更大的內存

    10,檢查下瓶頸在不在CPU,如果查詢復雜,換個更高配置的伺服器

    總的原剛就是,盡可能用內存替代碰盤提升IO速度,提高網路和CPU的配置以減少查詢時間;盡可能提升網路速度,內存和主機的數量以提高並發


    我們先探討非高並發量的實現。

    對於查詢頻次較高的欄位,加上索引。

    加索引注意事項:

    1.對那些字元內容較長的最好不要加索引

    2.按照官方文檔,單表加的索引不要超過16個,索引的長度不要超過256個位元組。

    隨意加索引,會給數據維護增加負擔

    其實,可以引入分區。

    分區注意事項:

    1.常見的分區類型有range,list,hash,key等。用的比較多的就是range分區。

    2.對於初始建立索引的時候,我們往往會忽視一個前提條件,導致添加失敗報錯。

    這里的前提是,如果表是有主鍵的,分區的鍵和主鍵不是同一個,者宴那麼分區的鍵也必須是主鍵。

    引入分區後,數據寫入時,資料庫會自動判斷寫入哪個分區

    對於並發量較高的,我們除了做上面的操作外,就要考慮分庫分表或者採用一主多從的方式。

    未來我相信這類問題需要採用NewSQl這類資料庫來解決,如TiDb等,此時,我們將不必考慮數據分區的問題,而且可以做到數據水平無限擴展,和熱點數據的動態分布。