日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

schema设计

發(fā)布時間:2025/4/14 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 schema设计 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Schema設(shè)計
Schema:表的模式; 設(shè)計數(shù)據(jù)的表,索引,以及表和表的關(guān)系
  • 在數(shù)據(jù)建模的基礎(chǔ)上將關(guān)系模型轉(zhuǎn)為數(shù)據(jù)庫表
  • 滿足業(yè)務(wù)模型需要基礎(chǔ)上根據(jù)數(shù)據(jù)庫和應(yīng)用特點優(yōu)化表結(jié)構(gòu)
  • 關(guān)系模型圖:

    ?

    Schema關(guān)系到應(yīng)用程序功能與性能
    • 滿足業(yè)務(wù)功能需求
    • 同性能密切相關(guān)
    • 數(shù)據(jù)庫擴展性
    • 滿足周邊需求(統(tǒng)計,遷移等)
    關(guān)系型數(shù)據(jù)庫修改Schema經(jīng)常是高危操作 Schema設(shè)計要體現(xiàn)一定的前瞻性 完全由開發(fā)者主導(dǎo)的Schema設(shè)計
    • 著眼于實現(xiàn)當(dāng)前功能
    • 完全基于功能的設(shè)計可能存在一些隱患
      • ?? 不合理的表結(jié)構(gòu)或索引設(shè)計造成性能問題
      • ?? 沒有合理評估到數(shù)據(jù)量的增長造成空間緊張而且難以維護
      • ?? 需求頻繁修改造成表結(jié)構(gòu)經(jīng)常變更
      • ?? 業(yè)務(wù)重大調(diào)整導(dǎo)致數(shù)據(jù)經(jīng)常需要重構(gòu)訂正
    基于性能的表設(shè)計
    • 根據(jù)查詢需要設(shè)計好索引
    • 根據(jù)核心查詢需求, 適當(dāng)調(diào)整表結(jié)構(gòu)
    • 基于一些特殊業(yè)務(wù)需求,調(diào)整實現(xiàn)方式
    索引
    • 正確使用索引
    • 更新盡可能使用主鍵或唯一索引
    • 主鍵盡可能使用自增ID字段
    • 核心查詢使用覆蓋索引
      • ? ? ? ? ? 用戶登錄需要根據(jù)用戶名返回密碼用于驗證
      • ? ? ? ? ? create index idx_uname_passwd on tb_user (username,passwd);
      • ? ? ? ? ? 建立聯(lián)合索引避免回表取數(shù)據(jù)
    設(shè)計舉例
    ? 1 反范式,冗余必要字段 2 拆分大字段

    ?

    3 避免過多字段或過長行 4 分頁查詢: 5 ?熱點讀數(shù)據(jù)特殊處理 6 熱點寫數(shù)據(jù)特殊處理

    ?

    7 準實時統(tǒng)計

    ?

    實時統(tǒng)計改進1--觸發(fā)器實時統(tǒng)計

    ?

    實時統(tǒng)計改進2-緩存實時統(tǒng)計

    ?

    實時統(tǒng)計改進3-最大自增ID獲取總數(shù)

    ?

    ? 8 ?可擴展性設(shè)計

    ?

    9 分區(qū)表與數(shù)據(jù)淘汰 range分區(qū)

    ?

    list分區(qū)

    ?

    hash分區(qū) 10 滿足周邊需求 統(tǒng)計和后臺需求 11 自動更新時間戳 Schema設(shè)計與前瞻性
    • 基于歷史經(jīng)驗教訓(xùn),預(yù)防和解決同類問題
    • 把折騰DBA夠嗆的索引Schema改造的原因記錄并分析總結(jié)
    例子: 業(yè)務(wù)為了用戶信息加密做了大改造
    • ?數(shù)據(jù)庫結(jié)果大量改動,增加了加密字段,驗證策略表,所有表重新訂正數(shù)據(jù)等等
    • ?是否所有用到用戶信息管理的應(yīng)用都要去上線就用密文?

    ?

    ?總結(jié)
    ?
    • ?schema設(shè)計關(guān)系性能
    • ?反范式,冗余必要字段
    • ?拆分大字段
    • ?避免過多字段或過長字段
    • ?分頁查詢
    • ?熱點讀數(shù)據(jù)特殊處理:置頂表與普通表分開
    • ?熱點寫數(shù)據(jù)特殊處理:
      • 微博普通用戶發(fā)消息,則寫入關(guān)注他的人的消息列表中;微博大V發(fā)消息,則關(guān)注他的人都去讀他的消息列表;
    • ?準實時統(tǒng)計:
      • 定時統(tǒng)計表,更據(jù)上次更新時間統(tǒng)計全表中增量sum值,每分鐘更新統(tǒng)計表;
    • ?實時統(tǒng)計:
      • 觸發(fā)器實時統(tǒng)計,在用戶插入時,更新統(tǒng)計表;
      • 緩存實時統(tǒng)計,應(yīng)用將用戶新增寫在內(nèi)存緩存中,業(yè)務(wù)平時從緩存中讀,緩存失效,從數(shù)據(jù)庫做一次查詢,接著寫在緩存;
    • 分區(qū)表與數(shù)據(jù)淘汰
    • 滿足周邊需求:
      • 如后臺統(tǒng)計任務(wù)而增加特殊索引,
      • 為數(shù)據(jù)遷移或統(tǒng)計增加時間戳
    • 自動更新時間戳
    • schema設(shè)計與前瞻性

    轉(zhuǎn)載于:https://www.cnblogs.com/Aiapple/p/5694327.html

    《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

    總結(jié)

    以上是生活随笔為你收集整理的schema设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。