MYSQL資料庫超大級別資料讀

2021-08-06 06:59:08 字數 689 閱讀 6364

場景:當資料量達到一定千萬級別的記錄,且查詢的字段又多的時候,此時將查詢資料的快取全部儲存在php的記憶體當中會導致記憶體溢位。

資料庫查詢:

//$pdo->setattribute(pdo::mysql_attr_use_buffered_query, false);

$startmemory = memory_get_usage();

function

getdb()}

foreach(getdb() as

$key=>$val)

exit;

當使用上面語句查詢的時候本地48萬條資料,12列欄位,大部分以varchar格式儲存,

可以看到查詢的資源型資料儲存在記憶體中已經使用了31m記憶體,但是將上面**的注釋段資料撤銷之後資料沒有儲存在執行記憶體之中,理論上來說可以無限取mysql中的資料。

使用yield生成器將每次獲取的單條資料進行處理(總資料儲存在執行記憶體中會記憶體溢位)

百萬級別資料庫優化技巧

優化方向 sql語句優化 索引 分表.sql語句優化 1 不要返回用不到的資料 select from shop user select id username from shop user 2 where 跟 order by 是搜尋的關鍵,避免全表掃瞄。考慮在對應的列上建立索引 where 語句...

Mysql千萬級別資料優化方案

一 目的與意義 1 說明 在mysql單錶中資料達到千萬級別時資料的分頁查詢結果時間過長,對此進行優達到最優效果,也就是時間最短 此統計利用的jdbc連線,其中fid為該錶的主鍵 二 解決思路與根據 本測試表中資料在千萬級別 1 建立索引 優點 當表中有大量記錄時,若要對錶進行查詢,第一種搜尋資訊方...

mysql資料庫隔離級別

事務的隔離級別 由高到低 1.序列化 serializable 乙個事務乙個事務的執行 2.可重複讀 repeatable read 可重複讀,無論其他事務是否修改並提交了資料,在這個事務中看到的資料值始終不受其他事務影響 mysql資料庫所預設的級別 3.讀已提交 read committed 讀...