Сжатие Rocksdb не сработало или не происходит - PullRequest
1 голос
/ 31 мая 2019

У меня реализовано 2 хранилища потоков kafka. Они оба являются постоянными хранилищами значений ключей. Проблема, с которой я сталкиваюсь, заключается в том, что сжатие rockdb происходит только в одном из хранилищ состояний, а другое хранилище состояний просто копирует больше файлов sst и, в свою очередь, увеличивает дисковое пространство . Я попытался отладить логи rocksdb. Там все выглядело хорошо. Компакты происходили нормально для одного из государственных магазинов, и не было никакой информации, связанной с другим магазином. Может кто-нибудь, пожалуйста, помогите по этому аспекту?

Чтобы добавить больше полезной информации, это происходит только внутри контейнера. Я попытался повторить это с примером приложения в локальной среде разработчика, там не было никаких проблем .

Редактировать:

Я смог напечатать журналы rocksdb на уровне магазина KV и обнаружил некоторые интересные аспекты. Сжатие происходило, но файлы не удалялись. Вот журналы. Я обнаружил, что уровни продолжают расти. Кто-нибудь может объяснить, почему уровни повышаются?

example_store: INFO_LEVEL: (Время оригинального журнала 2019/06 / 17-11: 16: 17.182015) [db / db_impl_compaction_flush.cc: 140] [по умолчанию] Сводка уровня: файлы [9 0 0 0 0 0 1 ] максимальная оценка 1,00 example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 16: 17.183102) [db / compaction_picker_universal.cc: 473] [по умолчанию] Универсальный: файл возможных кандидатов 58 [0]. example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 16: 17.183113) [db / compaction_picker_universal.cc: 525] [по умолчанию] Universal: пропуск файла 58 [0] с размером 4244 (компенсированный размер 4244) example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 16: 17.183116) [db / compaction_picker_universal.cc: 473] [по умолчанию] Универсальный: файл возможных кандидатов 57 [1]. example_store: INFO_LEVEL: (Время оригинального журнала 2019/06 / 17-11: 16: 17.183298) [db / compaction_picker_universal.cc: 594] [по умолчанию] Universal: файл комплектации 57 [1] с размером 6522 (компенсированный размер 6522) example_store: INFO_LEVEL: (Время оригинального журнала 2019/06 / 17-11: 16: 17.183301) [db / compaction_picker_universal.cc: 594] [по умолчанию] Universal: файл комплектации 56 [2] с размером 4245 (компенсированный размер 4245) example_store: INFO_LEVEL: (Время оригинального журнала 2019/06 / 17-11: 16: 17.183302) [db / compaction_picker_universal.cc: 594] [по умолчанию] Universal: файл комплектации 55 [3] с размером 6506 (компенсированный размер 6506) example_store: INFO_LEVEL: (Время оригинального журнала 2019/06 / 17-11: 16: 17.183303) [db / compaction_picker_universal.cc: 594] [по умолчанию] Universal: файл комплектации 54 [4] с размером 4244 (компенсированный размер 4244) example_store: INFO_LEVEL: (Время оригинального журнала 2019/06 / 17-11: 16: 17.183305) [db / compaction_picker_universal.cc: 594] [по умолчанию] Universal: файл комплектации 53 [5] с размером 6505 (компенсированный размер 6505) example_store: INFO_LEVEL: (Время оригинального журнала 2019/06 / 17-11: 16: 17.183306) [db / compaction_picker_universal.cc: 594] [по умолчанию] Universal: файл комплектации 52 [6] с размером 4244 (компенсированный размер 4244) example_store: INFO_LEVEL: (Время оригинального журнала 2019/06 / 17-11: 16: 17.183307) [db / compaction_picker_universal.cc: 594] [по умолчанию] Universal: файл комплектации 51 [7] с размером 6503 (компенсированный размер 6503) example_store: INFO_LEVEL: (Время оригинального журнала 2019/06 / 17-11: 16: 17.183309) [db / compaction_picker_universal.cc: 594] [по умолчанию] Universal: файл комплектации 50 [8] с размером 4245 (компенсированный размер 4245) example_store: INFO_LEVEL: (Время оригинального журнала 2019/06 / 17-11: 16: 17.183429) [db / compaction_picker_universal.cc: 289] [по умолчанию] Universal: сжатие для соотношения размеров example_store: INFO_LEVEL: [db / compaction_job.cc: 1437] [по умолчанию] [JOB 51] Сжатие файлов 8 @ 0 до L5, оценка 1,00 example_store: INFO_LEVEL: [db / compaction_job.cc: 1441] [по умолчанию] Сводка начала уплотнения: базовая версия 46 Базовый уровень 0, входные данные: [57 (6522B) 56 (4245B) 55 (6506B) 54 (4244B) 53 (6505B) 52 (4244B) 51 (6503B) 50 (4245B)], [], [], [], [], [], []example_store: INFO_LEVEL: EVENT_LOG_v1 {"time_micros": 1560770177193012, "job": 51, "event": "compaction_started", "files_L0": [57, 56, 55, 54, 53, 52, 51, 50], "files_L1" ": []," files_L2 ": []," files_L3 ": []," files_L4 ": []," files_L5 ": []," files_L6 ": []," Score ": 1," input_data_size ": 43014} example_store: INFO_LEVEL: [db / compaction_job.cc: 1132] [по умолчанию] [JOB 51] Сгенерированная таблица № 59: 32 ключа, 9878 байт example_store: INFO_LEVEL: EVENT_LOG_v1 {"time_micros": 1560770177315362, "cf_name": "default", "job": 51, "event": "table_file_creation", "file_nize": 59, "file_size": 9878, "table_proties" {"data_size": 8826, "index_size": 296, "filter_size": 0, "raw_key_size": 910, "raw_average_key_size": 28, "raw_value_size": 29633, "raw_average_value_size": 926, "num_data_bcks" num_entries ": 32," filter_policy_name ":" "," kDeletedKeys ":" 0 "," kMergeOperands ":" 0 "}} example_store: INFO_LEVEL: [db / compaction_job.cc: 1199] [по умолчанию] [JOB 51] Сжатые файлы 8 @ 0 до L5 => 9878 байт example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 16: 17.357595) [db / compaction_job.cc: 621] [по умолчанию] сжато в: файлы [1 0 0 0 0 1 1] макс. оценка 0,30, МБ / сек: 0.3 rd, 0.1 wr, уровень 5, файлы в (8, 0) из (1) МБ в (0.0, 0.0) из (0.0), чтение-запись-усиление (1.2) запись-усиление (0.2) OK , записей в: 128, записей: 96 example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 16: 17.357647) EVENT_LOG_v1 {"time_micros": 1560770177357627, "job": 51, "event": "compaction_finished", "compaction_time_micros": 142703, "output_le" ": 5," num_output_files ": 1," total_output_size ": 9878," num_input_records ": 128," num_output_records ": 32," num_subcompactions ": 1," num_single_delete_mismatches ": 0," num_srough_sta_s_de_de_de_de_delete " [1, 0, 0, 0, 0, 1, 1]} example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 16: 17.358280) [db / compaction_picker_universal.cc: 261] [по умолчанию] Универсальный: ничего не делать example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 16: 17.358281) [db / db_impl_compaction_flush.cc: 1518] Уплотнение не нужно делать example_store: INFO_LEVEL: [db / db_impl_write.cc: 1127] [по умолчанию] Новая таблица памяти, созданная с файлом журнала: # 12. Неизменные памятные записки: 0. example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 17: 47.147896) [db / db_impl_compaction_flush.cc: 1216] Вызов FlushMemTableToOutputFile с семейством столбцов [по умолчанию], доступны очищенные слоты 1, доступны слоты сжатия 1, слоты сжатия 1 запланировано 1, слоты уплотнения запланировано 0 example_store: INFO_LEVEL: [db / flush_job.cc: 264] [по умолчанию] [JOB 53] Очистка памяти с помощью следующего файла журнала: 12 example_store: INFO_LEVEL: EVENT_LOG_v1 {"time_micros": 1560770267148077, "job": 53, "event": "flush_started", "num_memtables": 1, "num_entries": 16, "num_deletes": 0, "memory4 }age": 0 example_store: INFO_LEVEL: [db / flush_job.cc: 293] [по умолчанию] [JOB 53] Флеш-таблица уровня 0 # 60: запущено example_store: INFO_LEVEL: EVENT_LOG_v1 {"time_micros": 1560770267150374, "cf_name": "default", "job": 53, "event": "table_file_creation", "file_number": 60, "file_size": 6502, "table_perties" {"data_size": 5514, "index_size": 186, "filter_size": 0, "raw_key_size": 455, "raw_average_key_size": 28, "raw_value_size": 17717, "raw_average_value_size": 1107, "num_data_bcks" num_entries ": 16," filter_policy_name ":" "," kDeletedKeys ":" 0 "," kMergeOperands ":" 0 "}} example_store: INFO_LEVEL: [db / flush_job.cc: 324] [по умолчанию] [JOB 53] Таблица очистки уровня 0 # 60: 6502 байта ОК example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 17: 47.152018) [db / memtable_list.cc: 372] [по умолчанию] Запущена таблица фиксации уровня 0 # 60 example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 17: 47.153419) [db / memtable_list.cc: 395] [по умолчанию] Таблица фиксации уровня 0: 60: мембита №1 завершена example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 17: 47.153437) EVENT_LOG_v1 {"time_micros": 1560770267153430, "job": 53, "event": "flush_finished", "lsm_state": [2, 0 , 0, 0, 0, 1, 1], "immutable_memtables": 0}example_store: INFO_LEVEL: (Время оригинального журнала 2019/06 / 17-11: 17: 47.153456) [db / db_impl_compaction_flush.cc: 140] [по умолчанию] Сводка уровня: файлы [2 0 0 0 0 1 1] макс. оценка 0,40 example_store: INFO_LEVEL: [db / db_impl_write.cc: 1127] [по умолчанию] Новая таблица памяти, созданная с файлом журнала: # 12. Неизменные памятные записки: 0. example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 18: 17.170673) [db / db_impl_compaction_flush.cc: 1216] Вызов FlushMemTableToOutputFile с семейством столбцов [по умолчанию], доступны очищенные слоты 1, доступны слоты сжатия 1, слоты сжатия 1 запланировано 1, слоты уплотнения запланировано 0 example_store: INFO_LEVEL: [db / flush_job.cc: 264] [по умолчанию] [JOB 54] Очистка памяти с помощью следующего файла журнала: 12 example_store: INFO_LEVEL: EVENT_LOG_v1 {"time_micros": 1560770297170853, "job": 54, "event": "flush_started", "num_memtables": 1, "num_entries": 16, "num_deletes": 0, "memory_usage": 0, "memory2usage": 0, "memory2usage": 0 example_store: INFO_LEVEL: [db / flush_job.cc: 293] [по умолчанию] [JOB 54] Флеш-таблица уровня 0 # 61: запущено example_store: INFO_LEVEL: EVENT_LOG_v1 {"time_micros": 1560770297174979, "cf_name": "default", "job": 54, "event": "table_file_creation", "file_nize": 61, "file_size": 4244, "table_proties": {"data_size": 3293, "index_size": 107, "filter_size": 0, "raw_key_size": 455, "raw_average_key_size": 28, "raw_value_size": 11916, "raw_average_value_size": 744, "num_data_blocks": 344 num_entries ": 16," filter_policy_name ":" "," kDeletedKeys ":" 0 "," kMergeOperands ":" 0 "}} example_store: INFO_LEVEL: [db / flush_job.cc: 324] [по умолчанию] [JOB 54] Таблица очистки уровня 0 # 61: 4244 байта ОК example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 18: 17.177091) [db / memtable_list.cc: 372] [по умолчанию] Таблица фиксации уровня 0 # 61 запущена example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 18: 17.178570) [db / memtable_list.cc: 395] [по умолчанию] Таблица фиксации уровня 0 # 61: мембита №1 завершена example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 18: 17.178590) EVENT_LOG_v1 {"time_micros": 1560770297178582, "job": 54, "event": "flush_finished", "lsm_state": [3, 0 , 0, 0, 0, 1, 1], "immutable_memtables": 0} example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 18: 17.178614) [db / db_impl_compaction_flush.cc: 140] [по умолчанию] Сводка уровня: файлы [3 0 0 0 0 1 1] макс. счет 0,50 example_store: INFO_LEVEL: [db / db_impl_write.cc: 1127] [по умолчанию] Новая таблица памяти, созданная с файлом журнала: # 12. Неизменные памятные записки: 0. example_store: INFO_LEVEL: (Исходное время записи 2019/06 / 17-11: 20: 17.360151) [db / db_impl_compaction_flush.cc: 1216] Вызов FlushMemTableToOutputFile с семейством столбцов [по умолчанию], доступны очищенные слоты 1, доступны слоты сжатия 1, слоты сжатия 1 запланировано 1, слоты уплотнения запланировано 0 example_store: INFO_LEVEL: [db / flush_job.cc: 264] [по умолчанию] [JOB 55] Очистка памяти с помощью следующего файла журнала: 12 example_store: INFO_LEVEL: EVENT_LOG_v1 {"time_micros": 1560770417360328, "job": 55, "event": "flush_started", "num_memtables": 1, "num_entries": 32, "num_deletes": 0, "memory_4_4") example_store: INFO_LEVEL: [db / flush_job.cc: 293] [по умолчанию] [JOB 55] Флеш-таблица уровня 0 # 62: запущено example_store: INFO_LEVEL: EVENT_LOG_v1 {"time_micros": 1560770417365009, "cf_name": "default", "job": 55, "event": "table_file_creation", "file_nize": 62, "file_size": 9865, "table_proties": {"data_size": 8813, "index_size": 296, "filter_size": 0, "raw_key_size": 910, "raw_average_key_size": 28, "raw_value_size": 29633, "raw_average_value_size": 926, "num_data_bcks" num_entries ": 32," filter_policy_name ":" "," kDeletedKeys ":" 0 "," kMergeOperands ":" 0 "}} example_store: INFO_LEVEL: [db / flush_job.cc: 324] [по умолчанию] [JOB 55] Таблица очистки уровня 0 # 62: 9865 байт ОК example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 20: 17.371008) [db / memtable_list.cc: 372] [по умолчанию] Таблица фиксации уровня 0 № 62 запущена example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 20: 17.373221) [db / memtable_list.cc: 395] [по умолчанию] Таблица фиксации уровня 0 # 62: мембита №1 завершенаexample_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 20: 17.373274) EVENT_LOG_v1 {"time_micros": 1560770417373259, "job": 55, "event": "flush_finished", "lsm_state": [4, 0 , 0, 0, 0, 1, 1], "immutable_memtables": 0} example_store: INFO_LEVEL: (Время оригинального журнала 2019/06 / 17-11: 20: 17.373318) [db / db_impl_compaction_flush.cc: 140] [по умолчанию] Сводка уровня: files [4 0 0 0 0 1 1] max Score 0.60 example_store: INFO_LEVEL: [db / db_impl_write.cc: 1127] [по умолчанию] Новая таблица памяти, созданная с файлом журнала: # 12. Неизменные памятные записки: 0. example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 22: 17.625738) [db / db_impl_compaction_flush.cc: 1216] Вызов FlushMemTableToOutputFile с семейством столбцов [по умолчанию], доступны очищенные слоты 1, доступны слоты сжатия 1, слоты сжатия 1 запланировано 1, слоты уплотнения запланировано 0 example_store: INFO_LEVEL: [db / flush_job.cc: 264] [по умолчанию] [JOB 56] Очистка памяти с помощью следующего файла журнала: 12 example_store: INFO_LEVEL: EVENT_LOG_v1 {"time_micros": 1560770537625921, "job": 56, "event": "flush_started", "num_memtables": 1, "num_entries": 32, "num_deletes": 0, "memory360") example_store: INFO_LEVEL: [db / flush_job.cc: 293] [по умолчанию] [JOB 56] Флеш-таблица уровня 0 # 63: запущено example_store: INFO_LEVEL: EVENT_LOG_v1 {"time_micros": 1560770537647724, "cf_name": "default", "job": 56, "event": "table_file_creation", "file_nize": 63, "file_size": 9858, "table_proties": {"data_size": 8807, "index_size": 296, "filter_size": 0, "raw_key_size": 910, "raw_average_key_size": 28, "raw_value_size": 29633, "raw_average_value_size": 926, "num_data_blo" num_entries ": 32," filter_policy_name ":" "," kDeletedKeys ":" 0 "," kMergeOperands ":" 0 "}} example_store: INFO_LEVEL: [db / flush_job.cc: 324] [по умолчанию] [JOB 56] Таблица очистки уровня 0 # 63: 9858 байт OK example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 22: 17.666254) [db / memtable_list.cc: 372] [по умолчанию] Запущена таблица фиксации уровня 0 # 63 example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 22: 17.685689) [db / memtable_list.cc: 395] [по умолчанию] Таблица фиксации уровня 0: 63: мембита №1 завершена example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 22: 17.685728) EVENT_LOG_v1 {"time_micros": 1560770537685714, "job": 56, "event": "flush_finished", "lsm_state": [5, 0 , 0, 0, 0, 1, 1], "immutable_memtables": 0} example_store: INFO_LEVEL: (Время оригинального журнала 2019/06 / 17-11: 22: 17.685761) [db / db_impl_compaction_flush.cc: 140] [по умолчанию] Сводка уровня: файлы [5 0 0 0 0 1 1] макс. счет 0,70 example_store: INFO_LEVEL: [db / db_impl_write.cc: 1127] [по умолчанию] Новая таблица памяти, созданная с файлом журнала: # 12. Неизменные памятные записки: 0. example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 24: 18.003063) [db / db_impl_compaction_flush.cc: 1216] Вызов FlushMemTableToOutputFile с семейством столбцов [по умолчанию], доступны очищенные слоты 1, доступны слоты сжатия 1, слоты очистки запланировано 1, слоты уплотнения запланировано 0 example_store: INFO_LEVEL: [db / flush_job.cc: 264] [по умолчанию] [JOB 57] Очистка памяти с помощью следующего файла журнала: 12 example_store: INFO_LEVEL: EVENT_LOG_v1 {"time_micros": 1560770658007107, "job": 57, "event": "flush_started", "num_memtables": 1, "num_entries": 32, "num_deletes": 0, "memory_2_2") example_store: INFO_LEVEL: [db / flush_job.cc: 293] [по умолчанию] [JOB 57] Таблица очистки уровня 0 # 64: запущена example_store: INFO_LEVEL: EVENT_LOG_v1 {"time_micros": 1560770658069543, "cf_name": "default", "job": 57, "event": "table_file_creation", "file_nize": 64, "file_size": 9863, "table_proties" {"data_size": 8811, "index_size": 296, "filter_size": 0, "raw_key_size": 910, "raw_average_key_size": 28, "raw_value_size": 29633, "raw_average_value_size": 926, "num_data_bcks" num_entries ": 32," filter_policy_name ":" "," kDeletedKeys ":" 0 "," kMergeOperands ":" 0 "}} example_store: INFO_LEVEL: [db / flush_job.cc: 324] [по умолчанию] [JOB 57] Таблица очистки уровня 0 # 64: 9863 байта OKexample_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 24: 18.099968) [db / memtable_list.cc: 372] [по умолчанию] Таблица фиксации уровня 0 № 64 запущена example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 24: 18.136935) [db / memtable_list.cc: 395] [по умолчанию] Таблица фиксации уровня 0 # 64: мембита №1 завершена example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 24: 18.136965) EVENT_LOG_v1 {"time_micros": 1560770658136956, "job": 57, "event": "flush_finished", "lsm_state": [6, 0 , 0, 0, 0, 1, 1], "immutable_memtables": 0} example_store: INFO_LEVEL: (Время оригинального журнала 2019/06 / 17-11: 24: 18.136988) [db / db_impl_compaction_flush.cc: 140] [по умолчанию] Сводка уровня: файлы [6 0 0 0 0 1 1] макс. счет 0,80 example_store: INFO_LEVEL: [db / db_impl_write.cc: 1127] [по умолчанию] Новая таблица памяти, созданная с файлом журнала: # 12. Неизменные памятные записки: 0. example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 26: 18.014309) [db / db_impl_compaction_flush.cc: 1216] Вызов FlushMemTableToOutputFile с семейством столбцов [по умолчанию], доступны очищенные слоты 1, доступны слоты сжатия 1, слоты сжатия 1 запланировано 1, слоты уплотнения запланировано 0 example_store: INFO_LEVEL: [db / flush_job.cc: 264] [по умолчанию] [JOB 58] Очистка памяти с помощью следующего файла журнала: 12 example_store: INFO_LEVEL: EVENT_LOG_v1 {"time_micros": 1560770778014601, "job": 58, "event": "flush_started", "num_memtables": 1, «num_entries»: 32, «num_deletes»: 0, «memory3usage»: 0, «memory3usage»: 0 example_store: INFO_LEVEL: [db / flush_job.cc: 293] [по умолчанию] [JOB 58] Флеш-таблица уровня 0 # 65: запущена example_store: INFO_LEVEL: EVENT_LOG_v1 {"time_micros": 1560770778036112, "cf_name": "default", "job": 58, "event": "table_file_creation", "file_nize": 65, "file_size": 9858, "table_proties": {"data_size": 8807, "index_size": 296, "filter_size": 0, "raw_key_size": 910, "raw_average_key_size": 28, "raw_value_size": 29633, "raw_average_value_size": 926, "num_data_blo" num_entries ": 32," filter_policy_name ":" "," kDeletedKeys ":" 0 "," kMergeOperands ":" 0 "}} example_store: INFO_LEVEL: [db / flush_job.cc: 324] [по умолчанию] [JOB 58] Таблица очистки уровня 0 # 65: 9858 байт, ОК example_store: INFO_LEVEL: (Время оригинального журнала 2019/06 / 17-11: 26: 18.063192) [db / memtable_list.cc: 372] [по умолчанию] Запущена таблица фиксации уровня 0 # 65 example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 26: 18.082165) [db / memtable_list.cc: 395] [по умолчанию] Таблица фиксации уровня 0 # 65: мембита №1 завершена example_store: INFO_LEVEL: (Исходное время журнала 2019/06 / 17-11: 26: 18.082203) EVENT_LOG_v1 {"time_micros": 1560770778082193, "job": 58, "event": "flush_finished", "lsm_state": [ 7, 0, 0, 0, 0, 1, 1] , "immutable_memtables": 0} example_store: INFO_LEVEL: (Время оригинального журнала 2019/06 / 17-11: 26: 18.082231) [db / db_impl_compaction_flush.cc: 140] [по умолчанию] Сводка уровня: файлы [7 0 0 0 0 1 1] макс. счет 0,90

...