1. key随机插入导致rocksdb有较大的写放大。 6MB的网络吞吐量,50+MB的磁盘写入。(原因待查)
改为顺序插入,6MB的网络吞吐量,10-20+的磁盘写入。
2. 初始化传参很重要,文件数、cache及队列大小等。(细节待总结)
3. 多线程写入效率待查。
4.大数量条目的DB,启动时自检时间较长。第一次重启时,10,000,000需要10s,,50,000,000需要2min,100,000,000需要1小时。
=====================================================
1、初始化参数: class Options(负责数据存储的组织), class Env/PosixEnv(负责文件操作的调度)。db_bench的参考意义很大。
level0_file_num_compaction_trigger 4
level0_slowdown_writes_trigger 16(-1)
level0_stop_writes_trigger 64
target_file_size_base 64M
target_file_size_multiplier 1
max_bytes_for_level_base 512M
max_bytes_for_level_multiplier 10
disableDataSync load数据时候用
max_background_compactions 20
max_write_buffer_number 3
rate_limit_delay_max_milliseconds 1000
arena_block_size write_buffer_size / 10
write_buffer_size 128M
open_files 500000
block_cache_size 16G 初始化时指定的
delete_obsolete_files_period_micros 300s
*******************************
statistics
stats_interval
stats_per_interval
***********************************
min_level_to_compress
merge_operator
mmap_read
mmap_write
sync (maybe write option)
table_cache_numshardbits
use_fsync
use_multiget
max_background_flushes
//write-ahead logs (WAL)
wal_size_limit_MB
wal_ttl_seconds
disable_seek_compaction //TODO
disable_wal
block_cache
block_cache_compressed
compression_level
compression_ratio
CompactionOptionsUniversal=======
universal_compression_size_percent
universal_max_merge_width
universal_max_size_amplification_percent
universal_min_merge_width
universal_size_ratio
table_cache_numshardbits 4
min_write_buffer_number_to_merge (1 default????)
use_adaptive_mutex (false default。节省系统和用户切换)
max_bytes_for_level_multiplier_additional 1(向量)
hard_rate_limit 0.0
soft_rate_limit 0.0
********************************************
db_bench*********************************
histogram
memtablerep
statistics
threads
num
numdistinct
read_range
readonly
reads
readwritepercent
use_existing_db
value_size
warn_missing_keys
writes
writes_per_second
2、get对压缩线程的运行很敏感,性能抖动很大。但是压缩线程是必须的,负责维持level的平衡。
3、读写性能的平衡难于把握。目前的配置下read:update: 50:50, 25000ops, 95:5, 30000ops
Dell T5600
CPU: Intel(R) Xeon(R) CPU E5-2650 @ 2.00GHz/8 cores
RAM: 64GB
OS: CentOS 6.4
write_threads: 1
read_threads: 8
# in GB
cache_size: 48
# in KB
block_size: 32
# in MB
write_buffer_size: 128
# yes|no
compression: yes
# default 200
max_open_files: 5000
# in MB
target_file_size_base: 64
# in MB
max_bytes_for_level_base: 512
# yes|no
disableDataSync: no
#Speed strategy
level0_file_num_compaction_trigger: 4
level0_slowdown_writes_trigger: 16
level0_stop_writes_trigger: 64
#just for bulk loading data: yes|no
disableDataSync: no
max_background_compactions: 8
max_write_buffer_number: 8
rate_limit_delay_max_milliseconds: 1000
# in KB, write_buffer_size / 10
arena_block_size: 12800
# in second
delete_obsolete_files_period_micros: 300