[英]Index performance on Postgresql for big tables
我一直在搜索有關 PostgreSQL 上的索引基准測試的好信息,但沒有發現任何真正好的信息。
我需要了解 PostgreSQL 在處理大量記錄時的行為。 假設一個非分區表上有 2000M 條記錄。
從理論上講,b-trees 是 O(log(n)) 用於讀取和寫入,但實際上我認為這是一個理想的場景,不考慮像 HUGE 索引這樣的東西不完全適合 memory (交換?),也許其他的東西我不是眼見為實。
沒有 JOIN 操作,這很好,但請注意,這不是一個分析數據庫,並且需要低於 150 毫秒的響應時間(越少越好)。 當然,所有搜索都應該使用索引來完成。 我們有 2-3 個索引:
我擔心的是一旦表達到預期的最高容量(2500M 記錄),寫入和讀取將如何執行
...所以具體問題可能是:
我知道這么多的記錄建議采取一些替代方案(分片、分區等),但這個問題是關於學習和理解 PostgreSQL 的能力而不是其他東西。
插入或從表中選擇應該不會降低性能,即使它很大。 索引訪問的開銷隨着表大小的對數而增長,但是對數的底很大,索引不應該有索引的深度不能超過5或6。索引的上層是可能已緩存,因此在每次索引掃描訪問單個表行時,您最終會讀取少量塊。 請注意,您不必緩存整個索引。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.