簡體   English   中英

處理C程序中的大數據

[英]Handling large data in a C program

我正在研究一個在數據庫上運行查詢的項目,結果大於內存大小。 我聽說過內存池庫,但我不確定它是解決這個問題的最佳方法。
內存池庫是否支持從磁盤寫入和讀取(作為需要多次解析的查詢的結果)。 還有其他一些方法來實現這一目標嗎?

PS
我正在使用MySQL數據庫及其C API來訪問數據庫。

編輯 :這是一個例子:
假設我有五個表,每個表有一百萬行。 我想找到一個表與另一個表相似多少,所以我為每個表創建一個bloom過濾器,然后根據四個表中其余表中的數據檢查每個過濾器。

通過使用輔助存儲(例如磁盤)將邏輯內存擴展到物理內存之外通常稱為交換 ,而不是內存池。 您的操作系統已經為您完成了,您應該嘗試讓它先完成它的工作。

內存池庫通過使用固定大小的分配為內存分配提供更高的速度和實時可預測性,但不會增加實際內存。

你應該重構你的程序,不要使用這么多的內存。 不要將DB的“整體”(或大部分)拉入內存,而應使用游標並逐步更新程序正在維護的數據結構,或者逐步更改要查詢的指標。

編輯:你補充說你可能想在表上運行bloom過濾器? 看一下增量布隆過濾器: 這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM