1
除了使用IDataStreamer
和IBinaryObject
來減少在Apache Ignite.NET中的插入時間之外,還可以做些什麼其他事情?是否有可能獲得顯着的性能提升,或者達到這個效果?Apache Ignite:如何提高插入性能?
我使用:
- .NET
- 41個查詢字段:1個字符串字段和每行40個浮點字段
IBinaryObject
/WithKeepBinary
IDataStreamer
- 默認JVM設置
- 分區緩存
- 沒有持久性
這裏是我的IDataStreamer
的用法:
using (var ds = m_ignite.GetDataStreamer<string, IBinaryObject>(CacheName)) {
foreach (var binaryRow in rows.Select(r => BuildRow(r))) {
var key = binaryRow.GetField<string>(PrimaryKeyName);
ds.AddData(key, binaryRow);
}
}
性能測試結果:(5個節點都具有相同的規格)
BenchmarkDotNet=v0.10.8, OS=Windows 8.1 (6.3.9600)
Processor=Intel Xeon CPU E5-2698 v4 2.20GHz Intel Xeon CPU E5-2698 v4 2.20GHz, ProcessorCount=4
Frequency=14318180 Hz, Resolution=69.8413 ns, Timer=HPET
[Host] : Clr 4.0.30319.42000, 64bit RyuJIT-v4.7.2053.0
Job-UZDKMF : Clr 4.0.30319.42000, 64bit RyuJIT-v4.7.2053.0
RunStrategy=Monitoring TargetCount=1
NumRows Mean (ms) Per Row (ms/row)
10 359.50* 35.95*
100 465.50* 4.66*
1,000 797.80* 0.80*
10,000 4,479.80 0.45
100,000 37,611.60 0.38
500,000 184,640.00 0.37
1,000,000 366,801.40 0.37
2,000,000 732,562.40 0.37
4,000,000 1,458,913.60 0.36
*Measurement is larger because it also measures some lightweight work before inserting the rows
任何提示,提示或文檔離子是讚賞。謝謝!
感謝@ptupitsyn。通過做1,2和3,它減少了14.6%的加載時間。上面我的性能指標中最多的時間是由於某些序列化將原始數據轉換爲列,我將嘗試在StreamReceiver中進行處理,而不是在前期處理。 – Charlie