215 похожих чатов

Всем привет! Используем тарантул для периодического сохранения состояния(state) некоторой сущности. Состояния

хранятся в виде массива, условно:
box.space.example:format({
{ name = 'id', type = 'integer' },
{ name = 'name', type = 'string'},
{ name = 'last_updated', type = 'integer' },
{ name = 'states', type = 'array' },
})
Есть функция, которая, собственно, добавляет текущее состояние в массив states.
function add_state(space_name,id,name,state)
local tuple = box.space[space_name]:select(id)
if #tuple == 0 then
box.space[space_name]:insert({id,name,os.time(),{state}})
else
local states = tuple[1][4]
states[#states+1]=state
if #states == limits[space_name]+1 then
table.remove(states,1)
end
box.space[space_name]:update( id,{{'=', 2, name},{'=', 3, os.time()}, {'=', 4, states}})
end
end
Делалось все так, чтобы формировать быстрый ответ, который строится на основании анализа массива states в момент запроса.
На данный момент на одном инстансе получается примерно ~2-3к/сек вызовов данной add_state

Посоветуйте пжлст, в какую сторону можно оптимизировать?
Может быть изменить подход в целом?

1 ответов

17 просмотров

Или у них state очень большой. Если так, то сериализация/десериализация state и запись в xlog становятся проблемой. Может быть лучше будет вставлять state по одному, или группировать в небольшие пачки (8-16). В общем, сделать отдельный тапл поменьше

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
Гляньте, че бывает: Сегодня по одному проекту одной вебстудии делал проект небольшой, на их хостинге. На Modx revo. В определенный момент , работая в админке, вдруг перестал р...
Artem
7
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
12
> Копаем глубже > Следующий момент был, когда я спросил его, знает ли он JavaScript. Он ответил, что его учили работать с C#. Я тоже в университете писал на C#, но даже там мн...
Oleg Volkov
4
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
Кто нибудь либу Zstandart использовал ? Это либа для сжатия от Цукерберга
Andrey Electron
9
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Карта сайта