Здравствуйте!
Tarantool 1.10.5-27.
Использую движок memtx, без репликации. Объем данных в памяти 45Гб, сейчас там 155М кортежей.
Конфиг:
box.cfg {
listen = '*:3305',
io_collect_interval = nil,
readahead = 50 * 1024 * 1024,
worker_pool_threads = 20,
memtx_memory = 50 * 1024 * 1024 * 1024,
memtx_min_tuple_size = 16,
memtx_max_tuple_size = 128 * 1024 * 1024,
snap_io_rate_limit = 100,
net_msg_max = 2000,
wal_mode = 'write',
wal_max_size = 512 * 1024 * 1024,
rows_per_wal = 1500000,
checkpoint_interval = 6 * 60 * 60,
checkpoint_count = 2,
force_recovery = true,
log_level = 5,
log_nonblock = true,
too_long_threshold = 1,
feedback_enabled = false,
}
Спейс:
u_p = box.schema.space.create('user')
u_p:create_index('primary', {type = 'hash', parts = {1, 'string'}})
u_p:create_index('secondary', {type = 'tree', unique = false, parts = {2, 'unsigned'}})
индекс 'secondary' это время создания записи, третье поле это данные - структура хеш.
Работаю с tarantool на perl коннектор модуль DR::Tnt. Количество подключений 200 из которых 150 только читают данные (по 3-5 кортежей в сек.), остальные потоки читают и пишут (суммарно ~500 чтений и ~500 записей в секунду).
Средняя нагрузка на проц. ~20%.
Провел тесты на скорость выборки данных в один поток при текущей нагрузке по Tarantool и Memcached скорость выборки в секунду:
Tarantool - 750
Memcached - 6500
Подскажите пожалуйста почему такая большая разница в скорости извлечения данных, и как можно увеличить скорость получения данных из tarantool?
Возможно конфигурация инстанса, или драйвер медленный...