為什麼一般單錶資料不超過2000萬

2021-10-22 02:07:30 字數 603 閱讀 5638

mysql的innodb引擎的索引使用b+樹的結構,最小儲存單元是頁,也就是乙個節點,innodb引擎預設乙個頁的大小為16k,頁可以用於存放資料也可以用於存放鍵值+指標,在b+樹中葉子節點存放資料,非葉子節點存放鍵值+指標。

假設b+樹的高度是2,那麼存放的總記錄數=根節點的指標數 * 單個葉子節點記錄行數,假設主鍵是bigint型別,在mysql中,bigint佔8個位元組,指標佔6個位元組,那麼乙個主鍵+指標數=14個位元組,乙個頁大小為16k,那麼根節點的主鍵+指標數=16 * 1024 / 14 = 1170,假設一行記錄的資料大小是1k,那麼乙個頁就可以存16行資料,那麼總記錄數=1170 * 16 = 18720

假設b+樹的高度是3,那麼存放的總記錄數=根節點的指標數 * 二級節點的指標數 * 單個葉子節點記錄行數,那麼總記錄數=1170 * 1170 * 16 = 21902400

查詢資料時一次頁的查詢就是一次io操作,為了避免多次io操作造成效能問題,一般樹的層級不超過3,因此單錶資料量一般不超過2000萬。

單例模式一般在什麼場合使用?

1.抽象工廠模式,builder模式和prototype模式可以在他們的實現中使用單例模式 2.facade物件通常是singleton因為一般之需要乙個facade物件就行了 3.狀態bean通常是singleton 4.在操作外部資源如印表機或者檔案時,需要使用singleton以保證沒有對外部...

盤盈的存貨一般應作為什麼處理

企業進行存貨清查盤點,應當編制 存貨盤存報告單 並將其作為存貨清查的原始憑證。經過存貨盤存記錄的實存數與存貨的賬面記錄核對,若賬面存貨小於實際存貨,為存貨的盤盈 反之,為存貨的盤虧。對於盤盈 盤虧的存貨要記入 待處理財產損溢 科目,查明原因進行處理。企業在財產清查中盤盈的存貨,根據 存貨盤存報告單 ...

一般人為什麼不成功? 陳安之

一般人為什麼不成功?陳安之 在研究如何成功致富之前,我們一定要了解,一般人為什麼會失敗。一般人都在研究成功者如何成功時,卻從來沒有思考過失敗者為何失敗,所以也就沒有避免失敗者所犯的錯誤。我以前每天都在研究成功者如何成功,卻從未研究失敗者如何失敗。失敗是成功之母,檢討是成功之父。我發現,如果你沒做成功...