日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

童家旺:如何用分表存储来提高性能

發布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 童家旺:如何用分表存储来提高性能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

來自支付寶資深數據庫架構師童家旺給大家分享的關于數據存儲性能優化的一點想法,他從自己的個人經驗中總結了關于數據庫存儲的性能優化。

?

▲支付寶資深數據庫架構師童家旺

首先,童家旺介紹了他認為的什么是優化:

第一、做任何事情最快的方法就是什么也不做。

第二、不訪問不必要的數據:使用B*Tree/hash等方法定位必要的數據。使用column Store或分表的方式將數據分開存儲。使用Bloom filter算法排除空值查詢。

第三、合理的利用硬件來提升訪問效率:使用緩存消除對數據的重復訪問。使用批量處理來減少磁盤的Seek操作。使用批量處理來減少網絡的Round Trip。使用SSD來提升磁盤訪問效率。

響應時間和吞吐量之間的關系

1、性能。衡量完成特定任務的速度或效率。

2、響應時間。衡量系統與用戶交互式多久能夠發出響應。

3、吞吐量。衡量系統在單位時間里可以完成的任務量。

?

▲反應時間

?

▲傳統磁盤的訪問特性

B*Tree優化數據訪問介紹

?

▲B*Tree優化數據訪問

B*Tree優化數據訪問模擬場景

?

▲B*Tree優化數據訪問模擬場景

?

童家旺通過阿里巴巴的真實應用場景介紹了如何用分表存儲來提高性能。

一、場景介紹:

  • 表VeryBigTable含有30個列
  • 表的記錄數為50,000,000條
  • 平均每個用戶為300條左右
  • 其中有2個列屬于詳細描述字段,平均長度為2k
  • 其它的列的總長度平均為250個字節
  • 此表上的查詢有兩種模式
  • 列出表中的主要信息(每次20條,不包含詳細信息,90%的查詢)
  • 查看記錄的詳細信息(10%的查詢)
  • 保存與Oracle數據庫,默認block_size(8k)
  • 二、要求:

  • 對此業務進行優化
  • 分析數據,說服開發部門實施此優化
  • 三、性能分析

    1、每塊記錄數

    8192 * 0.80(1) / 250 = 25.5 (主表)

    8192 * 0.80 / 2000 = 3.27(詳情表)

    8192 * 0.80 / ( 2000 + 250 ) = 2.91

    2、訪問的邏輯IO(內存塊訪問)

    List的查詢代價

    改進后=( 300/25.5 ) * y + 4 + x = 4 + x + 11.8y = 4(2) + 7(3) + 11.8 * 1.5(4) = 28.7

    改進前=( 300/2.91 ) * y + 4 + x = 4 + x + 103.y = 4 + 7 + 103 * 1.5 = 165.5

    3、訪問涉及到的物理讀(磁盤塊訪問)

    List的查詢代價(邏輯IO * ( 1 – 命中率 ))

    改進后=28.7 * ( 1 – 0.85(5)) = 4.305

    改進前=165.5 * ( 1 – 0.85 ) = 24.825

    4、訪問時間(ms)

    改進前=邏輯IO時間+物理IO時間= 28.7 * 0.01(6) + 4.305 * 7(7) = 30.422ms

    改進后=邏輯IO時間+物理IO時間= 165.5 * 0.01 + 24.825 * 7 = 175.43ms

    場景

  • Read Intensive (R/W 20倍以上)
  • 業務可接受部分延遲(Delay)
  • 每天訪問量上億次
  • 系統IO壓力巨大(本地內存無法容納活躍數據)
  • 要求

  • 優化業務
  • 方案

  • 使用緩存來減少應用對后端的訪問
  • 注意事項

  • 考慮緩存的刷新策略
  • 考慮緩存的數據延遲對業務的影響
  • 考慮緩存失效時,系統的支撐能力
  • 參考緩存工具

    MemCached, Tair, Redis

    【編輯推薦】

  • 主數據管理(MDM)的七個最佳實踐
  • SQL server的高可用性 SQL Mirror HA
  • 淺談一次惱火的死鎖追蹤經歷
  • DataReader鏈接關閉解惑篇
  • ?

    轉載于:https://my.oschina.net/zyt1978/blog/670699

    總結

    以上是生活随笔為你收集整理的童家旺:如何用分表存储来提高性能的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。