Кажется, что сжатие mongoDB не работает должным образом - PullRequest
1 голос
/ 18 мая 2019

Nginx + php-fpm + mongoDB (+ mongodb php-lib)

пытается сравнить степень сжатия mongoDB но результаты не такие, как ожидалось. Вот мои эксперименты.

/etc/mongod.conf  

# mongod.conf  //default setting

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1

# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

#security:
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options:
#auditLog:
#snmp:

Настройка сжатия при создании коллекции в оболочке mongoDB

mongoDB shell> db.createCollection ("test", {storageEngine: {wiredTiger: {configString: 'block_compressor = none, prefix_compression = false'}}})

Всего вариантов сжатия установлено на 6

block_compressor = нет или snappy или zlib // prefix_compression = false или true

При проверке с помощью db.printCollectionStats () параметры были применены правильно.

размер данных вставки составляет 100 КБ * 100000 = около 9 ГБ.

но результат db.test.storageSize ().

block_compression none = 10653536256 (байт)

block_compression snappy = 10653405184 (байт)

block_compression zlib = 6690177024 (байт)

zlib сжат примерно на 40% по сравнению с отсутствием. но ни один и мгновенный не отличаются.

(prefix_compress также не изменяется.)

Какие настройки я должен добавить?

+ UPDATE

мгновенным + ложь

"compression" : {
            "compressed pages read" : 0,
            "compressed pages written" : 0,
            "page written failed to compress" : 100007,
            "page written was too small to compress" : 1025
       }

Zlib + ложь

"compression" : {
            "compressed pages read" : 0,
            "compressed pages written" : 98881,
            "page written failed to compress" : 0,
            "page written was too small to compress" : 924
       }

что означает "записанная страница не сжимается"? Какое решение?

+ Update2

используемая версия сервера mongoDB: 4.0.9

insert data document

$result = $collection->insertOne( ['num'=> (int)$i , 
                                    'title' => "$i", 
                                    'main' => "$i", 
                                    'img' => "$t",
                                    'user'=>"$users", 
                                    'like'=> 0,
                                    'time'=> "$date" ] );

---Variable Description---
$i = 1 ~ 100,000 (Increment by 1)
$t = 100KB(102400byt) random string 
$users =  (Random 10 characters in 12134567890abcdefghij)
$data =  Real-time server date (ex = 2019:05:18 xx.xx.xx)

index 
db.test.createIndex( { "num":1 } )
db.test.createIndex( { "title":1 } )
db.test.createIndex( { "user":1 } )
db.test.createIndex( { "like":1 } )
db.test.createIndex( { "time":1 } )     

Сбор статистики слишком длинный, поэтому я поставлю только две.

мгновенным + ложь

"creationString": "access_pattern_hint = none, alloc_size = 4 КБ, app_metadata = (formatVersion = 1), assert = (commit_timestamp = none, read_timestamp = none), block_allocation = best, block_compressor = snappy , cache_resident = ложь, контрольная сумма = на, colgroups =, подборщик =, столбцы =, словарь = 0, шифрование = (KeyID =, имя =), эксклюзив = ложь, экстрактор = формат = ВТКЕЙ, huffman_key =, huffman_value =, ignore_in_memory_cache_size = ложь, неизменное = ложь, internal_item_max = 0, internal_key_max = 0, internal_key_truncate = верно, internal_page_max = 4KB, key_format = д, key_gap = 10, leaf_item_max = 0, leaf_key_max = 0, leaf_page_max = 32KB, leaf_value_max = 64, бревенчатый = (включен = истина), LSM = (auto_throttle = истина, цветение = верно, bloom_bit_count = 16, bloom_config =, bloom_hash_count = 8, bloom_oldest = ложь, chunk_count_limit = 0, chunk_max = 5ГБ, chunk_size = 10MB, merge_custom = (префикс =, start_generation = 0, суффикс =), merge_max = 15, merge_min = 0), memory_page_image_max = 0, memory_page_max = 10m, os_cache_dirty_max = 0, os_cache_max = 0, prefix_compression = ложь , prefix_compression_ мин = 4, источник =, split_deepen_min_child = 0, split_deepen_per_child = 0, split_pct = 90, тип = файл, value_format = и»,

мгновенным + правда

"creationString": "access_pattern_hint = none, alloc_size = 4 КБ, app_metadata = (formatVersion = 1), assert = (commit_timestamp = none, read_timestamp = none), block_allocation = best, block_compressor = snappy , cache_resident = ложь, контрольная сумма = на, colgroups =, подборщик =, столбцы =, словарь = 0, шифрование = (KeyID =, имя =), эксклюзив = ложь, экстрактор = формат = ВТКЕЙ, huffman_key =, huffman_value =, ignore_in_memory_cache_size = ложь, неизменное = ложь, internal_item_max = 0, internal_key_max = 0, internal_key_truncate = верно, internal_page_max = 4KB, key_format = д, key_gap = 10, leaf_item_max = 0, leaf_key_max = 0, leaf_page_max = 32KB, leaf_value_max = 64, бревенчатый = (включен = истина), LSM = (auto_throttle = истина, цветение = верно, bloom_bit_count = 16, bloom_config =, bloom_hash_count = 8, bloom_oldest = ложь, chunk_count_limit = 0, chunk_max = 5ГБ, chunk_size = 10MB, merge_custom = (префикс =, start_generation = 0, суффикс =), merge_max = 15, merge_min = 0), memory_page_image_max = 0, memory_page_max = 10m, os_cache_dirty_max = 0, os_cache_max = 0, * 1 066 * prefix_compression = истина , prefix_compression_m в = 4, источник =, split_deepen_min_child = 0, split_deepen_per_child = 0, split_pct = 90, тип = файл, value_format = и»,

Спасибо за ваш интерес.

...