如何用分表儲存來提高效能 推薦

2022-09-27 08:03:10 字數 1618 閱讀 7515

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

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

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

第二、不訪問不必要的資料:使用b*tree/hash等方法定位必要的資料。使用column store或分表的方式將資料分開儲存。使用bloom filter演算法排除空值查詢。

第三、合理的利用硬體來提公升訪問效率:使用快取消除對資料的重複訪問。使用批量處理來減少磁碟的seek操作。使用批量處理來減少網路的round trip。使用ssd來提公升磁碟訪問效率。

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

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

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

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

▲反應時間

▲傳統磁碟的訪問特性

b*tree優化資料訪問介紹

▲b*tree優化資料訪問

b*tree優化資料訪問模擬場景

▲b*tree優化資料訪問模擬場景

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

一、場景介紹:

1、表verybigtable含有30個列

2、表的記錄數為50,000,000條

3、平均每個使用者為300條左右

4、其中有2個列屬於詳細描述字段,平均長度為2k

5、其它的列的總長度平均為250個位元組

6、此表上的查詢有兩種模式

7、列出表中的主要資訊(每次20條,不包含詳細資訊,90%的查詢)

8、檢視記錄的詳細資訊(10%的查詢)

9、儲存與oracle資料庫,預設block_size(8k)

程式設計客棧  二、要求:

1、對此業務進行優化

2、分析資料,說服開發部門實施此優化

三、效能分析

1、每塊記錄數

8192程式設計客棧 * 0.80(1) / 250 = 25.5 (主表)

8192 * 0.80 / 2000 =eshghdq 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 = eshghdq165.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

本文位址: /shujuku/shujukuqita/84066.html

教你如何用Excel表來製作工資條

第一步 新建一excel檔案,在sheet1中存放工資表的原始資料,假設有n列。輸入你要製作的工資條資料,第一行是工資專案 編號 姓名 崗位工資等等 從第二行開始是每個人的工資資料 10001 張三 580等等 有多少資料,你就輸入多少。第二步 最關鍵是這一步 這樣我們在sheet2的a1單元格中輸...

如何用批處理檔案來操作登錄檔

在入侵過程中經常回操作登錄檔的特定的鍵值來實現一定的目的,例如 為了達到隱藏後門 木馬程式 而刪除run下殘餘的鍵值。或者建立乙個服務用以載入後門。當然我們也會修改登錄檔來加固系統或者改變系統的某個屬性,這些都需要我們對登錄檔操作有一定 的了解。下面我們就先學習一下如何使用.reg檔案來操作登錄檔....

如何用二分查詢找到有序表所有相同元素

在參加malic 2021寒假熱身賽02 d題中,d題題解使用二分查詢降低時間複雜度,需要統計在有序表中與待查詢關鍵字的相同的個數。題目鏈結 完整 如下 include include using namespace std typedef long long ll const ll maxsize...