elasticsearch
數量級
索引業務需要實時對集合中的tel去重
$pipeline=[
['$match'
=>
$where],
['$group'
=>
['_id'
=>
'$tel']]
,['$group'
=>
['_id'
=>1,
'count'
=>
['$sum'
=>1]
]],]
;// 防止大資料溢位
$allowdiskuse=[
'allowdiskuse'
=>
true];
$list
= mongocrawlertels:
:raw
(function
($collection
)use
($pipeline
,$allowdiskuse))
;
致命的是寫入檔案的時間 ,消耗了超過17秒, 所以沒有辦法滿足效能需求
測試(當前消耗的記憶體)
$memory_start
=memory_get_usage()
;// 設定**號碼列表
$start_time
=microtime
(true);
$arr=[
];//$total = (3000000 + 7000*365) * 0.7;
$total
=3000000
*0.7
;for($i
=0;$i
<
$total;$i
++)$end_time
=microtime
(true);
$memory_end
=memory_get_usage()
;$memory_now
=$memory_end/(
1024
*1024);
$memory_need=(
$memory_end
-$memory_start)/
(1024
*1024);
$memory_get_peak_usage
=memory_get_peak_usage()
/(1024
*1024);
$msg
='消耗記憶體 : '
.$memory_need
.'mb , 總分配: '
.$memory_get_peak_usage
.' mb 當前消耗: '
.$memory_now
.' mb 插入的數量 : '.$i
.' 消耗時間 '.(
$end_time
-$start_time).
'秒, 去重後的數量'
.count
($arr);
echo
$msg
.php_eol
;
推測一年後的記憶體使用情況+ 每天增長7000
+ 重複的部分 30%
$memory_start
=memory_get_usage()
;// 設定**號碼列表
$start_time
=microtime
(true);
$arr=[
];$total=(
3000000
+7000
*365)*
0.7;
for($i=
0;$i<
$total;$i
++)$end_time
=microtime
(true);
$memory_end
=memory_get_usage()
;$memory_now
=$memory_end/(
1024
*1024);
$memory_need=(
$memory_end
-$memory_start)/
(1024
*1024);
$memory_get_peak_usage
=memory_get_peak_usage()
/(1024
*1024);
$msg
='消耗記憶體 : '
.$memory_need
.'mb , 總分配: '
.$memory_get_peak_usage
.' mb 當前消耗: '
.$memory_now
.' mb 插入的數量 : '.$i
.' 消耗時間 '.(
$end_time
-$start_time).
'秒, 去重後的數量'
.count
($arr);
echo
$msg
.php_eol
;
/**
* 去重號碼數量
* @param array $where
*/private
function
_setuniquetelnumberforlist
(array
$where))
;$memory_start
=memory_get_usage()
;// 設定**號碼列表
$start_time
=microtime
(true);
$i=0;
foreach
($cursor
as$item
)$end_time
=microtime
(true);
$memory_end
=memory_get_usage()
;$memory_now
=$memory_end/(
1024
*1024);
$memory_need=(
$memory_end
-$memory_start)/
(1024
*1024);
$memory_get_peak_usage
=memory_get_peak_usage()
/(1024
*1024);
$msg
='消耗記憶體 : '
.$memory_need
.'mb , 總分配: '
.$memory_get_peak_usage
.' mb 當前消耗: '
.$memory_now
.' mb '
.$this
->
product_id
.' 插入的數量 : '.$i
.' 消耗時間 '.(
$end_time
-$start_time).
'秒, 去重後的數量'
.count
($this
->
list_tel_list
['all']?
?);$action
='unqiue'
;$params
=request()
->
post()
; mongolog:
:create
(compact
('msg'
,'action'
,'params'))
;}
php 多執行緒es vs mongo 游標拉去資料的速度
mongo 聚合操作
bitmap實現大資料排序和去重
要點 假如有10億元素,全部資料讀進記憶體,占用 1000000000 4 1024 1024 1024 3.725 g,解決方法 bitmap演算法,每一位都能表示一位數字,10000000000 8 1024 1024 1024 0.116 g,節約了31倍的空間!define sizebit ...
如何加大資料字段的設定
以下 用於在資料庫中增大對某些資料的定義值,例如增加商品型號的長度 商品名稱的長度 客戶姓名的長度 商品分類名稱的長度 賬單位址的長度等等。在後台的 工具 安裝sql指令碼 執行以下 alter table products modify products model varchar 256 alt...
Access資料字段內容去換行回車TAB符號函式
今天發現以前新增的資料字段數值包含有個空白的好象換行的符號 以前批量新增資料 是 form表單 表單提交的引數包含換行,使用函式 asp處理函式 servernamelist trim request servername arrayservername split servernamelist,c...